status | bash | dash | ash | zsh | mksh | ksh | toysh | sush | brush | osh | |
pass | 23 | 23 | 23 | 21 | 23 | 24 | 16 | 15 | 15 | 29 | |
ok | 2 | 2 | 0 | 2 | 1 | 0 | 0 | 0 | 0 | 0 | |
N-I | 0 | 2 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | |
BUG-2 | 0 | 2 | 0 | 3 | 1 | 0 | 0 | 0 | 0 | 0 | |
BUG | 4 | 0 | 0 | 2 | 4 | 0 | 0 | 0 | 0 | 0 | |
FAIL | 0 | 0 | 6 | 0 | 0 | 5 | 12 | 14 | 11 | 0 | |
TIME | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 3 | 0 | |
total | 29 | 29 | 29 | 29 | 29 | 29 | 29 | 29 | 29 | 29 | |
case | bash | dash | ash | zsh | mksh | ksh | toysh | sush | brush | osh | description |
0 | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | pass | implicit for loop |
details | |||||||||||
1 | pass | pass | pass | pass | pass | pass | FAIL | pass | FAIL | pass | empty for loop (has "in") |
details | details | ||||||||||
2 | ok | pass | pass | BUG | ok | FAIL | pass | FAIL | FAIL | pass | for loop with invalid identifier |
details | details | details | details | details | details | ||||||
3 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | the word 'in' can be the loop variable |
4 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Tilde expansion within for loop |
5 | pass | N-I | FAIL | pass | pass | pass | pass | pass | pass | pass | Brace Expansion within Array |
details | details | ||||||||||
6 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | using loop var outside loop |
7 | pass | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | continue |
details | |||||||||||
8 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | break |
9 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | while in while condition |
10 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | while in pipe |
11 | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | pass | while in pipe with subshell |
details | |||||||||||
12 | pass | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | until loop |
details | |||||||||||
13 | pass | pass | pass | ok | pass | pass | pass | pass | FAIL | pass | continue at top level |
details | details | ||||||||||
14 | BUG | ok | FAIL | ok | BUG | FAIL | FAIL | FAIL | FAIL | pass | continue in subshell |
details | details | details | details | details | details | details | details | details | |||
15 | BUG | BUG-2 | FAIL | BUG-2 | BUG | FAIL | FAIL | FAIL | FAIL | pass | continue in subshell aborts with errexit |
details | details | details | details | details | details | details | details | details | |||
16 | ok | ok | FAIL | pass | pass | pass | TIME | FAIL | TIME | pass | bad arg to break |
details | details | details | details | details | details | ||||||
17 | BUG | BUG-2 | FAIL | BUG-2 | BUG-2 | FAIL | FAIL | FAIL | FAIL | pass | too many args to continue |
details | details | details | details | details | details | details | details | details | |||
18 | pass | pass | pass | pass | pass | pass | pass | pass | TIME | pass | break in condition of loop |
19 | pass | pass | pass | pass | pass | pass | FAIL | pass | TIME | pass | break in condition of nested loop |
details | details | ||||||||||
20 | pass | pass | pass | pass | pass | pass | FAIL | pass | FAIL | pass | return within eval |
details | details | ||||||||||
21 | pass | pass | pass | pass | BUG | pass | FAIL | FAIL | FAIL | pass | break/continue within eval |
details | details | details | details | ||||||||
22 | pass | pass | pass | BUG | BUG | FAIL | FAIL | FAIL | FAIL | pass | break/continue within source |
details | details | details | details | details | details | ||||||
23 | BUG | pass | pass | BUG-2 | pass | pass | FAIL | FAIL | FAIL | pass | top-level break/continue/return (without strict_control_flow) |
details | details | details | details | details | |||||||
24 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | multi-level break with argument |
25 | pass | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | multi-level continue |
details | |||||||||||
26 | pass | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | $b break, $c continue, $r return, $e exit |
details | |||||||||||
27 | pass | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | \break \continue \return \exit |
details | |||||||||||
28 | pass | N-I | FAIL | N-I | pass | pass | FAIL | FAIL | FAIL | pass | builtin,command break,continue,return,exit |
details | details | details | details | details | details |
212 passed, 7 OK, 3 not implemented, 16 BUG, 48 failed, 4 timeouts, 0 cases skipped
toysh | 0 implicit for loop [toysh stdout] Expected '1\n2\n3\nfinished=3\n', got '' [toysh status] Expected 0, got 2 stdout: stderr: main: line 1: sh: syntax error: ; |
toysh | 1 empty for loop (has "in") [toysh status] Expected 0, got 1 stdout: stderr: set: bad -- |
brush | 1 empty for loop (has "in") [brush stdout] Expected '', got '1\n2\n3\n' stdout: 1 2 3stderr: |
bash | 2 for loop with invalid identifier stdout: stderr: bash: line 3: `-': not a valid identifier |
zsh | 2 for loop with invalid identifier stdout: histderr: zsh: parse error near `-' zsh: parse error near `done' |
mksh | 2 for loop with invalid identifier stdout: stderr: mksh: <stdin>[1]: for: bad identifier |
ksh | 2 for loop with invalid identifier [ksh status] Expected 2, got 1 stdout: stderr: E: ksh: <stdin>[1]: for: bad identifier |
sush | 2 for loop with invalid identifier [sush stdout] Expected u'', got 'hi\n' stdout: histderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 2: Unexpected token: - /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 4: Unexpected token: done |
brush | 2 for loop with invalid identifier [brush stdout] Expected u'', got 'hi\nhi\nhi\n' [brush status] Expected 2, got 0 stdout: hi hi histderr: |
dash | 5 Brace Expansion within Array stdout: -{a,b} {c,d}-stderr: |
ash | 5 Brace Expansion within Array [ash stdout] Expected '-a\n-b\nc-\nd-\n', got '-{a,b}\n{c,d}-\n' stdout: -{a,b} {c,d}-stderr: |
sush | 7 continue [sush stdout] Expected 'a\na\nb\nc\nc\n', got 'a\na\nb\n' stdout: a a bstderr: |
toysh | 11 while in pipe with subshell [toysh stdout] Expected '3\n', got '0\n' [toysh status] Expected 0, got 127 stdout: 0stderr: sh: read: No such file or directory sh: 1: No such file or directory sh: 2: No such file or directory sh: 3: No such file or directory |
sush | 12 until loop [sush status] Expected 0, got 2 stdout: histderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 2: Unexpected token: do sush: break: only meaningful in a `for', `while', or `until' loop /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 5: Unexpected token: done |
zsh | 13 continue at top level stdout: onestderr: continue: not in while, until, select, or repeat loop |
brush | 13 continue at top level [brush stdout] Expected 'one\ntwo\n', got 'one\n' stdout: onestderr: |
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 |
dash | 14 continue in subshell stdout: > 1 subshell status=0 . 1 > 2 subshell status=0 . 2stderr: |
ash | 14 continue in subshell [ash stdout] Expected '> 1\nsubshell status=1\n. 1\n> 2\nsubshell status=1\n. 2\n' Got '> 1\nsubshell status=0\n. 1\n> 2\nsubshell status=0\n. 2\n' stdout: > 1 subshell status=0 . 1 > 2 subshell status=0 . 2stderr: |
zsh | 14 continue in subshell stdout: > 1 subshell status=0 . 1 > 2 subshell status=0 . 2stderr: |
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 |
ksh | 14 continue in subshell [ksh stdout] Expected '> 1\nsubshell status=1\n. 1\n> 2\nsubshell status=1\n. 2\n' Got '> 1\nShould not print\nsubshell status=0\n. 1\n> 2\nShould not print\nsubshell status=0\n. 2\n' stdout: > 1 Should not print subshell status=0 . 1 > 2 Should not print subshell status=0 . 2stderr: W: ksh: <stdin>[6]: continue: can't continue W: ksh: <stdin>[6]: continue: can't continue |
toysh | 14 continue in subshell [toysh stdout] Expected '> 1\nsubshell status=1\n. 1\n> 2\nsubshell status=1\n. 2\n' Got '> 1\nsubshell status=139\n. 1\n> 2\nsubshell status=139\n. 2\n' stdout: > 1 subshell status=139 . 1 > 2 subshell status=139 . 2stderr: |
sush | 14 continue in subshell [sush stdout] Expected '> 1\nsubshell status=1\n. 1\n> 2\nsubshell status=1\n. 2\n' Got '> 1\nsubshell status=0\n. 1\n> 2\nsubshell status=0\n. 2\n' stdout: > 1 subshell status=0 . 1 > 2 subshell status=0 . 2stderr: |
brush | 14 continue in subshell [brush stdout] Expected '> 1\nsubshell status=1\n. 1\n> 2\nsubshell status=1\n. 2\n' Got '> 1\nsubshell status=0\n. 1\n> 2\nsubshell status=0\n. 2\n' stdout: > 1 subshell status=0 . 1 > 2 subshell status=0 . 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 |
dash | 15 continue in subshell aborts with errexit stdout: > 1 should fail after subshell . 1 > 2 should fail after subshell . 2stderr: |
ash | 15 continue in subshell aborts with errexit [ash stdout] Expected '> 1\n', got '> 1\nshould fail after subshell\n. 1\n> 2\nshould fail after subshell\n. 2\n' [ash status] Expected 1, got 0 stdout: > 1 should fail after subshell . 1 > 2 should fail after subshell . 2stderr: |
zsh | 15 continue in subshell aborts with errexit stdout: > 1 should fail after subshell . 1 > 2 should fail after subshell . 2stderr: |
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 |
ksh | 15 continue in subshell aborts with errexit [ksh stdout] Expected '> 1\n', got '> 1\nShould not print\nshould fail after subshell\n. 1\n> 2\nShould not print\nshould fail after subshell\n. 2\n' [ksh status] Expected 1, got 0 stdout: > 1 Should not print should fail after subshell . 1 > 2 Should not print should fail after subshell . 2stderr: W: ksh: <stdin>[7]: continue: can't continue W: ksh: <stdin>[7]: continue: can't continue |
toysh | 15 continue in subshell aborts with errexit [toysh stdout] Expected '> 1\n', got '> 1\nshould fail after subshell\n. 1\n> 2\nshould fail after subshell\n. 2\n' [toysh status] Expected 1, got 0 stdout: > 1 should fail after subshell . 1 > 2 should fail after subshell . 2stderr: set: bad -o errexit |
sush | 15 continue in subshell aborts with errexit [sush stdout] Expected '> 1\n', got '> 1\nshould fail after subshell\n. 1\n> 2\nshould fail after subshell\n. 2\n' [sush status] Expected 1, got 0 stdout: > 1 should fail after subshell . 1 > 2 should fail after subshell . 2stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: set: errexit: invalid option name |
brush | 15 continue in subshell aborts with errexit [brush stdout] Expected '> 1\n', got '> 1\nshould fail after subshell\n. 1\n> 2\nshould fail after subshell\n. 2\n' [brush status] Expected 1, got 0 stdout: > 1 should fail after subshell . 1 > 2 should fail after subshell . 2stderr: |
bash | 16 bad arg to break stdout: histderr: bash: line 4: break: oops: numeric argument required |
dash | 16 bad arg to break stdout: histderr: dash: 4: break: Illegal number: oops |
ash | 16 bad arg to break [ash status] Expected 1, got 2 stdout: histderr: ash: break: line 4: Illegal number: oops |
sush | 16 bad arg to break [sush status] Expected 1, got 128 stdout: histderr: sush: break: oops: numeric argument required |
bash | 17 too many args to continue stdout: a --stderr: bash: line 3: continue: too many arguments |
dash | 17 too many args to continue stdout: a b c --stderr: |
ash | 17 too many args to continue [ash stdout] Expected u'', got 'a\nb\nc\n--\n' [ash status] Expected 2, got 0 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 | 17 too many args to continue stdout: a b c --stderr: |
ksh | 17 too many args to continue [ksh stdout] Expected u'', got 'a\nb\nc\n--\n' [ksh status] Expected 2, got 0 stdout: a b c --stderr: |
toysh | 17 too many args to continue [toysh stdout] Expected u'', got 'a\nb\nc\n\n' [toysh status] Expected 2, got 0 stdout: a b cstderr: continue: Max 1 argument (see "continue --help") continue: Max 1 argument (see "continue --help") continue: Max 1 argument (see "continue --help") |
sush | 17 too many args to continue [sush stdout] Expected u'', got 'a\nc\n' [sush status] Expected 2, got 0 stdout: a cstderr: |
brush | 17 too many args to continue [brush stdout] Expected u'', got 'a\nb\nc\n--\n' [brush status] Expected 2, got 0 stdout: a b c --stderr: error: unexpected argument '2' found Usage: continue [WHICH_LOOP] For more information, try '--help'. error: unexpected argument '2' found Usage: continue [WHICH_LOOP] For more information, try '--help'. error: unexpected argument '2' found Usage: continue [WHICH_LOOP] For more information, try '--help'. |
toysh | 19 break in condition of nested loop [toysh stdout] Expected 'i=1\ni=2\ni=3\ndone\n', got 'i=1\ndone\n' stdout: i=1 donestderr: |
toysh | 20 return within eval [toysh stdout] Expected 'one\n', got 'one\ntwo\n' stdout: one twostderr: |
brush | 20 return within eval [brush stdout] Expected 'one\n', got 'one\ntwo\n' stdout: one twostderr: |
mksh | 21 break/continue within eval stdout: 1 2 3 4 5stderr: mksh: continue: can't continue mksh: break: can't break |
toysh | 21 break/continue within eval [toysh stdout] Expected '1\n3\n', got '1\n' [toysh status] Expected 0, got -11 stdout: 1stderr: |
sush | 21 break/continue within eval [sush stdout] Expected '1\n3\n', got '1\n' stdout: 1stderr: |
brush | 21 break/continue within eval [brush stdout] Expected '1\n3\n', got '1\n2\n3\n4\n5\ndone\n' stdout: 1 2 3 4 5 donestderr: |
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 |
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 |
ksh | 22 break/continue within source [ksh stdout] Expected '1\n3\ndone\n', got '1\n2\n3\n4\n5\ndone\n' stdout: 1 2 3 4 5 donestderr: W: ksh: spec/testdata/continue.sh[1]: continue: can't continue W: ksh: spec/testdata/break.sh[1]: break: can't break |
toysh | 22 break/continue within source [toysh stdout] Expected '1\n3\ndone\n', got '1\n' [toysh status] Expected 0, got -11 stdout: 1stderr: |
sush | 22 break/continue within source [sush stdout] Expected '1\n3\ndone\n', got '1\ndone\n' stdout: 1 donestderr: |
brush | 22 break/continue within source [brush stdout] Expected '1\n3\ndone\n', got '1\n2\n3\n4\n5\ndone\n' stdout: 1 2 3 4 5 donestderr: |
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 |
toysh | 23 top-level break/continue/return (without strict_control_flow) [toysh stdout] Expected 'break=0\ncontinue=0\n', got 'break=1\ncontinue=1\n' stdout: break=1 continue=1stderr: break: need for/while/until continue: need for/while/until |
sush | 23 top-level break/continue/return (without strict_control_flow) [sush stdout] Expected 'break=0\ncontinue=0\n', got 'break=0\ncontinue=0\nreturn=2\n' stdout: break=0 continue=0 return=2stderr: sush: break: only meaningful in a `for', `while', or `until' loop sush: continue: only meaningful in a `for', `while', or `until' loop sush: return: can only `return' from a function or sourced script |
brush | 23 top-level break/continue/return (without strict_control_flow) [brush stdout] Expected 'break=0\ncontinue=0\n', got 'return=2\n' stdout: return=2stderr: return: can only be used in a function or sourced script |
sush | 25 multi-level continue [sush stdout] Expected '1 a\n1 c\n2 a\n2 c\n---\n1 a\n2 a\n', got '1 a\n2 a\n---\n1 a\n' stdout: 1 a 2 a --- 1 astderr: |
sush | 26 $b break, $c continue, $r return, $e exit [sush stdout] Expected '- break\n1\n- continue\n1\n3\n- return\n1\n2\nstatus=99\n- exit\n' Got '- break\n1\n- continue\n1\n- return\n1\n2\nstatus=99\n- exit\n' stdout: - break 1 - continue 1 - return 1 2 status=99 - exitstderr: |
sush | 27 \break \continue \return \exit [sush stdout] Expected '- break\n1\n- continue\n1\n3\n- return\n1\n2\nstatus=99\n- exit\n' Got '- break\n1\n- continue\n1\n- return\n1\n2\nstatus=99\n- exit\n' stdout: - break 1 - continue 1 - return 1 2 status=99 - exitstderr: |
dash | 28 builtin,command break,continue,return,exit stdout: stderr: |
ash | 28 builtin,command break,continue,return,exit [ash 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\n3\n- return\n1\n2\n3\nstatus=0\n- exit\nnot executed\n' [ash status] Expected 5, got 0 stdout: - break 1 2 3 - continue 1 3 - return 1 2 3 status=0 - exit not executedstderr: ash: builtin: not found ash: builtin: not found ash: builtin: not found ash: builtin: not found ash: builtin: not found |
zsh | 28 builtin,command break,continue,return,exit stdout: stderr: |
toysh | 28 builtin,command break,continue,return,exit [toysh stdout] Expected '- break\n1\n- continue\n1\n3\n- return\n1\n2\nstatus=99\n- exit\n' Got '' [toysh status] Expected 5, got -6 stdout: stderr: munmap_chunk(): invalid pointer |
sush | 28 builtin,command break,continue,return,exit [sush stdout] Expected '- break\n1\n- continue\n1\n3\n- return\n1\n2\nstatus=99\n- exit\n' Got '- break\n1\n- continue\n1\n- return\n1\n2\nstatus=99\n- exit\n' stdout: - break 1 - continue 1 - return 1 2 status=99 - exitstderr: |
brush | 28 builtin,command break,continue,return,exit [brush stdout] Expected '- break\n1\n- continue\n1\n3\n- return\n1\n2\nstatus=99\n- exit\n' Got '- break\n1\n- continue\n1\n' [brush status] Expected 5, got -6 stdout: - break 1 - continue 1stderr: Well, this is embarrassing. brush had a problem and crashed. To help us diagnose the problem you can send us a crash report. We have generated a report file at "/tmp/report-dec3f68c-c05f-49a5-af63-cb3d8b817772.toml". Submit an issue or email with the subject of "brush Crash Report" and include the report as an attachment. To submit the crash report: please post a GitHub issue at https://github.com/reubeno/brush/issues/new We take privacy seriously, and do not perform any automated error collection. In order to improve the software, we rely on people to submit reports. Thank you kindly! |