Results for builtin-trap.test.sh

statusdashbashmkshashosh
pass 1822182018
ok 10212
N-I 30000
BUG 11320
FAIL 00003
total2323232323
casedashbashmkshashoshdescription
0pass pass pass pass pass trap accepts/ignores --
1pass pass pass pass pass Register invalid trap
2pass pass pass pass pass Remove invalid trap
3N-I pass pass pass pass SIGINT and INT are aliases
details
4N-I pass BUG BUG FAIL trap without args prints traps, like trap -p
detailsdetailsdetailsdetails
5pass pass pass pass ok trap 'echo hi' KILL (regression test, caught by smoosh suite)
details
6ok pass BUG ok pass Invalid trap invocation
detailsdetailsdetails
7BUG BUG BUG BUG pass exit 1 when trap code string is invalid
detailsdetailsdetailsdetails
8pass pass pass pass FAIL trap EXIT calling exit
details
9pass pass pass pass FAIL trap EXIT return status ignored
details
10pass pass ok pass pass trap EXIT with PARSE error
details
11pass pass pass pass pass trap EXIT with PARSE error and explicit exit
12pass pass pass pass pass trap EXIT with explicit exit
13pass pass pass pass pass trap EXIT with command sub / subshell / pipeline
14pass pass pass pass pass trap 0 is equivalent to EXIT
15N-I pass pass pass pass trap 1 is equivalent to SIGHUP; HUP is equivalent to SIGHUP
details
16pass pass pass pass pass eval in the exit trap (regression for issue #293)
17pass pass pass pass pass exit codes for traps are isolated
18pass pass pass pass pass traps are cleared in subshell (started with &)
19pass pass pass pass pass trap USR1, sleep, SIGINT: non-interactively
20pass pass ok pass ok trap INT, sleep, SIGINT: non-interactively
detailsdetails
21pass pass pass pass pass trap EXIT, sleep, SIGINT: non-interactively
22pass pass pass pass pass Remove trap with an unsigned integer
96 passed, 6 OK, 3 not implemented, 7 BUG, 3 failed, 0 timeouts, 0 cases skipped
3 failed under osh

Details on runs that didn't PASS

dash3 SIGINT and INT are aliases

stdout:
1
0
stderr:
trap: SIGINT: bad trap
dash4 trap without args prints traps, like trap -p

stdout:
stderr: 
mksh4 trap without args prints traps, like trap -p

stdout:
status=0
status=1
stderr:
ash4 trap without args prints traps, like trap -p

stdout:
status=0
status=1
stderr:
osh4 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=1
stderr:
  trap | grep EXIT
  ^~~~
[ -c flag ]:6: 'trap' requires a code string
osh5 trap 'echo hi' KILL (regression test, caught by smoosh suite)

stdout:
status=1
status=1
status=1
status=0
stderr:
  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
dash6 Invalid trap invocation

stdout:
status=1
stderr:
trap: foo: bad trap
mksh6 Invalid trap invocation

stdout:
status=0
stderr:
ash6 Invalid trap invocation

stdout:
status=1
stderr:
ash: trap: line 1: foo: invalid signal specification
dash7 exit 1 when trap code string is invalid

stdout:
status=0
stderr:
dash: 1: Syntax error: end of file unexpected
bash7 exit 1 when trap code string is invalid

stdout:
status=0
stderr:
bash: exit trap: line 1: syntax error near unexpected token `newline'
bash: exit trap: line 1: `echo <'
mksh7 exit 1 when trap code string is invalid

stdout:
status=0
stderr:
mksh: syntax error: unexpected EOF
ash7 exit 1 when trap code string is invalid

stdout:
status=0
stderr:
ash: syntax error: unexpected end of file
osh8 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
osh9 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
mksh10 trap EXIT with PARSE error

stdout:
FAILED
stderr:
mksh: <stdin>[2]: syntax error: 'newline' unexpected
dash15 trap 1 is equivalent to SIGHUP; HUP is equivalent to SIGHUP

stdout:
status=1
status=0
status=0
status=0
stderr:
trap: SIGHUP: bad trap
mksh20 trap INT, sleep, SIGINT: non-interactively

stdout:
mksh
stderr:
osh20 trap INT, sleep, SIGINT: non-interactively

stdout:
int
status=0
stderr: