96 passed, 6 OK, 3 not implemented, 7 BUG, 3 failed, 0 timeouts, 0 cases skipped 3 failed under osh
dash | 3 SIGINT and INT are aliases stdout: 1 0stderr: trap: SIGINT: bad trap |
dash | 4 trap without args prints traps, like trap -p stdout: stderr: |
mksh | 4 trap without args prints traps, like trap -p stdout: status=0 status=1stderr: |
ash | 4 trap without args prints traps, like trap -p stdout: status=0 status=1stderr: |
osh | 4 trap without args prints traps, like trap -p [osh stdout] Expected "status=0\ntrap -- 'true' EXIT\nstatus=0\n", got 'status=0\nstatus=1\n' stdout: status=0 status=1stderr: trap | grep EXIT ^~~~ [ -c flag ]:6: 'trap' requires a code string |
osh | 5 trap 'echo hi' KILL (regression test, caught by smoosh suite) stdout: status=1 status=1 status=1 status=0stderr: trap 'echo hi' 9 ^ [ stdin ]:1: Signal '9' can't be handled trap 'echo hi' KILL ^~~~ [ stdin ]:4: Invalid signal or hook 'KILL' trap 'echo hi' STOP ^~~~ [ stdin ]:7: Signal 'STOP' can't be handled |
dash | 6 Invalid trap invocation stdout: status=1stderr: trap: foo: bad trap |
mksh | 6 Invalid trap invocation stdout: status=0stderr: |
ash | 6 Invalid trap invocation stdout: status=1stderr: ash: trap: line 1: foo: invalid signal specification |
dash | 7 exit 1 when trap code string is invalid stdout: status=0stderr: dash: 1: Syntax error: end of file unexpected |
bash | 7 exit 1 when trap code string is invalid stdout: status=0stderr: bash: exit trap: line 1: syntax error near unexpected token `newline' bash: exit trap: line 1: `echo <' |
mksh | 7 exit 1 when trap code string is invalid stdout: status=0stderr: mksh: syntax error: unexpected EOF |
ash | 7 exit 1 when trap code string is invalid stdout: status=0stderr: ash: syntax error: unexpected end of file |
osh | 8 trap EXIT calling exit [osh stdout] Expected 'cleanup [x y z]\n', got '' [osh status] Expected 42, 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 1260, in Main cmd_ev.RunTrapsOnExit(mut_status) File "/home/uke/oil/osh/cmd_eval.py", line 2283, in RunTrapsOnExit is_return, is_fatal = self.ExecuteAndCatch(node, 0) 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 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 | 9 trap EXIT return status ignored [osh stdout] Expected 'cleanup [x y z]\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 1260, in Main cmd_ev.RunTrapsOnExit(mut_status) File "/home/uke/oil/osh/cmd_eval.py", line 2283, in RunTrapsOnExit is_return, is_fatal = self.ExecuteAndCatch(node, 0) 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 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 |
mksh | 10 trap EXIT with PARSE error stdout: FAILEDstderr: mksh: <stdin>[2]: syntax error: 'newline' unexpected |
dash | 15 trap 1 is equivalent to SIGHUP; HUP is equivalent to SIGHUP stdout: status=1 status=0 status=0 status=0stderr: trap: SIGHUP: bad trap |
mksh | 20 trap INT, sleep, SIGINT: non-interactively stdout: mkshstderr: |
osh | 20 trap INT, sleep, SIGINT: non-interactively stdout: int status=0stderr: |