status | dash | bash | mksh | osh | |
pass | 4 | 5 | 4 | 4 | |
ok | 2 | 1 | 2 | 0 | |
FAIL | 0 | 0 | 0 | 2 | |
total | 6 | 6 | 6 | 6 | |
case | dash | bash | mksh | osh | description |
0 | pass | ok | ok | pass | Bad var sub |
details | details | ||||
1 | pass | pass | pass | pass | Braced block inside ${} |
2 | pass | pass | pass | pass | Nested ${} |
3 | ok | pass | pass | FAIL | Filename redirect with "$@" |
details | details | ||||
4 | ok | pass | pass | FAIL | Descriptor redirect to bad "$@" |
details | details | ||||
5 | pass | pass | ok | pass | Here doc with bad "$@" delimiter |
details |
17 passed, 5 OK, 0 not implemented, 0 BUG, 2 failed, 0 timeouts, 0 cases skipped 2 failed under osh
bash | 0 Bad var sub stdout: stderr: bash: line 1: ${a&}: bad substitution |
mksh | 0 Bad var sub stdout: stderr: mksh: <stdin>[1]: ${a&}: bad substitution |
dash | 3 Filename redirect with "$@" stdout: stderr: dash: 2: cannot create _tmp/var-sub1 _tmp/var-sub2: Directory nonexistent |
osh | 3 Filename redirect with "$@" [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 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 1875, in _Dispatch status = self._DoRedirect(node, cmd_st) File "/home/uke/oil/osh/cmd_eval.py", line 1608, in _DoRedirect redirects.append(self._EvalRedirect(redir)) File "/home/uke/oil/osh/cmd_eval.py", line 505, in _EvalRedirect files = self.word_ev.EvalWordSequence([arg_word]) 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 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 |
dash | 4 Descriptor redirect to bad "$@" stdout: stderr: dash: 3: Syntax error: Bad fd number |
osh | 4 Descriptor redirect to bad "$@" [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 1875, in _Dispatch status = self._DoRedirect(node, cmd_st) File "/home/uke/oil/osh/cmd_eval.py", line 1608, in _DoRedirect redirects.append(self._EvalRedirect(redir)) File "/home/uke/oil/osh/cmd_eval.py", line 521, in _EvalRedirect val = self.word_ev.EvalWordToString(arg_word) File "/home/uke/oil/osh/word_eval.py", line 2162, in EvalWordToString self._EvalWordPart(p, part_vals, 0) 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 |
mksh | 5 Here doc with bad "$@" delimiter stdout: stderr: mksh: <stdin>[7]: here document '$@' unclosed |