status | bash | mksh | osh | |
pass | 8 | 1 | 2 | |
ok | 0 | 2 | 0 | |
N-I | 0 | 3 | 0 | |
BUG | 0 | 2 | 0 | |
FAIL | 0 | 0 | 6 | |
total | 8 | 8 | 8 | |
case | bash | mksh | osh | description |
0 | pass | N-I | FAIL | @Q |
details | details | |||
1 | pass | ok | FAIL | extglob $IFS 1 |
details | details | |||
2 | pass | pass | FAIL | extglob $IFS 2 |
details | ||||
3 | pass | BUG | FAIL | char class / extglob |
details | details | |||
4 | pass | BUG | FAIL | patsub of $* - http://landley.net/notes.html#23-04-2020 |
details | details | |||
5 | pass | ok | pass | Brace Expansion |
details | ||||
6 | pass | N-I | pass | {abc}<<< - http://landley.net/notes-2019.html#09-12-2019 |
details | ||||
7 | pass | N-I | FAIL | slice of @ and @ - http://landley.net/notes.html#23-04-2020 |
details | details |
11 passed, 2 OK, 3 not implemented, 2 BUG, 6 failed, 0 timeouts, 0 cases skipped 6 failed under osh
mksh | 0 @Q stdout: stderr: |
osh | 0 @Q [osh stdout] Expected 'a b c d\na b c d\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 1812, in _Dispatch status = self._ExecuteList(node.children) File "/home/uke/oil/osh/cmd_eval.py", line 2051, in _ExecuteList status = self._Execute(child) 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 959, in _DoSimple status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags) File "/home/uke/oil/osh/cmd_eval.py", line 594, in _RunSimpleCommand run_flags) File "/home/uke/oil/core/vm.py", line 224, in RunSimpleCommand run_flags) File "/home/uke/oil/core/executor.py", line 420, in _RunSimpleCommand cmd_val) File "/home/uke/oil/core/vm.py", line 302, in _RunInvokable status = self.cmd_ev.RunProc(proc, cmd_val) File "/home/uke/oil/osh/cmd_eval.py", line 2389, in RunProc status = self._Execute(proc.body) 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 1820, in _Dispatch status = self._ExecuteList(node.children) File "/home/uke/oil/osh/cmd_eval.py", line 2051, in _ExecuteList status = self._Execute(child) 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 1719, in _Dispatch status = self._Execute(node.child) 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 1956, in _EvalWordPart self._EvalBracedVarSub(part, part_vals, quoted) File "/home/uke/oil/osh/word_eval.py", line 1705, in _EvalBracedVarSub part.name_tok, vsub_state) File "/home/uke/oil/osh/word_eval.py", line 1252, in _Nullary s for s in bash_impl.InternalStringArray_GetValues( NameError: global name 'bash_impl' is not defined |
mksh | 1 extglob $IFS 1 stdout: abc)d ab+( ?d) _tmp abc)dstderr: rm: cannot remove '_tmp': Is a directory mksh: <stdin>[2]: shopt: not found |
osh | 1 extglob $IFS 1 [osh stdout] Expected 'abc)d\nab+( ?d)\n_tmp abc)d\n', got 'abc)d\nabc)d\n_tmp abc)d\n' stdout: abc)d abc)d _tmp abc)dstderr: rm: cannot remove '_tmp': Is a directory |
osh | 2 extglob $IFS 2 [osh stdout] Expected '=+(c=\n=d)=\n', got '=+(c d)=\n' stdout: =+(c d)=stderr: |
mksh | 3 char class / extglob stdout: [hello] b [+()] [+(])stderr: mksh: <stdin>[1]: shopt: not found rm: cannot remove '_tmp': Is a directory |
osh | 3 char class / extglob [osh stdout] Expected '[hello]\nb\n+\n[+(])\n', got '[hello]\nb\n[+()]\n[+(])\n' stdout: [hello] b [+()] [+(])stderr: rm: cannot remove '_tmp': Is a directory |
mksh | 4 patsub of $* - http://landley.net/notes.html#23-04-2020 stdout: stderr: mksh: <stdin>[1]: ${*/b c/ghi}: bad substitution |
osh | 4 patsub of $* - http://landley.net/notes.html#23-04-2020 [osh stdout] Expected 'a b c d\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 1812, in _Dispatch status = self._ExecuteList(node.children) File "/home/uke/oil/osh/cmd_eval.py", line 2051, in _ExecuteList status = self._Execute(child) 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 959, in _DoSimple status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags) File "/home/uke/oil/osh/cmd_eval.py", line 594, in _RunSimpleCommand run_flags) File "/home/uke/oil/core/vm.py", line 224, in RunSimpleCommand run_flags) File "/home/uke/oil/core/executor.py", line 420, in _RunSimpleCommand cmd_val) File "/home/uke/oil/core/vm.py", line 302, in _RunInvokable status = self.cmd_ev.RunProc(proc, cmd_val) File "/home/uke/oil/osh/cmd_eval.py", line 2389, in RunProc status = self._Execute(proc.body) 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 1820, in _Dispatch status = self._ExecuteList(node.children) File "/home/uke/oil/osh/cmd_eval.py", line 2051, in _ExecuteList status = self._Execute(child) 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 1719, in _Dispatch status = self._Execute(node.child) 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 1956, in _EvalWordPart self._EvalBracedVarSub(part, part_vals, quoted) File "/home/uke/oil/osh/word_eval.py", line 1729, in _EvalBracedVarSub val = self._PatSub(val, op) File "/home/uke/oil/osh/word_eval.py", line 1132, in _PatSub values = bash_impl.InternalStringArray_GetValues(array_val) NameError: global name 'bash_impl' is not defined |
mksh | 5 Brace Expansion stdout: ~/pwd ~root/pwd {~,~root}/pwd ~/pwd ~root/pwdstderr: |
mksh | 6 {abc}<<< - http://landley.net/notes-2019.html#09-12-2019 stdout: stderr: mksh: <stdin>[1]: syntax error: '{abc}' unexpected |
mksh | 7 slice of @ and @ - http://landley.net/notes.html#23-04-2020 stdout: stderr: mksh: b: not found mksh: <stdin>[3]: ${@: 3:5}: bad substitution mksh: <stdin>[5]: ${*: 3:5}: bad substitution |
osh | 7 slice of @ and @ - http://landley.net/notes.html#23-04-2020 [osh stdout] Expected '=ef=\n=gh=\n=ij=\n=kl=\n=mn=\n=ef gh ij kl mn=\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 1812, in _Dispatch status = self._ExecuteList(node.children) File "/home/uke/oil/osh/cmd_eval.py", line 2051, in _ExecuteList status = self._Execute(child) 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 959, in _DoSimple status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags) File "/home/uke/oil/osh/cmd_eval.py", line 594, in _RunSimpleCommand run_flags) File "/home/uke/oil/core/vm.py", line 224, in RunSimpleCommand run_flags) File "/home/uke/oil/core/executor.py", line 420, in _RunSimpleCommand cmd_val) File "/home/uke/oil/core/vm.py", line 302, in _RunInvokable status = self.cmd_ev.RunProc(proc, cmd_val) File "/home/uke/oil/osh/cmd_eval.py", line 2389, in RunProc status = self._Execute(proc.body) 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 1820, in _Dispatch status = self._ExecuteList(node.children) File "/home/uke/oil/osh/cmd_eval.py", line 2051, in _ExecuteList status = self._Execute(child) 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 1719, in _Dispatch status = self._Execute(node.child) 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 1861, in _Dispatch status = self._DoForEach(node) File "/home/uke/oil/osh/cmd_eval.py", line 1261, in _DoForEach iter_list = self.word_ev.EvalWordSequence(words) File "/home/uke/oil/osh/word_eval.py", line 2623, in EvalWordSequence cmd_val = self.EvalWordSequence2(words, False) 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 1956, in _EvalWordPart self._EvalBracedVarSub(part, part_vals, quoted) File "/home/uke/oil/osh/word_eval.py", line 1734, in _EvalBracedVarSub val = self._Slice(val, op, var_name, part) File "/home/uke/oil/osh/word_eval.py", line 1168, in _Slice val = _PerformSlice(val, begin, length, has_length, part, arg0_val) File "/home/uke/oil/osh/word_eval.py", line 394, in _PerformSlice if bash_impl.BigInt_Less(offset, mops.ZERO): NameError: global name 'bash_impl' is not defined |