Results for sh-options.test.sh

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

Details on runs that didn't PASS

osh_.cc0 $- with -c

[osh_.cc stdout] Expected 'u\n', got ''
[osh_.cc status] Expected 0, got -6

stdout:
stderr: 
osh_eval.opt: cpp/pylib_path_stat.h:10: bool path_stat::exists(Str*): Assertion `0' failed.
osh_.py3 $- with interactive shell

[osh_.py stdout] Expected 'FALSE\nTRUE\n', got 'FALSE\n'
[osh_.py status] Expected 0, got 1

stdout:
FALSE
stderr:
osh fatal error: 
osh_.cc3 $- with interactive shell

[osh_.cc stdout] Expected 'FALSE\nTRUE\n', got ''
[osh_.cc status] Expected 0, got -6

stdout:
stderr: 
osh_eval.opt: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh_.cc4 pass short options like sh -e

[osh_.cc status] Expected 1, got -6

stdout:
stderr: 
osh_eval.opt: cpp/pylib_path_stat.h:10: bool path_stat::exists(Str*): Assertion `0' failed.
osh_.cc5 pass long options like sh -o errexit

[osh_.cc status] Expected 1, got -6

stdout:
stderr: 
osh_eval.opt: cpp/pylib_path_stat.h:10: bool path_stat::exists(Str*): Assertion `0' failed.
osh_.cc6 pass shopt options like sh -O nullglob

[osh_.cc stdout] Expected 'foo *.nonexistent bar\nfoo bar\n', got ''
[osh_.cc status] Expected 0, got -6

stdout:
stderr: 
osh_eval.opt: cpp/pylib_path_stat.h:10: bool path_stat::exists(Str*): Assertion `0' failed.
osh_.py10 vi and emacs are mutually exclusive

[osh_.py stdout] Expected 'set +o emacs\nset +o vi\n___\nset -o emacs\nset +o vi\n___\nset +o emacs\nset -o vi\n___\n', got 'set +o emacs\nset +o vi\n___\nset -o emacs\nset +o vi\n___\nset -o emacs\nset -o vi\n___\n'

stdout:
set +o emacs
set +o vi
___
set -o emacs
set +o vi
___
set -o emacs
set -o vi
___
stderr:
osh_.cc10 vi and emacs are mutually exclusive

[osh_.cc stdout] Expected 'set +o emacs\nset +o vi\n___\nset -o emacs\nset +o vi\n___\nset +o emacs\nset -o vi\n___\n', got ''
[osh_.cc status] Expected 0, got -6

stdout:
stderr: 
osh_eval.opt: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh_.py11 interactive shell starts with emacs mode on

[osh_.py stdout] Expected 'non-interactive\n1\n1\ninteractive\n0\n1\n', got 'non-interactive\n1\n1\ninteractive\n'
[osh_.py status] Expected 0, got 1

stdout:
non-interactive
1
1
interactive
stderr:
osh fatal error: 
osh_.cc11 interactive shell starts with emacs mode on

[osh_.cc stdout] Expected 'non-interactive\n1\n1\ninteractive\n0\n1\n', got ''
[osh_.cc status] Expected 0, got -6

stdout:
stderr: 
osh_eval.opt: cpp/pylib_path_stat.h:10: bool path_stat::exists(Str*): Assertion `0' failed.
osh20 -n for no execution (useful with --ast-output)

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

stdout:
1
2
3
stderr:
osh_.py20 -n for no execution (useful with --ast-output)

[osh_.py stdout] Expected '1\n', got '1\n2\n3\n'

stdout:
1
2
3
stderr:
osh_.cc20 -n for no execution (useful with --ast-output)

[osh_.cc stdout] Expected '1\n', got '1\n2\n3\n'

stdout:
1
2
3
stderr:
dumb_alloc:
	gNumNew = 2247
	gNumDelete = 193
	gMemPos = 75040

	gNumMalloc = 178
	gNumFree = 0
	gMemPos2 = 11424
osh_.cc21 pipefail

[osh_.cc stdout] Expected '0\n2\n', got ''
[osh_.cc status] Expected 0, got -6

stdout:
stderr: 
osh_eval.opt: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh_.cc23 shopt -p prints 'shopt' options

[osh_.cc stdout] Expected 'shopt -u nullglob\nshopt -s nullglob\n', got ''
[osh_.cc status] Expected 0, got -6

stdout:
stderr: 
osh_eval.opt: _build/cpp/consts.cc:866: Str* consts::OptionName(option_asdl::option_t): Assertion `0' failed.
osh_.cc24 shopt with no flags prints options

[osh_.cc stdout] Expected '2 one.txt\nnullglob\nfailglob\n1\n', got ''
[osh_.cc status] Expected 0, got -6

stdout:
stderr: 
osh_eval.opt: cpp/posix.h:143: void posix::dup2(int, int): Assertion `0' failed.
osh_.cc25 noclobber off

[osh_.cc stdout] Expected 'foo\n', got ''
[osh_.cc status] Expected 0, got -6

stdout:
stderr: 
osh_eval.opt: cpp/posix.h:143: void posix::dup2(int, int): Assertion `0' failed.
osh26 noclobber on

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

stdout:
0
0
stderr:
osh_.py26 noclobber on

[osh_.py stdout] Expected u'0\n1\n', got '0\n0\n'

stdout:
0
0
stderr:
osh_.cc26 noclobber on

[osh_.cc stdout] Expected u'0\n1\n', got ''
[osh_.cc status] Expected 0, got -6

stdout:
stderr: 
osh_eval.opt: cpp/posix.h:143: void posix::dup2(int, int): Assertion `0' failed.
osh_.cc27 SHELLOPTS is updated when options are changed

[osh_.cc stdout] Expected u'1\n0\n1\n', got ''
[osh_.cc status] Expected 0, got -6

stdout:
stderr: 
osh_eval.opt: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh28 SHELLOPTS is readonly

stdout:
stderr: 
  SHELLOPTS=x
  ^~~~~~~~~~
[ stdin ]:1: fatal: Can't assign to readonly value 'SHELLOPTS'
osh_.py28 SHELLOPTS is readonly

stdout:
stderr: 
  SHELLOPTS=x
  ^~~~~~~~~~
[ stdin ]:1: fatal: Can't assign to readonly value 'SHELLOPTS'
osh_.cc28 SHELLOPTS is readonly

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

dumb_alloc:
	gNumNew = 1650
	gNumDelete = 98
	gMemPos = 58400

	gNumMalloc = 29
	gNumFree = 0
	gMemPos2 = 9040
osh29 set - -

stdout:
a b
- a b
a b
- -
- +
+ -
--
stderr:
osh_.py29 set - -

stdout:
a b
- a b
a b
- -
- +
+ -
--
stderr:
osh_.cc29 set - -

stdout:
a b
- a b
a b
- -
- +
+ -
--
stderr:
dumb_alloc:
	gNumNew = 3606
	gNumDelete = 439
	gMemPos = 113552

	gNumMalloc = 467
	gNumFree = 0
	gMemPos2 = 16048
osh_.cc30 set -o lists options

[osh_.cc stdout] Expected 'noexec\n', got ''
[osh_.cc status] Expected 0, got -6

stdout:
stderr: 
osh_eval.opt: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh_.cc31 set without args lists variables

[osh_.cc stdout] Expected '__GLOBAL=mutated\n__OTHERLOCAL=L\n__mylocal=L\n__var_in_parent_scope=D\n', got ''
[osh_.cc status] Expected 0, got -6

stdout:
stderr: 
osh_eval.opt: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh_.py32 'set' and 'eval' round trip

[osh_.py stdout] Expected '[ ]\nOK\nOK\nOK\nOK\nOK\n', got '[ ]\n'
[osh_.py status] Expected 0, got 1
[osh_.py stderr] Found 'Traceback (most recent'

stdout:
[ ]
stderr:
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 68, in <module>
    sys.exit(main(sys.argv))
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 36, in main
    None)
  File "/home/andy/git/oilshell/oil/core/shell_native.py", line 476, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/andy/git/oilshell/oil/core/main_loop.py", line 324, in Batch
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags=cmd_flags)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1495, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1342, in _Execute
    status, check_errexit = self._Dispatch(node, pipeline_st)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 623, in _Dispatch
    status = self._RunSimpleCommand(cmd_val, node.do_fork)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 477, in _RunSimpleCommand
    return self.shell_ex.RunSimpleCommand(cmd_val, do_fork)
  File "/home/andy/git/oilshell/oil/core/executor.py", line 193, in RunSimpleCommand
    status = self.RunBuiltin(builtin_id, cmd_val)
  File "/home/andy/git/oilshell/oil/core/executor.py", line 121, in RunBuiltin
    builtin_func = self.builtins[builtin_id]
KeyError: 2
osh_.cc32 'set' and 'eval' round trip

[osh_.cc stdout] Expected '[ ]\nOK\nOK\nOK\nOK\nOK\n', got ''
[osh_.cc status] Expected 0, got -6

stdout:
stderr: 
osh_eval.opt: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh33 set without args and array variables (not in OSH)

stdout:
stderr: 
osh_.py33 set without args and array variables (not in OSH)

stdout:
stderr: 
osh_.cc33 set without args and array variables (not in OSH)

[osh_.cc status] Expected 1, got -6

stdout:
stderr: 
osh_eval.opt: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh34 set without args and assoc array variables (not in OSH)

stdout:
stderr: 
  __assoc[a]=b
  ^~~~~~~~
[ stdin ]:3: fatal: Associative array keys must be strings: $x 'x' "$x" etc.
osh_.py34 set without args and assoc array variables (not in OSH)

stdout:
stderr: 
  __assoc[a]=b
  ^~~~~~~~
[ stdin ]:3: fatal: Associative array keys must be strings: $x 'x' "$x" etc.
osh_.cc34 set without args and assoc array variables (not in OSH)

stdout:
stderr: 
  __assoc[a]=b
  ^~~~~~~~
[ stdin ]:3: fatal: Associative array keys must be strings: $x 'x' "$x" etc.

dumb_alloc:
	gNumNew = 1860
	gNumDelete = 148
	gMemPos = 64736

	gNumMalloc = 60
	gNumFree = 0
	gMemPos2 = 9536
osh_.cc37 shopt -s strict:all

[osh_.cc stdout] Expected 'shopt -u strict_argv\nshopt -u strict_arith\n-\nshopt -s strict_argv\nshopt -s strict_arith\n-\nshopt -s strict_argv\nshopt -u strict_arith\n-\n', got ''
[osh_.cc status] Expected 0, got -6

stdout:
stderr: 
osh_eval.opt: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh_.cc38 shopt allows for backward compatibility like bash

[osh_.cc stdout] Expected 'shopt -u nullglob\nstatus=0\nshopt -s nullglob\n', got ''
[osh_.cc status] Expected 0, got -6

stdout:
stderr: 
osh_eval.opt: _build/cpp/consts.cc:866: Str* consts::OptionName(option_asdl::option_t): Assertion `0' failed.
osh_.cc39 shopt -p validates option names

[osh_.cc stdout] Expected 'status=2\nstatus=2\n', got ''
[osh_.cc status] Expected 0, got -6

stdout:
stderr: 
  shopt -p nullglob invalid failglob
  ^~~~~
[ stdin ]:1: 'shopt' got invalid option 'invalid'
osh_eval.opt: cpp/posix.h:143: void posix::dup2(int, int): Assertion `0' failed.
osh_.cc42 shopt -s nounset works in Oil, not in bash

[osh_.cc stdout] Expected 'status=0\nset -o nounset\n', got ''
[osh_.cc status] Expected 0, got -6

stdout:
stderr: 
osh_eval.opt: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh_.cc43 no-ops not in shopt -p output

[osh_.cc stdout] Expected '--\n', got ''
[osh_.cc status] Expected 0, got -6

stdout:
stderr: 
osh_eval.opt: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.