/home/uke/oil/bin/osh sh-options: spec test case results

Results for sh-options.test.sh

statusosh
pass 38
ok 2
N-I 2
FAIL 3
total45
caseoshdescription
0pass $- with -c
1pass $- with pipefail
2pass $- and more options
3pass $- with interactive shell
4pass pass short options like sh -e
5pass pass long options like sh -o errexit
6pass pass shopt options like sh -O nullglob
7pass can continue after unknown option
8pass set with both options and argv
9pass set -o vi/emacs
10pass vi and emacs are mutually exclusive
11pass interactive shell starts with emacs mode on
12pass nounset
13pass -u is nounset
14pass nounset with "$@"
15pass set -u -- clears argv
16pass set -u -- x y z
17pass reset option with long flag
18pass reset option with short flag
19pass set -eu (flag parsing)
20FAIL -n for no execution (useful with --ast-output)
details
21pass pipefail
22pass shopt -p -o prints 'set' options
23pass shopt -p prints 'shopt' options
24pass shopt with no flags prints options
25pass noclobber off
26FAIL noclobber on
details
27pass SHELLOPTS is updated when options are changed
28ok SHELLOPTS is readonly
details
29FAIL SHELLOPTS and BASHOPTS are set
details
30ok set - -
details
31pass set -o lists options
32pass set without args lists variables
33pass 'set' and 'eval' round trip
34N-I set without args and array variables (not in OSH)
details
35N-I set without args and assoc array variables (not in OSH)
details
36pass shopt -q
37pass shopt -q invalid
38pass shopt -s strict:all
39pass shopt allows for backward compatibility like bash
40pass shopt -p validates option names
41pass shopt -p -o validates option names
42pass stubbed out bash options
43pass shopt -s nounset works in Oil, not in bash
44pass no-ops not in shopt -p output
38 passed, 2 OK, 2 not implemented, 0 BUG, 3 failed, 0 timeouts, 0 cases skipped
3 failed under osh

Details on runs that didn't PASS

osh0 $- with -c

stdout:
u
stderr:
osh1 $- with pipefail

stdout:
u
stderr:
osh2 $- and more options

stdout:
yes
yes
yes
yes
stderr:
osh3 $- with interactive shell

stdout:
FALSE
TRUE
stderr:
osh4 pass short options like sh -e

stdout:
stderr: 
osh5 pass long options like sh -o errexit

stdout:
stderr: 
osh6 pass shopt options like sh -O nullglob

stdout:
foo *.nonexistent bar
foo bar
stderr:
osh7 can continue after unknown option

stdout:
hello
stderr:
  set -o STRICT || true # unknown option
  ^~~
[ stdin ]:2: 'set' got invalid option 'STRICT'
osh8 set with both options and argv

stdout:
a b c
stderr:
osh9 set -o vi/emacs

stdout:
0
0
stderr:
osh10 vi and emacs are mutually exclusive

stdout:
set +o emacs
set +o vi
___
set -o emacs
set +o vi
___
set +o emacs
set -o vi
___
stderr:
osh11 interactive shell starts with emacs mode on

stdout:
non-interactive
1
1
interactive
0
1
stderr:
osh warning: --rcfile ignored with --norc
osh warning: --rcfile ignored in non-interactive shell
osh12 nounset

stdout:
[]
stderr:
  echo "[$unset]"
         ^~~~~~
[ stdin ]:3: fatal: Undefined variable 'unset'
osh13 -u is nounset

stdout:
[]
stderr:
  echo "[$unset]"
         ^~~~~~
[ stdin ]:3: fatal: Undefined variable 'unset'
osh14 nounset with "$@"

stdout:
a b c
stderr:
osh15 set -u -- clears argv

stdout:
stderr: 
osh16 set -u -- x y z

stdout:
x y z
stderr:
osh17 reset option with long flag

stdout:
[]
stderr:
osh18 reset option with short flag

stdout:
[]
stderr:
osh19 set -eu (flag parsing)

stdout:
stderr: 
  echo "[$unset]"
         ^~~~~~
[ stdin ]:2: fatal: Undefined variable 'unset'
osh20 -n for no execution (useful with --ast-output)

[osh stdout] Expected '1\n', got '1\n2\n3\n'

stdout:
1
2
3
stderr:
osh21 pipefail

stdout:
0
2
stderr:
osh22 shopt -p -o prints 'set' options

stdout:
set +o nounset
set -o nounset
stderr:
osh23 shopt -p prints 'shopt' options

stdout:
shopt -u nullglob
shopt -s nullglob
stderr:
osh24 shopt with no flags prints options

stdout:
2 one.txt
nullglob
failglob
1
stderr:
osh25 noclobber off

stdout:
foo
stderr:
osh26 noclobber on

[osh stdout] Expected u'0\n1\n', got '0\n0\n'

stdout:
0
0
stderr:
rm: cannot remove '/home/uke/oil/_tmp/spec-tmp/sh-options.test.sh.821/26-osh/no-clobber': No such file or directory
osh27 SHELLOPTS is updated when options are changed

stdout:
1
0
1
stderr:
+ grep -q xtrace
+ 968 echo ':xtrace'
+ echo 0
+ set '+x'
osh28 SHELLOPTS is readonly

stdout:
stderr: 
  SHELLOPTS=x
  ^~~~~~~~~~
[ stdin ]:1: fatal: Can't assign to readonly value 'SHELLOPTS'
osh29 SHELLOPTS and BASHOPTS are set

[osh status] Expected 0, got 1

stdout:
stderr: 
  echo shellopts ${SHELLOPTS:?} > /dev/null
                   ^~~~~~~~~
[ stdin ]:1: fatal: Var SHELLOPTS is empty
osh30 set - -

stdout:
a b
- a b
a b
- -
- +
+ -
--
stderr:
osh31 set -o lists options

stdout:
noexec
stderr:
osh32 set without args lists variables

stdout:
__GLOBAL=mutated
__OTHERLOCAL=L
__mylocal=L
__var_in_parent_scope=D
stderr:
osh33 'set' and 'eval' round trip

stdout:
[ ]
OK
OK
OK
OK
OK
stderr:
Code saved to /home/uke/oil/_tmp/spec-tmp/sh-options.test.sh.821/33-osh/vars-osh.txt
osh34 set without args and array variables (not in OSH)

stdout:
stderr: 
osh35 set without args and assoc array variables (not in OSH)

stdout:
stderr: 
  __assoc[a]=b
  ^~~~~~~~
[ stdin ]:3: fatal: Assoc array keys must be strings: $x 'x' "$x" etc. (OILS-ERR-101)
osh36 shopt -q

stdout:
nullglob=1
nullglob=0
nullglob,failglob=1
nullglob,failglob=0
stderr:
osh37 shopt -q invalid

stdout:
invalidZZ=2
stderr:
osh38 shopt -s strict:all

stdout:
shopt -u strict_argv
shopt -u strict_arith
-
shopt -s strict_argv
shopt -s strict_arith
-
shopt -s strict_argv
shopt -u strict_arith
-
stderr:
osh39 shopt allows for backward compatibility like bash

stdout:
shopt -u nullglob
status=0
shopt -s nullglob
stderr:
osh40 shopt -p validates option names

stdout:
status=2
status=2
stderr:
  shopt -p nullglob invalid failglob
  ^~~~~
[ stdin ]:1: 'shopt' got invalid option 'invalid'
  shopt nullglob invalid failglob > $TMP/out.txt
  ^~~~~
[ stdin ]:3: 'shopt' got invalid option 'invalid'
osh41 shopt -p -o validates option names

stdout:
set +o errexit
status=2
stderr:
  shopt -p -o errexit invalid nounset
  ^~~~~
[ stdin ]:1: 'shopt' got invalid option 'invalid'
osh42 stubbed out bash options

stdout:
2
0
0
0
stderr:
    shopt -s $name
    ^~~~~
[ stdin ]:2: 'shopt' got invalid option 'foo'
osh43 shopt -s nounset works in Oil, not in bash

stdout:
status=0
set -o nounset
stderr:
osh44 no-ops not in shopt -p output

stdout:
--
stderr: