| status | bash | dash | ash | zsh | mksh | ksh | toysh | sush | brush | osh | |
| pass | 22 | 22 | 23 | 6 | 8 | 8 | 22 | 15 | 14 | 24 | |
| ok | 1 | 2 | 0 | 0 | 17 | 0 | 0 | 0 | 0 | 0 | |
| N-I | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| BUG | 3 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | |
| FAIL | 0 | 0 | 3 | 20 | 0 | 18 | 5 | 12 | 13 | 3 | |
| TIME | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | |
| total | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | 27 | |
| case | bash | dash | ash | zsh | mksh | ksh | toysh | sush | brush | osh | description |
| 0 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Long Token - 65535 bytes |
| 1 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Token that's too long for Oils - 65536 bytes |
| 2 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | $% is not a parse error |
| 3 | ok | pass | pass | FAIL | ok | FAIL | FAIL | FAIL | FAIL | pass | Bad braced var sub -- not allowed |
| details | details | details | details | details | details | details | |||||
| 4 | BUG | BUG | FAIL | FAIL | BUG | FAIL | FAIL | FAIL | FAIL | pass | Bad var sub caught at parse time |
| details | details | details | details | details | details | details | details | details | |||
| 5 | pass | pass | pass | FAIL | ok | FAIL | pass | pass | pass | pass | Incomplete while |
| details | details | details | |||||||||
| 6 | pass | pass | pass | FAIL | ok | FAIL | pass | FAIL | FAIL | pass | Incomplete for |
| details | details | details | details | details | |||||||
| 7 | pass | pass | pass | FAIL | ok | FAIL | pass | pass | pass | pass | Incomplete if |
| details | details | details | |||||||||
| 8 | pass | pass | pass | FAIL | ok | FAIL | pass | pass | pass | pass | do unexpected |
| details | details | details | |||||||||
| 9 | pass | pass | pass | FAIL | ok | FAIL | pass | FAIL | FAIL | pass | } is a parse error |
| details | details | details | details | details | |||||||
| 10 | pass | pass | pass | FAIL | ok | FAIL | pass | FAIL | FAIL | pass | { is its own word, needs a space |
| details | details | details | details | details | |||||||
| 11 | pass | pass | pass | FAIL | pass | pass | FAIL | FAIL | FAIL | pass | } on the second line |
| details | details | details | details | ||||||||
| 12 | BUG | pass | pass | FAIL | ok | FAIL | pass | FAIL | FAIL | pass | Invalid for loop variable name |
| details | details | details | details | details | details | ||||||
| 13 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | bad var name globally isn't parsed like an assignment |
| 14 | pass | ok | FAIL | pass | pass | pass | pass | FAIL | FAIL | pass | bad var name in export |
| details | details | details | details | ||||||||
| 15 | pass | ok | FAIL | pass | pass | pass | pass | FAIL | pass | pass | bad var name in local |
| details | details | details | |||||||||
| 16 | pass | pass | pass | FAIL | ok | FAIL | pass | pass | pass | pass | misplaced parentheses are not a subshell |
| details | details | details | |||||||||
| 17 | pass | pass | pass | FAIL | ok | FAIL | pass | pass | pass | pass | incomplete command sub |
| details | details | details | |||||||||
| 18 | pass | pass | pass | FAIL | ok | FAIL | pass | pass | pass | pass | incomplete backticks |
| details | details | details | |||||||||
| 19 | pass | pass | pass | FAIL | ok | FAIL | pass | pass | pass | pass | misplaced ;; |
| details | details | details | |||||||||
| 20 | pass | N-I | pass | FAIL | ok | FAIL | FAIL | pass | FAIL | pass | empty clause in [[ |
| details | details | details | details | details | details | ||||||
| 21 | TIME | TIME | TIME | TIME | TIME | TIME | FAIL | pass | FAIL | pass | interactive parse error (regression) |
| details | details | details | details | details | details | details | details | ||||
| 22 | BUG | pass | pass | FAIL | ok | FAIL | pass | FAIL | FAIL | FAIL | array literal inside array is a parse error |
| details | details | details | details | details | details | details | |||||
| 23 | pass | pass | pass | FAIL | ok | FAIL | pass | FAIL | FAIL | FAIL | array literal inside loop is a parse error |
| details | details | details | details | details | details | ||||||
| 24 | pass | pass | pass | FAIL | ok | FAIL | pass | FAIL | FAIL | FAIL | array literal in case |
| details | details | details | details | details | details | ||||||
| 25 | pass | pass | pass | FAIL | ok | FAIL | pass | pass | pass | pass | %foo=() is parse error (regression) |
| details | details | details | |||||||||
| 26 | pass | pass | pass | FAIL | pass | pass | pass | pass | pass | pass | echo =word is allowed |
| details |
164 passed, 20 OK, 1 not implemented, 5 BUG, 74 failed, 6 timeouts, 0 cases skipped 3 failed under osh
| bash | 3 Bad braced var sub -- not allowed stdout: stderr: bash: line 1: ${%}: bad substitution
|
| zsh | 3 Bad braced var sub -- not allowed [zsh status] Expected 2 Got 0 stdout: stderr: |
| mksh | 3 Bad braced var sub -- not allowed stdout: stderr: mksh: <stdin>[1]: ${%}: bad substitution
|
| ksh | 3 Bad braced var sub -- not allowed [ksh status] Expected 2 Got 1 stdout: stderr: E: ksh: <stdin>[1]: ${%}: bad substitution
|
| toysh | 3 Bad braced var sub -- not allowed [toysh status] Expected 2 Got 1 stdout: stderr: main: line 1: sh: : bad substitution |
| sush | 3 Bad braced var sub -- not allowed [sush status] Expected 2 Got 1 stdout: stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: `${%}': bad substitution
|
| brush | 3 Bad braced var sub -- not allowed [brush status] Expected 2 Got 0 stdout: ${%}
stderr: |
| bash | 4 Bad var sub caught at parse time stdout: okstderr: |
| dash | 4 Bad var sub caught at parse time stdout: okstderr: |
| ash | 4 Bad var sub caught at parse time [ash status] Expected 2 Got 0 stdout: okstderr: |
| zsh | 4 Bad var sub caught at parse time [zsh status] Expected 2 Got 0 stdout: okstderr: |
| mksh | 4 Bad var sub caught at parse time stdout: okstderr: |
| ksh | 4 Bad var sub caught at parse time [ksh status] Expected 2 Got 0 stdout: okstderr: |
| toysh | 4 Bad var sub caught at parse time [toysh status] Expected 2 Got 0 stdout: okstderr: |
| sush | 4 Bad var sub caught at parse time [sush status] Expected 2 Got 0 stdout: okstderr: |
| brush | 4 Bad var sub caught at parse time [brush status] Expected 2 Got 0 stdout: okstderr: |
| zsh | 5 Incomplete while [zsh status] Expected 2 Got 1 stdout: stderr: zsh: parse error near `\n' |
| mksh | 5 Incomplete while stdout: stderr: mksh: <stdin>[1]: syntax error: 'while' unmatched |
| ksh | 5 Incomplete while [ksh status] Expected 2 Got 1 stdout: stderr: E: ksh: <stdin>[1]: syntax error: unmatched 'while' |
| zsh | 6 Incomplete for [zsh stdout] Expected u'' Got 'status=1\n' [zsh status] Expected 2 Got 0 stdout: status=1stderr: zsh: parse error near `\n' |
| mksh | 6 Incomplete for stdout: stderr: mksh: <stdin>[1]: syntax error: 'newline' unexpected |
| ksh | 6 Incomplete for [ksh status] Expected 2 Got 1 stdout: stderr: E: ksh: <stdin>[1]: syntax error: unexpected 'newline' |
| sush | 6 Incomplete for [sush stdout] Expected u'' Got 'hi\nstatus=0\n' [sush status] Expected 2 Got 0 stdout: hi status=0stderr: |
| brush | 6 Incomplete for [brush stdout] Expected u'' Got 'status=2\n' [brush status] Expected 2 Got 0 stdout: status=2stderr: [31merror:[39m main: syntax error near token ` ' (line 1 col 13) |
| zsh | 7 Incomplete if [zsh status] Expected 2 Got 1 stdout: stderr: zsh: parse error near `\n' |
| mksh | 7 Incomplete if stdout: stderr: mksh: <stdin>[1]: syntax error: 'if' unmatched |
| ksh | 7 Incomplete if [ksh status] Expected 2 Got 1 stdout: stderr: E: ksh: <stdin>[1]: syntax error: unmatched 'if' |
| zsh | 8 do unexpected [zsh status] Expected 2 Got 1 stdout: stderr: zsh: parse error near `do' |
| mksh | 8 do unexpected stdout: stderr: mksh: <stdin>[1]: syntax error: 'do' unexpected |
| ksh | 8 do unexpected [ksh status] Expected 2 Got 1 stdout: stderr: E: ksh: <stdin>[1]: syntax error: unexpected 'do' |
| zsh | 9 } is a parse error [zsh stdout] Expected u'' Got 'should not get here\n' [zsh status] Expected 2 Got 0 stdout: should not get herestderr: zsh: parse error near `}' |
| mksh | 9 } is a parse error stdout: stderr: mksh: <stdin>[1]: syntax error: '}' unexpected |
| ksh | 9 } is a parse error [ksh status] Expected 2 Got 1 stdout: stderr: E: ksh: <stdin>[1]: syntax error: unexpected '}' |
| sush | 9 } is a parse error [sush stdout] Expected u'' Got 'should not get here\n' [sush status] Expected 2 Got 0 stdout: should not get herestderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 2: syntax error near unexpected token: } |
| brush | 9 } is a parse error [brush stdout] Expected u'' Got 'should not get here\n' [brush status] Expected 2 Got 0 stdout: should not get herestderr: [31merror:[39m main: syntax error near token ` ' (line 1 col 2) |
| zsh | 10 { is its own word, needs a space [zsh stdout] Expected u'' Got 'status=0\n' [zsh status] Expected 2 Got 0 stdout: status=0stderr: |
| mksh | 10 { is its own word, needs a space stdout: stderr: mksh: <stdin>[1]: syntax error: '}' unexpected |
| ksh | 10 { is its own word, needs a space [ksh status] Expected 2 Got 1 stdout: stderr: E: ksh: <stdin>[1]: syntax error: unexpected '}' |
| sush | 10 { is its own word, needs a space [sush stdout] Expected u'' Got 'status=2\n' [sush status] Expected 2 Got 0 stdout: status=2stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 2: syntax error near unexpected token: } |
| brush | 10 { is its own word, needs a space [brush stdout] Expected u'' Got 'status=2\n' [brush status] Expected 2 Got 0 stdout: status=2stderr: [31merror:[39m main: syntax error near token ` ' (line 1 col 7) |
| zsh | 11 } on the second line [zsh status] Expected 127 Got 0 stdout: stderr: |
| toysh | 11 } on the second line [toysh status] Expected 127 Got 2 stdout: stderr: set: bad -o errexit
sh: {ls: No such file or directory
main: line 3: sh: syntax error: }
|
| sush | 11 } on the second line [sush status] Expected 127 Got 2 stdout: stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: set: errexit: invalid option name
/home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 2: {ls: command not found
/home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 4: syntax error near unexpected token: }
|
| brush | 11 } on the second line [brush status] Expected 127 Got 2 stdout: stderr: [31merror:[39m command not found: {ls
[31merror:[39m main: syntax error near token `
' (line 1 col 2)
|
| bash | 12 Invalid for loop variable name stdout: donestderr: bash: line 3: `i.j': not a valid identifier |
| zsh | 12 Invalid for loop variable name [zsh stdout] Expected u'' Got 'hi\ndone\n' [zsh status] Expected 2 Got 0 stdout: hi donestderr: zsh: parse error near `i.j' zsh: parse error near `done' |
| mksh | 12 Invalid for loop variable name stdout: stderr: mksh: <stdin>[1]: for: bad identifier |
| ksh | 12 Invalid for loop variable name [ksh status] Expected 2 Got 1 stdout: stderr: E: ksh: <stdin>[1]: for: bad identifier |
| sush | 12 Invalid for loop variable name [sush stdout] Expected u'' Got 'hi\ndone\n' [sush status] Expected 2 Got 0 stdout: hi donestderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 2: syntax error near unexpected token: .j /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 4: syntax error near unexpected token: done |
| brush | 12 Invalid for loop variable name [brush stdout] Expected u'' Got 'hi\nhi\nhi\ndone\n' [brush status] Expected 2 Got 0 stdout: hi hi hi donestderr: |
| dash | 14 bad var name in export stdout: stderr: dash: 1: export: FOO-BAR: bad variable name |
| ash | 14 bad var name in export [ash status] Expected 1 Got 2 stdout: stderr: ash: export: line 1: FOO-BAR: bad variable name |
| sush | 14 bad var name in export [sush status] Expected 1 Got 0 stdout: stderr: |
| brush | 14 bad var name in export [brush status] Expected 1 Got 0 stdout: stderr: |
| dash | 15 bad var name in local stdout: stderr: dash: 2: FOO-BAR: bad variable name |
| ash | 15 bad var name in local [ash status] Expected 1 Got 2 stdout: stderr: ash: FOO-BAR: bad variable name |
| sush | 15 bad var name in local [sush status] Expected 1 Got 0 stdout: stderr: |
| zsh | 16 misplaced parentheses are not a subshell [zsh status] Expected 2 Got 1 stdout: stderr: zsh: unknown file attribute: b |
| mksh | 16 misplaced parentheses are not a subshell stdout: stderr: mksh: <stdin>[1]: syntax error: '(' unexpected
|
| ksh | 16 misplaced parentheses are not a subshell [ksh status] Expected 2 Got 1 stdout: stderr: E: ksh: <stdin>[1]: syntax error: unexpected '('
|
| zsh | 17 incomplete command sub [zsh status] Expected 2 Got 1 stdout: stderr: zsh: parse error near `$(x' |
| mksh | 17 incomplete command sub stdout: stderr: mksh: <stdin>[1]: syntax error: '(' unmatched
|
| ksh | 17 incomplete command sub [ksh status] Expected 2 Got 1 stdout: stderr: E: ksh: <stdin>[1]: syntax error: unmatched '('
|
| zsh | 18 incomplete backticks [zsh status] Expected 2 Got 1 stdout: stderr: zsh: unmatched ` |
| mksh | 18 incomplete backticks stdout: stderr: mksh: <stdin>[2]: no closing quote |
| ksh | 18 incomplete backticks [ksh status] Expected 2 Got 1 stdout: stderr: E: ksh: <stdin>[2]: no closing quote |
| zsh | 19 misplaced ;; [zsh status] Expected 2 Got 1 stdout: stderr: zsh: parse error near `;;' |
| mksh | 19 misplaced ;; stdout: stderr: mksh: <stdin>[1]: syntax error: ';;' unexpected |
| ksh | 19 misplaced ;; [ksh status] Expected 2 Got 1 stdout: stderr: E: ksh: <stdin>[1]: syntax error: unexpected ';;' |
| dash | 20 empty clause in [[ stdout: stderr: dash: 1: [[: not found |
| zsh | 20 empty clause in [[ [zsh status] Expected 2 Got 1 stdout: stderr: zsh: parse error near `||' |
| mksh | 20 empty clause in [[ stdout: stderr: mksh: <stdin>[1]: syntax error: '||' expression expected |
| ksh | 20 empty clause in [[ [ksh status] Expected 2 Got 1 stdout: stderr: E: ksh: <stdin>[1]: syntax error: expression expected '||' |
| toysh | 20 empty clause in [[ [toysh status] Expected 2 Got -11 stdout: stderr: |
| brush | 20 empty clause in [[ [brush status] Expected 2 Got 0 stdout: stderr: [31merror:[39m main: syntax error near token `||' (line 1 col 4) |
| toysh | 21 interactive parse error (regression) [toysh status] Expected 2 Got -6 stdout: stderr: munmap_chunk(): invalid pointer |
| brush | 21 interactive parse error (regression) [brush status] Expected 2 Got 0 stdout: stderr: [31merror:[39m main: syntax error near token `)' (line 1 col 5) |
| bash | 22 array literal inside array is a parse error stdout: len=0stderr: bash: line 1: syntax error near unexpected token `('
bash: line 1: `a=( inside=() )'
|
| zsh | 22 array literal inside array is a parse error [zsh stdout] Expected u'' Got 'len=0\n' [zsh status] Expected 2 Got 0 stdout: len=0stderr: zsh: parse error near `()' |
| mksh | 22 array literal inside array is a parse error stdout: stderr: mksh: <stdin>[1]: syntax error: '(' unexpected
|
| ksh | 22 array literal inside array is a parse error [ksh status] Expected 2 Got 1 stdout: stderr: E: ksh: <stdin>[1]: syntax error: unexpected '('
|
| sush | 22 array literal inside array is a parse error [sush stdout] Expected u'' Got 'len=0\n' [sush status] Expected 2 Got 0 stdout: len=0stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: syntax error near unexpected token `)' /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: `a=( inside=() )' |
| brush | 22 array literal inside array is a parse error [brush stdout] Expected u'' Got 'len=0\n' [brush status] Expected 2 Got 0 stdout: len=0stderr: [31merror:[39m main: syntax error near token `(' (line 1 col 12)
|
| osh | 22 array literal inside array is a parse error [osh status] Expected 2 Got 1 stdout: stderr: a=( inside=() )
^
[ stdin ]:1: fatal: Unexpected associative array literal
|
| zsh | 23 array literal inside loop is a parse error [zsh stdout] Expected u'' Got 'x=\ndone\n' [zsh status] Expected 2 Got 127 stdout: x= donestderr: zsh: parse error near `()' zsh: parse error near `done' zsh: parse error near `}' zsh: command not found: f |
| mksh | 23 array literal inside loop is a parse error stdout: stderr: mksh: <stdin>[2]: syntax error: '(' unexpected
|
| ksh | 23 array literal inside loop is a parse error [ksh status] Expected 2 Got 1 stdout: stderr: E: ksh: <stdin>[2]: syntax error: unexpected '('
|
| sush | 23 array literal inside loop is a parse error [sush stdout] Expected u'' Got 'x=\ndone\n' [sush status] Expected 2 Got 127 stdout: x= donestderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 3: syntax error near unexpected token: (); /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 7: syntax error near unexpected token: done /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 9: syntax error near unexpected token: } /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 9: f: command not found |
| brush | 23 array literal inside loop is a parse error [brush stdout] Expected u'' Got 'x=\ndone\n' [brush status] Expected 2 Got 127 stdout: x= donestderr: [31merror:[39m main: syntax error near token `(' (line 2 col 14)
[31merror:[39m main: syntax error near token `
' (line 1 col 7)
[31merror:[39m main: syntax error near token `
' (line 1 col 2)
[31merror:[39m command not found: f
|
| osh | 23 array literal inside loop is a parse error [osh status] Expected 2 Got 1 stdout: stderr: for x in a=(); do
^
[ stdin ]:2: fatal: Unexpected associative array literal
|
| zsh | 24 array literal in case [zsh stdout] Expected u'' Got 'hi\n' [zsh status] Expected 2 Got 127 stdout: histderr: zsh: parse error near `()' zsh: parse error near `)' zsh: parse error near `;;' zsh: parse error near `esac' zsh: parse error near `}' zsh: command not found: f |
| mksh | 24 array literal in case stdout: stderr: mksh: <stdin>[2]: syntax error: '(' unexpected
|
| ksh | 24 array literal in case [ksh status] Expected 2 Got 1 stdout: stderr: E: ksh: <stdin>[2]: syntax error: unexpected '('
|
| sush | 24 array literal in case [sush stdout] Expected u'' Got 'hi\n' [sush status] Expected 2 Got 127 stdout: histderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 3: syntax error near unexpected token: () /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 6: syntax error near unexpected token: ) /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 8: syntax error near unexpected token: ;; /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 9: syntax error near unexpected token: esac /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 10: syntax error near unexpected token: } /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 10: f: command not found |
| brush | 24 array literal in case [brush stdout] Expected u'' Got 'hi\n' [brush status] Expected 2 Got 127 stdout: histderr: [31merror:[39m main: syntax error near token `(' (line 2 col 10)
[31merror:[39m main: syntax error near token `)' (line 1 col 8)
[31merror:[39m main: syntax error near token `;;' (line 1 col 7)
[31merror:[39m main: syntax error near token `
' (line 1 col 7)
[31merror:[39m main: syntax error near token `
' (line 1 col 2)
[31merror:[39m command not found: f
|
| osh | 24 array literal in case [osh status] Expected 2 Got 1 stdout: stderr: case a=() in
^
[ stdin ]:2: fatal: Unexpected associative array literal
|
| zsh | 25 %foo=() is parse error (regression) [zsh status] Expected 2 Got 1 stdout: stderr: zsh: parse error near `}' |
| mksh | 25 %foo=() is parse error (regression) stdout: stderr: mksh: <stdin>[2]: %foo=: invalid function name |
| ksh | 25 %foo=() is parse error (regression) [ksh status] Expected 2 Got 1 stdout: stderr: E: ksh: <stdin>[2]: %foo=: invalid function name |
| zsh | 26 echo =word is allowed [zsh stdout] Expected '=word\n' Got '' [zsh status] Expected 0 Got 1 stdout: stderr: zsh: word not found |