37 passed, 24 OK, 10 not implemented, 4 BUG, 1 failed, 0 timeouts, 0 cases skipped 1 failed under osh
dash | 0 unset PS4 stdout: weird bugstderr: |
bash | 1 set -o verbose prints unevaluated code stdout: foo barstderr: x=foo y=bar echo $x echo $(echo $y) |
osh | 1 set -o verbose prints unevaluated code [osh stdout] Expected 'foo\nbar\n', got 'foo\n' [osh stderr] Expected 'x=foo\ny=bar\necho $x\necho $(echo $y)\n', got 'osh warning: set -o verbose not implemented\nTraceback (most recent call last):\n File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module>\n sys.exit(main(sys.argv))\n File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main\n return AppBundleMain(argv)\n File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain\n return shell.Main(\'osh\', arg_r, environ, login_shell, loader, readline)\n File "/home/uke/oil/core/shell.py", line 1253, in Main\n cmd_flags=cmd_eval.IsMainProgram)\n File "/home/uke/oil/core/main_loop.py", line 336, in Batch\n was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)\n File "/home/uke/oil/core/main_loop.py", line 401, in Batch2\n is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)\n File "/home/uke/oil/osh/cmd_eval.py", line 2175, in ExecuteAndCatch\n status = self._Execute(node)\n File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute\n status = self._Dispatch(node, cmd_st)\n File "/home/uke/oil/osh/cmd_eval.py", line 1701, in _Dispatch\n status = self._DoSimple(node, cmd_st)\n File "/home/uke/oil/osh/cmd_eval.py", line 904, in _DoSimple\n allow_assign=True)\n File "/home/uke/oil/osh/word_eval.py", line 2541, in EvalWordSequence2\n self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)\n File "/home/uke/oil/osh/word_eval.py", line 1989, in _EvalWordToParts\n self._EvalWordPart(p, word_part_vals, eval_flags)\n File "/home/uke/oil/osh/word_eval.py", line 1881, in _EvalWordPart\n quoted) # type: part_value_t\n File "/home/uke/oil/osh/word_eval.py", line 2629, in _EvalCommandSub\n stdout_str = self.shell_ex.RunCommandSub(cs_part)\n File "/home/uke/oil/core/executor.py", line 691, in RunCommandSub\n status, stdout_str, stderr_str = self.CaptureStdout(node)\n File "/home/uke/oil/core/executor.py", line 619, in CaptureStdout\n fds, w, exc = select.select([r,r2], [], [r,r2], -1)\nNameError: global name \'select\' is not defined\n' [osh status] Expected 0, got 1 [osh stderr] Found 'Traceback (most recent' stdout: foostderr: osh warning: set -o verbose not implemented 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 2541, in EvalWordSequence2 self._EvalWordToParts(w, part_vals, EXTGLOB_FILES) File "/home/uke/oil/osh/word_eval.py", line 1989, in _EvalWordToParts self._EvalWordPart(p, word_part_vals, eval_flags) File "/home/uke/oil/osh/word_eval.py", line 1881, in _EvalWordPart quoted) # type: part_value_t File "/home/uke/oil/osh/word_eval.py", line 2629, in _EvalCommandSub stdout_str = self.shell_ex.RunCommandSub(cs_part) File "/home/uke/oil/core/executor.py", line 691, in RunCommandSub status, stdout_str, stderr_str = self.CaptureStdout(node) File "/home/uke/oil/core/executor.py", line 619, in CaptureStdout fds, w, exc = select.select([r,r2], [], [r,r2], -1) NameError: global name 'select' is not defined |
bash | 2 xtrace with unprintable chars stdout: abcstderr: + echo $'a\003b\004c' |
dash | 2 xtrace with unprintable chars stdout: stderr: |
mksh | 2 xtrace with unprintable chars stdout: a;cstderr: + echo $'a;\004c\r' |
dash | 3 xtrace with unicode chars stdout: stderr: |
bash | 5 xtrace with tabs stdout: [ ]stderr: + echo '[ ]' |
dash | 5 xtrace with tabs stdout: stderr: |
bash | 6 xtrace with whitespace, quotes, and backslash stdout: 1 2 ' " \stderr: + echo '1 2' \' '"' '\' |
dash | 6 xtrace with whitespace, quotes, and backslash stdout: 1 2 ' " \stderr: + echo 1 2 ' " \ |
mksh | 6 xtrace with whitespace, quotes, and backslash stdout: 1 2 ' " \stderr: + echo '1 2' \' '"' '\' |
bash | 7 xtrace with newlines stdout: [ ]stderr: + echo '[ ]' |
dash | 7 xtrace with newlines stdout: $[ ]stderr: + echo $[\n] |
mksh | 8 xtrace written before command executes stdout: stderr: + >&2 + echo one one + >&2 + echo two two |
bash | 9 Assignments and assign builtins stdout: 2stderr: + x=1 + x=2 + echo 2 + readonly x=3 + x=3 |
dash | 9 Assignments and assign builtins stdout: 2stderr: + x=1 x=2 + echo 2 + readonly x=3 |
mksh | 9 Assignments and assign builtins stdout: 2stderr: + x=1 x=2 + echo 2 + readonly 'x=3' |
bash | 10 [[ ]] stdout: stderr: + dir=/ + [[ -d / ]] + (( a = 42 )) |
dash | 10 [[ ]] stdout: stderr: |
mksh | 10 [[ ]] stdout: stderr: |
dash | 11 PS4 is scoped stdout: one func twostderr: + echo one + f + local PS4=- - echo func + echo two |
mksh | 11 PS4 is scoped stdout: one func twostderr: + echo one + f + typeset 'PS4=- ' - echo func + echo two |
osh | 11 PS4 is scoped stdout: one func twostderr: + echo one + f + local PS4='- ' - echo func + echo two |
dash | 12 xtrace with variables in PS4 stdout: one twostderr: +1:x=1 +1:echo one +2:x=2 +2:echo two |
mksh | 12 xtrace with variables in PS4 stdout: one twostderr: +:x=1 +1:echo one +1:x=2 +2:echo two |
osh | 12 xtrace with variables in PS4 stdout: one twostderr: +1:x=1 +1:echo one +2:x=2 +2:echo two |
dash | 13 PS4 with unterminated ${ stdout: stderr: dash: 1: Syntax error: Missing '}' |
mksh | 13 PS4 with unterminated ${ stdout: stderr: mksh: no closing quote |
dash | 14 PS4 with unterminated $( stdout: stderr: dash: 1: Syntax error: end of file unexpected (expecting ")") |
mksh | 14 PS4 with unterminated $( stdout: stderr: mksh: syntax error: '(' unmatched |
dash | 15 PS4 with runtime error stdout: stderr: dash: 4: arithmetic expression: division by zero: " 1 / 0 " |
mksh | 15 PS4 with runtime error stdout: stderr: mksh: <stdin>[4]: 1 / 0 : zero divisor |
osh | 16 Reading $? in PS4 stdout: okstderr: [last=0] 'false' [last=1] echo ok |
bash | 17 Regression: xtrace for "declare -a a+=(v)" stdout: stderr: + a+=('2') + declare a |
dash | 17 Regression: xtrace for "declare -a a+=(v)" stdout: stderr: |
mksh | 17 Regression: xtrace for "declare -a a+=(v)" stdout: stderr: |
dash | 18 Regression: xtrace for "a+=(v)" stdout: stderr: |
mksh | 18 Regression: xtrace for "a+=(v)" stdout: stderr: |