exit-status () { run-file exit-status "$@" } run-file () { local spec_name=$1; shift; sh-spec spec/$spec_name.test.sh --compare-shells --oils-bin-dir $PWD/bin "$@" } exit-status: spec test case results

Results for exit-status.test.sh

statusbashdashmkshosh
pass 7578
ok 2420
FAIL 0001
total9999
casebashdashmkshoshdescription
0pass ok pass pass Truncating 'exit' status
details
1pass ok pass pass Truncating 'return' status
details
2ok ok ok pass subshell OverflowError https://github.com/oilshell/oil/issues/996
detailsdetailsdetails
3ok ok ok pass func subshell OverflowError https://github.com/oilshell/oil/issues/996
detailsdetailsdetails
4pass pass pass pass If empty command
5pass pass pass pass If subshell true
6pass pass pass pass If subshell true WITH OUTPUT is different
7pass pass pass pass If subshell true WITH ARGUMENT
8pass pass pass FAIL If subshell false -- exit code is propagated in a weird way (strict_argv prevents)
details
27 passed, 8 OK, 0 not implemented, 0 BUG, 1 failed, 0 timeouts, 0 cases skipped
1 failed under osh

Details on runs that didn't PASS

dash0 Truncating 'exit' status

stdout:
status=255
status=0
status=1
===
status=2
status=2
stderr:
dash: 1: exit: Illegal number: -1
dash: 1: exit: Illegal number: -2
dash1 Truncating 'return' status

stdout:
status=255
status=256
status=257
===
stderr:
dash: 12: return: Illegal number: -1
bash2 subshell OverflowError https://github.com/oilshell/oil/issues/996

stdout:
status=2
return: can only
status=2
return: can only
status=2
return: can only

--- negative ---
status=2
return: can only
status=2
return: can only
stderr:
dash2 subshell OverflowError https://github.com/oilshell/oil/issues/996

stdout:
status=255
status=2
Illegal number
status=2
Illegal number

--- negative ---
status=2
Illegal number
status=2
Illegal number
stderr:
mksh2 subshell OverflowError https://github.com/oilshell/oil/issues/996

stdout:
status=255
status=1
bad number
status=1
bad number

--- negative ---
status=0
status=1
bad number
stderr:
bash3 func subshell OverflowError https://github.com/oilshell/oil/issues/996

stdout:
status=255
status=0
status=1
stderr:
dash3 func subshell OverflowError https://github.com/oilshell/oil/issues/996

stdout:
status=255
status=2
Illegal number
status=2
Illegal number
stderr:
mksh3 func subshell OverflowError https://github.com/oilshell/oil/issues/996

stdout:
status=255
status=1
bad number
status=1
bad number
stderr:
osh8 If subshell false -- exit code is propagated in a weird way (strict_argv prevents)

[osh stdout] Expected 'FALSE\n', got 'TRUE\n'

stdout:
TRUE
stderr: