spec test index / oilshell.org
| case | dash | bash | mksh | osh | description |
| 0 | pass | ok | pass | FAIL | set -o verbose prints unevaluated code |
| details | details | ||||
| 1 | BUG | pass | pass | FAIL | xtrace with whitespace and quotes |
| details | details | ||||
| 2 | N-I | ok | pass | FAIL | CASE: xtrace with newlines |
| details | details | details | |||
| 3 | pass | pass | ok | pass | xtrace written before command executes |
| details | |||||
| 4 | ok | pass | ok | FAIL | PS4 is scoped |
| details | details | details | |||
| 5 | ok | pass | ok | FAIL | xtrace with variables in PS4 |
| details | details | details | |||
| 6 | ok | pass | ok | pass | PS4 with unterminated ${ |
| details | details | ||||
| 7 | ok | pass | ok | pass | PS4 with unterminated $( |
| details | details | ||||
| 8 | ok | pass | ok | pass | PS4 with runtime error |
| details | details |
16 passed, 13 ok, 1 known unimplemented, 1 known bugs, 5 failed, 0 skipped
| 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 |
| dash | 1 xtrace with whitespace and quotes stdout: 1 2 ' "stderr: + echo 1 2 ' " |
| osh | 1 xtrace with whitespace and quotes [osh stderr] Expected '+ echo \'1 2\' \\\' \'"\'\n', got '+ echo \'1 2\' "\'" \'"\'\n' stdout: 1 2 ' "stderr: + echo '1 2' "'" '"' |
| dash | 2 CASE: xtrace with newlines stdout: $[ ]stderr: + echo $[\n] |
| bash | 2 CASE: xtrace with newlines stdout: [ ]stderr: + echo '[ ]' |
| osh | 2 CASE: xtrace with newlines [osh stderr] Expected u"+ echo $'[\\n]'\n", got "+ echo '[\\n]'\n" stdout: [ ]stderr: + echo '[\n]' |
| mksh | 3 xtrace written before command executes stdout: stderr: + >&2 + echo one one + >&2 + echo two two |
| dash | 4 PS4 is scoped stdout: one func twostderr: + echo one + f + local PS4=- - echo func + echo two |
| mksh | 4 PS4 is scoped stdout: one func twostderr: + echo one + f + typeset 'PS4=- ' - echo func + echo two |
| osh | 4 PS4 is scoped [osh stderr] Expected '+ echo one\n+ f\n- echo func\n+ echo two\n', got "+ echo one\n+ f\n- (lvalue.LhsName name:PS4 spids:[20]) = (value.Str s:'- ')\n- echo func\n+ echo two\n" stdout: one func twostderr: + echo one + f - (lvalue.LhsName name:PS4 spids:[20]) = (value.Str s:'- ') - echo func + echo two |
| dash | 5 xtrace with variables in PS4 stdout: one twostderr: +1:x=1 +1:echo one +2:x=2 +2:echo two |
| mksh | 5 xtrace with variables in PS4 stdout: one twostderr: +:x=1 +1:echo one +1:x=2 +2:echo two |
| osh | 5 xtrace with variables in PS4 [osh stderr] Expected '+1:echo one\n+2:echo two\n', got '+1:(lvalue.LhsName name:x spids:[11]) = (value.Str s:1)\n+1:echo one\n+2:(lvalue.LhsName name:x spids:[21]) = (value.Str s:2)\n+2:echo two\n' stdout: one twostderr: +1:(lvalue.LhsName name:x spids:[11]) = (value.Str s:1) +1:echo one +2:(lvalue.LhsName name:x spids:[21]) = (value.Str s:2) +2:echo two |
| dash | 6 PS4 with unterminated ${ stdout: stderr: _tmp/spec-bin/dash: 1: Syntax error: Missing '}' |
| mksh | 6 PS4 with unterminated ${ stdout: stderr: _tmp/spec-bin/mksh: no closing quote |
| dash | 7 PS4 with unterminated $( stdout: stderr: _tmp/spec-bin/dash: 1: Syntax error: end of file unexpected (expecting ")") |
| mksh | 7 PS4 with unterminated $( stdout: stderr: _tmp/spec-bin/mksh: syntax error: '(' unmatched
|
| dash | 8 PS4 with runtime error stdout: stderr: _tmp/spec-bin/dash: 4: arithmetic expression: division by zero: " 1 / 0 " |
| mksh | 8 PS4 with runtime error stdout: stderr: _tmp/spec-bin/mksh: <stdin>[4]: 1 / 0 : zero divisor |