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

Results for builtin-special.test.sh

statusbashdashmkshzshosh
pass 55754
ok 02000
N-I 01000
BUG 30130
FAIL 00004
total88888
casebashdashmkshzshoshdescription
0pass pass pass BUG FAIL : is special and prefix assignments persist after special builtins
detailsdetails
1BUG pass pass pass pass readonly is special and prefix assignments persist
details
2pass pass pass pass pass true is not special
3BUG ok pass BUG FAIL Shift is special and the whole script exits if it returns non-zero
detailsdetailsdetailsdetails
4BUG ok pass pass FAIL set is special and fails, even if using || true
detailsdetailsdetails
5pass pass BUG BUG FAIL Special builtins can't be redefined as functions
detailsdetailsdetails
6pass pass pass pass pass Non-special builtins CAN be redefined as functions
7pass N-I pass pass pass command, builtin - both can be redefined, not special (regression)
details
26 passed, 2 OK, 1 not implemented, 7 BUG, 4 failed, 0 timeouts, 0 cases skipped
4 failed under osh

Details on runs that didn't PASS

zsh0 : is special and prefix assignments persist after special builtins

stdout:
foo=
stderr:
osh0 : is special and prefix assignments persist after special builtins

[osh stdout] Expected 'foo=bar\n', got 'foo=\n'

stdout:
foo=
stderr:
bash1 readonly is special and prefix assignments persist

stdout:
foo=bar
spam=eggs
bar
None
stderr:
bash3 Shift is special and the whole script exits if it returns non-zero

stdout:
status=1
stderr:
bash: line 3: shift: 3: shift count out of range
dash3 Shift is special and the whole script exits if it returns non-zero

stdout:
stderr: 
dash: 3: shift: can't shift that many
zsh3 Shift is special and the whole script exits if it returns non-zero

stdout:
status=1
stderr:
shift: shift count must be <= $#
osh3 Shift is special and the whole script exits if it returns non-zero

[osh stdout] Expected u'', got 'status=1\n'
[osh status] Expected 1, got 0

stdout:
status=1
stderr:
bash4 set is special and fails, even if using || true

stdout:
ok
should not get here
stderr:
bash: line 1: shopt: invalid_: invalid shell option name
bash: line 3: set: invalid_: invalid option name
dash4 set is special and fails, even if using || true

stdout:
ok
stderr:
dash: 1: shopt: not found
dash: 3: set: Illegal option -o invalid_
osh4 set is special and fails, even if using || true

[osh stdout] Expected 'ok\n', got 'ok\nshould not get here\n'
[osh status] Expected 1, got 0

stdout:
ok
should not get here
stderr:
  shopt -s invalid_ || true
  ^~~~~
[ stdin ]:1: 'shopt' got invalid option 'invalid_'
  set -o invalid_ || true
  ^~~
[ stdin ]:3: 'set' got invalid option 'invalid_'
mksh5 Special builtins can't be redefined as functions

stdout:
status=0
stderr:
zsh5 Special builtins can't be redefined as functions

stdout:
status=0
stderr:
osh5 Special builtins can't be redefined as functions

[osh status] Expected 2, got 0

stdout:
status=0
stderr:
dash7 command, builtin - both can be redefined, not special (regression)

stdout:
stderr: