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 "$@" }
spec test index / oilshell.org
status | bash | dash | mksh | zsh | osh | |
pass | 5 | 5 | 7 | 5 | 4 | |
ok | 0 | 2 | 0 | 0 | 0 | |
N-I | 0 | 1 | 0 | 0 | 0 | |
BUG | 3 | 0 | 1 | 3 | 0 | |
FAIL | 0 | 0 | 0 | 0 | 4 | |
total | 8 | 8 | 8 | 8 | 8 | |
case | bash | dash | mksh | zsh | osh | description |
0 | pass | pass | pass | BUG | FAIL | : is special and prefix assignments persist after special builtins |
details | details | |||||
1 | BUG | pass | pass | pass | pass | readonly is special and prefix assignments persist |
details | ||||||
2 | pass | pass | pass | pass | pass | true is not special |
3 | BUG | ok | pass | BUG | FAIL | Shift is special and the whole script exits if it returns non-zero |
details | details | details | details | |||
4 | BUG | ok | pass | pass | FAIL | set is special and fails, even if using || true |
details | details | details | ||||
5 | pass | pass | BUG | BUG | FAIL | Special builtins can't be redefined as functions |
details | details | details | ||||
6 | pass | pass | pass | pass | pass | Non-special builtins CAN be redefined as functions |
7 | pass | 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
zsh | 0 : is special and prefix assignments persist after special builtins stdout: foo=stderr: |
osh | 0 : is special and prefix assignments persist after special builtins [osh stdout] Expected 'foo=bar\n', got 'foo=\n' stdout: foo=stderr: |
bash | 1 readonly is special and prefix assignments persist stdout: foo=bar spam=eggs bar Nonestderr: |
bash | 3 Shift is special and the whole script exits if it returns non-zero stdout: status=1stderr: bash: line 3: shift: 3: shift count out of range |
dash | 3 Shift is special and the whole script exits if it returns non-zero stdout: stderr: dash: 3: shift: can't shift that many |
zsh | 3 Shift is special and the whole script exits if it returns non-zero stdout: status=1stderr: shift: shift count must be <= $# |
osh | 3 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=1stderr: |
bash | 4 set is special and fails, even if using || true stdout: ok should not get herestderr: bash: line 1: shopt: invalid_: invalid shell option name bash: line 3: set: invalid_: invalid option name |
dash | 4 set is special and fails, even if using || true stdout: okstderr: dash: 1: shopt: not found dash: 3: set: Illegal option -o invalid_ |
osh | 4 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 herestderr: shopt -s invalid_ || true ^~~~~ [ stdin ]:1: 'shopt' got invalid option 'invalid_' set -o invalid_ || true ^~~ [ stdin ]:3: 'set' got invalid option 'invalid_' |
mksh | 5 Special builtins can't be redefined as functions stdout: status=0stderr: |
zsh | 5 Special builtins can't be redefined as functions stdout: status=0stderr: |
osh | 5 Special builtins can't be redefined as functions [osh status] Expected 2, got 0 stdout: status=0stderr: |
dash | 7 command, builtin - both can be redefined, not special (regression) stdout: stderr: |