status | dash | bash | mksh | zsh | osh | |
pass | 23 | 22 | 22 | 21 | 26 | |
ok | 2 | 2 | 1 | 2 | 0 | |
N-I | 1 | 0 | 0 | 0 | 0 | |
BUG-2 | 2 | 0 | 1 | 3 | 0 | |
BUG | 0 | 4 | 4 | 2 | 0 | |
FAIL | 0 | 0 | 0 | 0 | 2 | |
total | 28 | 28 | 28 | 28 | 28 | |
case | dash | bash | mksh | zsh | osh | description |
0 | pass | pass | pass | pass | pass | implicit for loop |
1 | pass | pass | pass | pass | pass | empty for loop (has "in") |
2 | pass | ok | ok | BUG | pass | for loop with invalid identifier |
details | details | details | ||||
3 | pass | pass | pass | pass | pass | the word 'in' can be the loop variable |
4 | pass | pass | pass | pass | pass | Tilde expansion within for loop |
5 | N-I | pass | pass | pass | pass | Brace Expansion within Array |
details | ||||||
6 | pass | pass | pass | pass | pass | using loop var outside loop |
7 | pass | pass | pass | pass | pass | continue |
8 | pass | pass | pass | pass | pass | break |
9 | pass | pass | pass | pass | pass | while in while condition |
10 | pass | pass | pass | pass | pass | while in pipe |
11 | pass | pass | pass | pass | pass | while in pipe with subshell |
12 | pass | pass | pass | pass | pass | until loop |
13 | pass | pass | pass | ok | pass | continue at top level |
details | ||||||
14 | ok | BUG | BUG | ok | pass | continue in subshell |
details | details | details | details | |||
15 | BUG-2 | BUG | BUG | BUG-2 | pass | continue in subshell aborts with errexit |
details | details | details | details | |||
16 | ok | ok | pass | pass | pass | bad arg to break |
details | details | |||||
17 | BUG-2 | BUG | BUG-2 | BUG-2 | pass | too many args to continue |
details | details | details | details | |||
18 | pass | pass | pass | pass | pass | break in condition of loop |
19 | pass | pass | pass | pass | pass | break in condition of nested loop |
20 | pass | pass | pass | pass | pass | return within eval |
21 | pass | pass | BUG | pass | pass | break/continue within eval |
details | ||||||
22 | pass | pass | BUG | BUG | pass | break/continue within source |
details | details | |||||
23 | pass | BUG | pass | BUG-2 | pass | top-level break/continue/return (without strict_control_flow) |
details | details | |||||
24 | pass | pass | pass | pass | pass | multi-level break with argument |
25 | pass | pass | pass | pass | pass | multi-level continue |
26 | pass | pass | pass | pass | FAIL | $b break, $c continue, $r return, $e exit |
details | ||||||
27 | pass | pass | pass | pass | FAIL | \break \continue \return \exit |
details |
114 passed, 7 OK, 1 not implemented, 16 BUG, 2 failed, 0 timeouts, 0 cases skipped 2 failed under osh
bash | 2 for loop with invalid identifier stdout: stderr: bash: line 3: `-': not a valid identifier |
mksh | 2 for loop with invalid identifier stdout: stderr: mksh: <stdin>[1]: for: bad identifier |
zsh | 2 for loop with invalid identifier stdout: histderr: zsh: parse error near `-' zsh: parse error near `done' |
dash | 5 Brace Expansion within Array stdout: -{a,b} {c,d}-stderr: |
zsh | 13 continue at top level stdout: onestderr: continue: not in while, until, select, or repeat loop |
dash | 14 continue in subshell stdout: > 1 subshell status=0 . 1 > 2 subshell status=0 . 2stderr: |
bash | 14 continue in subshell stdout: > 1 Should not print subshell status=0 . 1 > 2 Should not print subshell status=0 . 2stderr: bash: line 3: continue: only meaningful in a `for', `while', or `until' loop bash: line 3: continue: only meaningful in a `for', `while', or `until' loop |
mksh | 14 continue in subshell stdout: > 1 Should not print subshell status=0 . 1 > 2 Should not print subshell status=0 . 2stderr: mksh: <stdin>[6]: continue: can't continue mksh: <stdin>[6]: continue: can't continue |
zsh | 14 continue in subshell stdout: > 1 subshell status=0 . 1 > 2 subshell status=0 . 2stderr: |
dash | 15 continue in subshell aborts with errexit stdout: > 1 should fail after subshell . 1 > 2 should fail after subshell . 2stderr: |
bash | 15 continue in subshell aborts with errexit stdout: > 1 Should not print should fail after subshell . 1 > 2 Should not print should fail after subshell . 2stderr: bash: line 4: continue: only meaningful in a `for', `while', or `until' loop bash: line 4: continue: only meaningful in a `for', `while', or `until' loop |
mksh | 15 continue in subshell aborts with errexit stdout: > 1 Should not print should fail after subshell . 1 > 2 Should not print should fail after subshell . 2stderr: mksh: <stdin>[7]: continue: can't continue mksh: <stdin>[7]: continue: can't continue |
zsh | 15 continue in subshell aborts with errexit stdout: > 1 should fail after subshell . 1 > 2 should fail after subshell . 2stderr: |
dash | 16 bad arg to break stdout: histderr: dash: 4: break: Illegal number: oops |
bash | 16 bad arg to break stdout: histderr: bash: line 4: break: oops: numeric argument required |
dash | 17 too many args to continue stdout: a b c --stderr: |
bash | 17 too many args to continue stdout: a --stderr: bash: line 3: continue: too many arguments |
mksh | 17 too many args to continue stdout: a b c --stderr: |
zsh | 17 too many args to continue stdout: a b c --stderr: continue: too many arguments continue: too many arguments continue: too many arguments |
mksh | 21 break/continue within eval stdout: 1 2 3 4 5stderr: mksh: continue: can't continue mksh: break: can't break |
mksh | 22 break/continue within source stdout: 1 2 3 4 5 donestderr: mksh: spec/testdata/continue.sh[1]: continue: can't continue mksh: spec/testdata/break.sh[1]: break: can't break |
zsh | 22 break/continue within source stdout: 1 2 3 4 5 donestderr: spec/testdata/continue.sh:continue:1: not in while, until, select, or repeat loop spec/testdata/break.sh:break:1: not in while, until, select, or repeat loop |
bash | 23 top-level break/continue/return (without strict_control_flow) stdout: break=0 continue=0 return=2stderr: bash: line 1: break: only meaningful in a `for', `while', or `until' loop bash: line 1: continue: only meaningful in a `for', `while', or `until' loop bash: line 1: return: can only `return' from a function or sourced script |
zsh | 23 top-level break/continue/return (without strict_control_flow) stdout: stderr: zsh:break:1: not in while, until, select, or repeat loop zsh:continue:1: not in while, until, select, or repeat loop |
osh | 26 $b break, $c continue, $r return, $e exit [osh stdout] Expected '- break\n1\n- continue\n1\n3\n- return\n1\n2\nstatus=99\n- exit\n' Got '- break\n1\n2\n3\n- continue\n1\n2\n3\n- return\n1\n2\n3\nstatus=0\n- exit\nnot executed\n' [osh status] Expected 5, got 0 stdout: - break 1 2 3 - continue 1 2 3 - return 1 2 3 status=0 - exit not executedstderr: $b ^~ [ stdin ]:5: Command 'break' not found (OILS-ERR-100) $b ^~ [ stdin ]:5: Command 'break' not found (OILS-ERR-100) $b ^~ [ stdin ]:5: Command 'break' not found (OILS-ERR-100) $c ^~ [ stdin ]:12: Command 'continue' not found (OILS-ERR-100) $r 99 ^~ [ stdin ]:23: Command 'return' not found (OILS-ERR-100) $e 5 ^~ [ stdin ]:32: Command 'exit' not found (OILS-ERR-100) |
osh | 27 \break \continue \return \exit [osh stdout] Expected '- break\n1\n- continue\n1\n3\n- return\n1\n2\nstatus=99\n- exit\n' Got '- break\n1\n2\n3\n- continue\n1\n2\n3\n- return\n1\n2\n3\nstatus=0\n- exit\nnot executed\n' [osh status] Expected 5, got 0 stdout: - break 1 2 3 - continue 1 2 3 - return 1 2 3 status=0 - exit not executedstderr: \break ^~ [ stdin ]:4: Command 'break' not found (OILS-ERR-100) \break ^~ [ stdin ]:4: Command 'break' not found (OILS-ERR-100) \break ^~ [ stdin ]:4: Command 'break' not found (OILS-ERR-100) \continue ^~ [ stdin ]:10: Command 'continue' not found (OILS-ERR-100) \return 99 ^~ [ stdin ]:20: Command 'return' not found (OILS-ERR-100) \exit 5 ^~ [ stdin ]:28: Command 'exit' not found (OILS-ERR-100) |