status | bash | dash | mksh | zsh | osh | |
pass | 12 | 10 | 9 | 12 | 10 | |
ok | 0 | 1 | 1 | 0 | 0 | |
N-I | 2 | 3 | 4 | 2 | 0 | |
FAIL | 0 | 0 | 0 | 0 | 4 | |
total | 14 | 14 | 14 | 14 | 14 | |
case | bash | dash | mksh | zsh | osh | description |
0 | pass | pass | pass | pass | pass | sh -c |
1 | pass | pass | pass | pass | pass | empty -c input |
2 | pass | pass | N-I | pass | pass | sh +c is accepted |
details | ||||||
3 | pass | pass | pass | pass | pass | empty stdin |
4 | pass | N-I | N-I | pass | pass | shell obeys --help (regression for OSH) |
details | details | |||||
5 | pass | pass | pass | pass | FAIL | args are passed |
details | ||||||
6 | pass | pass | pass | pass | FAIL | args that look like flags are passed after script |
details | ||||||
7 | pass | pass | pass | pass | FAIL | args that look like flags are passed after -c |
details | ||||||
8 | pass | pass | pass | pass | pass | exit with explicit arg |
9 | pass | pass | pass | pass | pass | exit with no args |
10 | N-I | N-I | N-I | N-I | pass | --rcfile in non-interactive shell prints warnings |
details | details | details | details | |||
11 | pass | pass | pass | pass | pass | accepts -l flag |
12 | pass | ok | ok | pass | pass | accepts --login flag (dash and mksh don't accept long flags) |
details | details | |||||
13 | N-I | N-I | N-I | N-I | FAIL | osh --eval |
details | details | details | details | details |
53 passed, 2 OK, 11 not implemented, 0 BUG, 4 failed, 0 timeouts, 0 cases skipped 4 failed under osh
mksh | 2 sh +c is accepted stdout: stderr: mksh: echo hi: No such file or directory |
dash | 4 shell obeys --help (regression for OSH) stdout: stderr: dash: 0: Illegal option -- |
mksh | 4 shell obeys --help (regression for OSH) stdout: stderr: mksh: mksh: --: unknown option |
osh | 5 args are passed [osh stdout] Expected "['a', 'b']\n", got '' [osh status] Expected 0, got 1 [osh stderr] Found 'Traceback (most recent' stdout: stderr: Traceback (most recent call last): File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module> sys.exit(main(sys.argv)) File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main return AppBundleMain(argv) File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain return shell.Main('osh', arg_r, environ, login_shell, loader, readline) File "/home/uke/oil/core/shell.py", line 1253, in Main cmd_flags=cmd_eval.IsMainProgram) File "/home/uke/oil/core/main_loop.py", line 336, in Batch was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags) File "/home/uke/oil/core/main_loop.py", line 401, in Batch2 is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags) File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch status = self._Execute(node) File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute status = self._Dispatch(node, cmd_st) File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch status = self._DoSimple(node, cmd_st) File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple allow_assign=True) File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2 self._EvalWordToParts(w, part_vals, EXTGLOB_FILES) File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts self._EvalWordPart(p, word_part_vals, eval_flags) File "/home/uke/oil/osh/word_eval.py", line 1932, in _EvalWordPart self._EvalDoubleQuoted(part.parts, part_vals) File "/home/uke/oil/osh/word_eval.py", line 1453, in _EvalDoubleQuoted self._EvalWordPart(p, part_vals, QUOTED) File "/home/uke/oil/osh/word_eval.py", line 1952, in _EvalWordPart self._EvalSimpleVarSub(part, part_vals, quoted) File "/home/uke/oil/osh/word_eval.py", line 1827, in _EvalSimpleVarSub v = _ValueToPartValue(val, quoted, part) File "/home/uke/oil/osh/word_eval.py", line 231, in _ValueToPartValue bash_impl.InternalStringArray_GetValues(val), quoted) NameError: global name 'bash_impl' is not defined |
osh | 6 args that look like flags are passed after script [osh stdout] Expected "['--help', '--help', '-h']\n", got '' [osh status] Expected 0, got 1 [osh stderr] Found 'Traceback (most recent' stdout: stderr: Traceback (most recent call last): File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module> sys.exit(main(sys.argv)) File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main return AppBundleMain(argv) File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain return shell.Main('osh', arg_r, environ, login_shell, loader, readline) File "/home/uke/oil/core/shell.py", line 1253, in Main cmd_flags=cmd_eval.IsMainProgram) File "/home/uke/oil/core/main_loop.py", line 336, in Batch was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags) File "/home/uke/oil/core/main_loop.py", line 401, in Batch2 is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags) File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch status = self._Execute(node) File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute status = self._Dispatch(node, cmd_st) File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch status = self._DoSimple(node, cmd_st) File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple allow_assign=True) File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2 self._EvalWordToParts(w, part_vals, EXTGLOB_FILES) File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts self._EvalWordPart(p, word_part_vals, eval_flags) File "/home/uke/oil/osh/word_eval.py", line 1932, in _EvalWordPart self._EvalDoubleQuoted(part.parts, part_vals) File "/home/uke/oil/osh/word_eval.py", line 1453, in _EvalDoubleQuoted self._EvalWordPart(p, part_vals, QUOTED) File "/home/uke/oil/osh/word_eval.py", line 1952, in _EvalWordPart self._EvalSimpleVarSub(part, part_vals, quoted) File "/home/uke/oil/osh/word_eval.py", line 1827, in _EvalSimpleVarSub v = _ValueToPartValue(val, quoted, part) File "/home/uke/oil/osh/word_eval.py", line 231, in _ValueToPartValue bash_impl.InternalStringArray_GetValues(val), quoted) NameError: global name 'bash_impl' is not defined |
osh | 7 args that look like flags are passed after -c [osh stdout] Expected "['--help', '-h']\n", got '' [osh status] Expected 0, got 1 [osh stderr] Found 'Traceback (most recent' stdout: stderr: Traceback (most recent call last): File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module> sys.exit(main(sys.argv)) File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main return AppBundleMain(argv) File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain return shell.Main('osh', arg_r, environ, login_shell, loader, readline) File "/home/uke/oil/core/shell.py", line 1253, in Main cmd_flags=cmd_eval.IsMainProgram) File "/home/uke/oil/core/main_loop.py", line 336, in Batch was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags) File "/home/uke/oil/core/main_loop.py", line 401, in Batch2 is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags) File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch status = self._Execute(node) File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute status = self._Dispatch(node, cmd_st) File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch status = self._DoSimple(node, cmd_st) File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple allow_assign=True) File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2 self._EvalWordToParts(w, part_vals, EXTGLOB_FILES) File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts self._EvalWordPart(p, word_part_vals, eval_flags) File "/home/uke/oil/osh/word_eval.py", line 1932, in _EvalWordPart self._EvalDoubleQuoted(part.parts, part_vals) File "/home/uke/oil/osh/word_eval.py", line 1453, in _EvalDoubleQuoted self._EvalWordPart(p, part_vals, QUOTED) File "/home/uke/oil/osh/word_eval.py", line 1952, in _EvalWordPart self._EvalSimpleVarSub(part, part_vals, quoted) File "/home/uke/oil/osh/word_eval.py", line 1827, in _EvalSimpleVarSub v = _ValueToPartValue(val, quoted, part) File "/home/uke/oil/osh/word_eval.py", line 231, in _ValueToPartValue bash_impl.InternalStringArray_GetValues(val), quoted) NameError: global name 'bash_impl' is not defined |
bash | 10 --rcfile in non-interactive shell prints warnings stdout: rc ==> interactive.txt <== bash: cannot set terminal process group (15436): Inappropriate ioctl for device bash: no job control in this shell bash-5.2$ exit ==> non-interactive.txt <==stderr: warned=1 warned=1 |
dash | 10 --rcfile in non-interactive shell prints warnings stdout: ==> interactive.txt <== dash: 0: Illegal option -- ==> non-interactive.txt <== dash: 0: Illegal option --stderr: warned=1 warned=1 |
mksh | 10 --rcfile in non-interactive shell prints warnings stdout: ==> interactive.txt <== mksh: mksh: --: unknown option ==> non-interactive.txt <== mksh: mksh: --: unknown optionstderr: warned=1 warned=1 |
zsh | 10 --rcfile in non-interactive shell prints warnings stdout: ==> interactive.txt <== zsh: no such option: rcfile ==> non-interactive.txt <== zsh: no such option: rcfilestderr: warned=1 warned=1 |
dash | 12 accepts --login flag (dash and mksh don't accept long flags) stdout: stderr: dash: 0: Illegal option -- |
mksh | 12 accepts --login flag (dash and mksh don't accept long flags) stdout: stderr: mksh: mksh: --: unknown option |
bash | 13 osh --eval stdout: stderr: |
dash | 13 osh --eval stdout: stderr: |
mksh | 13 osh --eval stdout: stderr: |
zsh | 13 osh --eval stdout: stderr: |
osh | 13 osh --eval [osh stdout] Expected 'one x y z\nstatus=0 flag -c x y z\n\none x y z\nfail x y z\nstatus=42 flag -c x y z\nstatus=0\n' Got '\nstatus=1\n' [osh stderr] Found 'Traceback (most recent' stdout: status=1stderr: Traceback (most recent call last): File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module> sys.exit(main(sys.argv)) File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main return AppBundleMain(argv) File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain return shell.Main('osh', arg_r, environ, login_shell, loader, readline) File "/home/uke/oil/core/shell.py", line 981, in Main cmd_ev, lang) File "/home/uke/oil/core/main_loop.py", line 480, in EvalFile was_parsed, status = Batch2(cmd_ev, c_parser, cmd_ev.errfmt) File "/home/uke/oil/core/main_loop.py", line 401, in Batch2 is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags) File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch status = self._Execute(node) File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute status = self._Dispatch(node, cmd_st) File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch status = self._DoSimple(node, cmd_st) File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple allow_assign=True) File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2 self._EvalWordToParts(w, part_vals, EXTGLOB_FILES) File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts self._EvalWordPart(p, word_part_vals, eval_flags) File "/home/uke/oil/osh/word_eval.py", line 1932, in _EvalWordPart self._EvalDoubleQuoted(part.parts, part_vals) File "/home/uke/oil/osh/word_eval.py", line 1453, in _EvalDoubleQuoted self._EvalWordPart(p, part_vals, QUOTED) File "/home/uke/oil/osh/word_eval.py", line 1952, in _EvalWordPart self._EvalSimpleVarSub(part, part_vals, quoted) File "/home/uke/oil/osh/word_eval.py", line 1827, in _EvalSimpleVarSub v = _ValueToPartValue(val, quoted, part) File "/home/uke/oil/osh/word_eval.py", line 231, in _ValueToPartValue bash_impl.InternalStringArray_GetValues(val), quoted) NameError: global name 'bash_impl' is not defined Traceback (most recent call last): File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module> sys.exit(main(sys.argv)) File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main return AppBundleMain(argv) File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain return shell.Main('osh', arg_r, environ, login_shell, loader, readline) File "/home/uke/oil/core/shell.py", line 981, in Main cmd_ev, lang) File "/home/uke/oil/core/main_loop.py", line 480, in EvalFile was_parsed, status = Batch2(cmd_ev, c_parser, cmd_ev.errfmt) File "/home/uke/oil/core/main_loop.py", line 401, in Batch2 is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags) File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch status = self._Execute(node) File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute status = self._Dispatch(node, cmd_st) File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch status = self._DoSimple(node, cmd_st) File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple allow_assign=True) File "/home/uke/oil/osh/word_eval.py", line 2566, in EvalWordSequence2 self._EvalWordToParts(w, part_vals, EXTGLOB_FILES) File "/home/uke/oil/osh/word_eval.py", line 2048, in _EvalWordToParts self._EvalWordPart(p, word_part_vals, eval_flags) File "/home/uke/oil/osh/word_eval.py", line 1932, in _EvalWordPart self._EvalDoubleQuoted(part.parts, part_vals) File "/home/uke/oil/osh/word_eval.py", line 1453, in _EvalDoubleQuoted self._EvalWordPart(p, part_vals, QUOTED) File "/home/uke/oil/osh/word_eval.py", line 1952, in _EvalWordPart self._EvalSimpleVarSub(part, part_vals, quoted) File "/home/uke/oil/osh/word_eval.py", line 1827, in _EvalSimpleVarSub v = _ValueToPartValue(val, quoted, part) File "/home/uke/oil/osh/word_eval.py", line 231, in _ValueToPartValue bash_impl.InternalStringArray_GetValues(val), quoted) NameError: global name 'bash_impl' is not defined |