spec test index / oilshell.org
status | dash | bash | mksh | osh | osh_ALT | |
pass | 2 | 7 | 4 | 9 | 9 | |
ok | 5 | 4 | 7 | 0 | 0 | |
N-I | 4 | 0 | 0 | 0 | 0 | |
BUG | 1 | 1 | 1 | 0 | 0 | |
FAIL | 0 | 0 | 0 | 3 | 3 | |
total | 12 | 12 | 12 | 12 | 12 | |
case | dash | bash | mksh | osh | osh_ALT | description |
0 | pass | ok | pass | FAIL | FAIL | set -o verbose prints unevaluated code |
details | details | details | ||||
1 | N-I | ok | BUG | pass | pass | xtrace with unprintable chars |
details | details | details | ||||
2 | N-I | pass | pass | pass | pass | xtrace with unicode chars |
details | ||||||
3 | N-I | BUG | pass | pass | pass | xtrace with tabs |
details | details | |||||
4 | BUG | ok | ok | pass | pass | xtrace with whitespace, quotes, and backslash |
details | details | details | ||||
5 | N-I | ok | pass | pass | pass | xtrace with newlines |
details | details | |||||
6 | pass | pass | ok | pass | pass | xtrace written before command executes |
details | ||||||
7 | ok | pass | ok | FAIL | FAIL | PS4 is scoped |
details | details | details | details | |||
8 | ok | pass | ok | FAIL | FAIL | xtrace with variables in PS4 |
details | details | details | details | |||
9 | ok | pass | ok | pass | pass | PS4 with unterminated ${ |
details | details | |||||
10 | ok | pass | ok | pass | pass | PS4 with unterminated $( |
details | details | |||||
11 | ok | pass | ok | pass | pass | PS4 with runtime error |
details | details |
31 passed, 16 OK, 4 not implemented, 3 BUG, 3 failed, 0 timeouts, 0 cases skipped 3 failed under osh
bash | 0 set -o verbose prints unevaluated code stdout: foo barstderr: x=foo y=bar echo $x echo $(echo $y) |
osh | 0 set -o verbose prints unevaluated code [osh stderr] Expected 'x=foo\ny=bar\necho $x\necho $(echo $y)\n', got 'Warning: set -o verbose not implemented\n' stdout: foo barstderr: Warning: set -o verbose not implemented |
osh_ALT | 0 set -o verbose prints unevaluated code [osh_ALT stderr] Expected 'x=foo\ny=bar\necho $x\necho $(echo $y)\n', got 'Warning: set -o verbose not implemented\n' stdout: foo barstderr: Warning: set -o verbose not implemented |
dash | 1 xtrace with unprintable chars stdout: stderr: |
bash | 1 xtrace with unprintable chars stdout: abcstderr: + echo $'a\003b\004c' |
mksh | 1 xtrace with unprintable chars stdout: a;cstderr: + echo $'a;\004c\r' |
dash | 2 xtrace with unicode chars stdout: stderr: |
dash | 3 xtrace with tabs stdout: stderr: |
bash | 3 xtrace with tabs stdout: [ ]stderr: + echo '[ ]' |
dash | 4 xtrace with whitespace, quotes, and backslash stdout: 1 2 ' " \stderr: + echo 1 2 ' " \ |
bash | 4 xtrace with whitespace, quotes, and backslash stdout: 1 2 ' " \stderr: + echo '1 2' \' '"' '\' |
mksh | 4 xtrace with whitespace, quotes, and backslash stdout: 1 2 ' " \stderr: + echo '1 2' \' '"' '\' |
dash | 5 xtrace with newlines stdout: $[ ]stderr: + echo $[\n] |
bash | 5 xtrace with newlines stdout: [ ]stderr: + echo '[ ]' |
mksh | 6 xtrace written before command executes stdout: stderr: + >&2 + echo one one + >&2 + echo two two |
dash | 7 PS4 is scoped stdout: one func twostderr: + echo one + f + local PS4=- - echo func + echo two |
mksh | 7 PS4 is scoped stdout: one func twostderr: + echo one + f + typeset 'PS4=- ' - echo func + echo two |
osh | 7 PS4 is scoped [osh stderr] Expected '+ echo one\n+ f\n- echo func\n+ echo two\n', got "+ echo one\n+ f\n+ 'TODO: trace string for assignment'\n- echo func\n+ echo two\n" stdout: one func twostderr: + echo one + f + 'TODO: trace string for assignment' - echo func + echo two |
osh_ALT | 7 PS4 is scoped [osh_ALT stderr] Expected '+ echo one\n+ f\n- echo func\n+ echo two\n', got "+ echo one\n+ f\n+ 'TODO: trace string for assignment'\n- echo func\n+ echo two\n" stdout: one func twostderr: + echo one + f + 'TODO: trace string for assignment' - echo func + echo two |
dash | 8 xtrace with variables in PS4 stdout: one twostderr: +1:x=1 +1:echo one +2:x=2 +2:echo two |
mksh | 8 xtrace with variables in PS4 stdout: one twostderr: +:x=1 +1:echo one +1:x=2 +2:echo two |
osh | 8 xtrace with variables in PS4 [osh stderr] Expected '+1:echo one\n+2:echo two\n', got '+1:(lvalue.Named name:x spids:[11]) = (value.Str s:1)\n+1:echo one\n+2:(lvalue.Named name:x spids:[21]) = (value.Str s:2)\n+2:echo two\n' stdout: one twostderr: +1:(lvalue.Named name:x spids:[11]) = (value.Str s:1) +1:echo one +2:(lvalue.Named name:x spids:[21]) = (value.Str s:2) +2:echo two |
osh_ALT | 8 xtrace with variables in PS4 [osh_ALT stderr] Expected '+1:echo one\n+2:echo two\n', got '+1:(lvalue.Named name:x spids:[11]) = (value.Str s:1)\n+1:echo one\n+2:(lvalue.Named name:x spids:[21]) = (value.Str s:2)\n+2:echo two\n' stdout: one twostderr: +1:(lvalue.Named name:x spids:[11]) = (value.Str s:1) +1:echo one +2:(lvalue.Named name:x spids:[21]) = (value.Str s:2) +2:echo two |
dash | 9 PS4 with unterminated ${ stdout: stderr: dash: 1: Syntax error: Missing '}' |
mksh | 9 PS4 with unterminated ${ stdout: stderr: mksh: no closing quote |
dash | 10 PS4 with unterminated $( stdout: stderr: dash: 1: Syntax error: end of file unexpected (expecting ")") |
mksh | 10 PS4 with unterminated $( stdout: stderr: mksh: syntax error: '(' unmatched |
dash | 11 PS4 with runtime error stdout: stderr: dash: 4: arithmetic expression: division by zero: " 1 / 0 " |
mksh | 11 PS4 with runtime error stdout: stderr: mksh: <stdin>[4]: 1 / 0 : zero divisor |