status | bash | dash | ash | zsh | mksh | ksh | toysh | sush | brush | osh | |
pass | 33 | 31 | 32 | 27 | 32 | 32 | 22 | 23 | 31 | 31 | |
ok | 0 | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 1 | |
N-I | 0 | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
BUG | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
FAIL | 0 | 0 | 2 | 7 | 0 | 2 | 12 | 11 | 3 | 2 | |
total | 34 | 34 | 34 | 34 | 34 | 34 | 34 | 34 | 34 | 34 | |
case | bash | dash | ash | zsh | mksh | ksh | toysh | sush | brush | osh | description |
0 | pass | N-I | FAIL | pass | pass | pass | pass | pass | pass | pass | Here string |
details | details | ||||||||||
1 | pass | N-I | FAIL | pass | pass | pass | pass | pass | pass | pass | Here string with $ |
details | details | ||||||||||
2 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Here redirect with explicit descriptor |
3 | pass | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | Here doc from another input file descriptor |
details | |||||||||||
4 | pass | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | Multiple here docs with different descriptors |
details | |||||||||||
5 | pass | pass | pass | pass | pass | pass | pass | FAIL | FAIL | ok | Here doc with bad var delimiter |
details | details | details | |||||||||
6 | BUG | pass | pass | FAIL | ok | FAIL | FAIL | pass | pass | pass | Here doc with bad comsub delimiter |
details | details | details | details | details | |||||||
7 | pass | pass | pass | FAIL | pass | pass | FAIL | pass | pass | pass | Here doc and < redirect -- last one wins |
details | details | ||||||||||
8 | pass | pass | pass | FAIL | pass | pass | FAIL | pass | pass | pass | < redirect and here doc -- last one wins |
details | details | ||||||||||
9 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Here doc with var sub, command sub, arith sub |
10 | pass | pass | pass | pass | pass | pass | pass | pass | FAIL | pass | Here doc in middle. And redirects in the middle. |
details | |||||||||||
11 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Here doc line continuation |
12 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Here doc with quote expansion in terminator |
13 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Here doc with multiline double quoted string |
14 | pass | pass | pass | FAIL | pass | pass | FAIL | pass | pass | pass | Two here docs -- first is ignored; second ones wins! |
details | details | ||||||||||
15 | pass | pass | pass | FAIL | ok | FAIL | pass | pass | pass | pass | Here doc with line continuation, then pipe. Syntax error. |
details | details | details | |||||||||
16 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Here doc with pipe on first line |
17 | pass | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | Here doc with pipe continued on last line |
details | |||||||||||
18 | pass | pass | pass | FAIL | pass | pass | FAIL | pass | pass | pass | Here doc with builtin 'read' |
details | details | ||||||||||
19 | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | pass | Compound command here doc |
details | |||||||||||
20 | pass | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | Here doc in while condition and here doc in body |
details | |||||||||||
21 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Here doc in while condition and here doc in body on multiple lines |
22 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Here doc in while loop split up more |
23 | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | pass | Mixing << and <<- |
details | |||||||||||
24 | pass | pass | pass | FAIL | pass | pass | FAIL | pass | pass | pass | Two compound commands with two here docs |
details | details | ||||||||||
25 | pass | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | Function def and execution with here doc |
details | |||||||||||
26 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | Here doc as command prefix |
27 | pass | pass | pass | pass | pass | pass | pass | pass | FAIL | pass | Redirect after here doc |
details | |||||||||||
28 | pass | pass | pass | pass | pass | pass | FAIL | FAIL | pass | pass | here doc stripping tabs |
details | details | ||||||||||
29 | pass | N-I | pass | pass | pass | pass | pass | pass | pass | pass | Here doc within subshell with boolean |
details | |||||||||||
30 | pass | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | Here Doc in if condition |
details | |||||||||||
31 | pass | pass | pass | pass | pass | pass | FAIL | FAIL | pass | pass | Nested here docs which are indented |
details | details | ||||||||||
32 | pass | pass | pass | pass | pass | pass | FAIL | FAIL | pass | FAIL | Multiple here docs in pipeline |
details | details | details | |||||||||
33 | pass | pass | pass | pass | pass | pass | FAIL | FAIL | pass | FAIL | Multiple here docs in pipeline on multiple lines |
details | details | details |
294 passed, 3 OK, 3 not implemented, 1 BUG, 39 failed, 0 timeouts, 0 cases skipped 2 failed under osh
dash | 0 Here string stdout: stderr: dash: 1: Syntax error: redirection unexpected |
ash | 0 Here string [ash stdout] Expected 'hi\n', got '' [ash status] Expected 0, got 2 stdout: stderr: ash: syntax error: unexpected redirection |
dash | 1 Here string with $ stdout: stderr: dash: 1: Syntax error: redirection unexpected |
ash | 1 Here string with $ [ash stdout] Expected 'one\ntwo\n\n', got '' [ash status] Expected 0, got 2 stdout: stderr: ash: syntax error: unexpected redirection |
sush | 3 Here doc from another input file descriptor [sush stdout] Expected '8: here doc on descriptor\n', got '' [sush status] Expected 0, got 1 stdout: stderr: FATAL: Error reading from fd 8: [Errno 9] Bad file descriptor |
sush | 4 Multiple here docs with different descriptors [sush stdout] Expected '0: fd0\n3: fd3\n', got '0: fd3\n' [sush status] Expected 0, got 1 stdout: 0: fd3stderr: FATAL: Error reading from fd 3: [Errno 9] Bad file descriptor |
sush | 5 Here doc with bad var delimiter [sush stdout] Expected 'here\n', got '' [sush status] Expected 0, got 2 stdout: stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line : syntax error: unexpected end of file |
brush | 5 Here doc with bad var delimiter [brush stdout] Expected 'here\n', got '' [brush status] Expected 0, got 2 stdout: stderr: [31mERROR[0m main: unterminated here document sequence; tag(s) [a] found at: [line 1 col 10] (detected near line 4 column 1) |
osh | 5 Here doc with bad var delimiter stdout: stderr: cat <<${a} ^~ [ stdin ]:1: Invalid here doc delimiter |
bash | 6 Here doc with bad comsub delimiter stdout: herestderr: |
zsh | 6 Here doc with bad comsub delimiter [zsh stdout] Expected u'', got 'here\n' [zsh status] Expected 2, got 0 stdout: herestderr: |
mksh | 6 Here doc with bad comsub delimiter stdout: stderr: mksh: <stdin>[1]: syntax error: '(' unexpected |
ksh | 6 Here doc with bad comsub delimiter [ksh status] Expected 2, got 1 stdout: stderr: E: ksh: <stdin>[1]: syntax error: unexpected '(' |
toysh | 6 Here doc with bad comsub delimiter [toysh stdout] Expected u'', got 'here\n' [toysh status] Expected 2, got 0 stdout: herestderr: |
zsh | 7 Here doc and < redirect -- last one wins [zsh stdout] Expected 'hello\n', got 'here\nhello\n' stdout: here hellostderr: |
toysh | 7 Here doc and < redirect -- last one wins [toysh status] Expected 0, got 127 stdout: hellostderr: sh: here: No such file or directory |
zsh | 8 < redirect and here doc -- last one wins [zsh stdout] Expected 'here\n', got 'hello\nhere\n' stdout: hello herestderr: |
toysh | 8 < redirect and here doc -- last one wins [toysh status] Expected 0, got 127 stdout: herestderr: sh: hello: No such file or directory |
brush | 10 Here doc in middle. And redirects in the middle. [brush stderr] Expected 'foo\nhere\nbar\n', got '' stdout: foo here barstderr: |
zsh | 14 Two here docs -- first is ignored; second ones wins! [zsh stdout] Expected 'there\n', got 'hello\nthere\n' stdout: hello therestderr: |
toysh | 14 Two here docs -- first is ignored; second ones wins! [toysh status] Expected 0, got 127 stdout: therestderr: sh: hello: No such file or directory |
zsh | 15 Here doc with line continuation, then pipe. Syntax error. [zsh status] Expected 2, got 1 stdout: stderr: cat: 1: No such file or directory zsh: parse error near `|' |
mksh | 15 Here doc with line continuation, then pipe. Syntax error. stdout: stderr: mksh: <stdin>[5]: cat: 1: No such file or directory mksh: <stdin>[6]: syntax error: '|' unexpected |
ksh | 15 Here doc with line continuation, then pipe. Syntax error. [ksh status] Expected 2, got 1 stdout: stderr: cat: 1: No such file or directory E: ksh: <stdin>[6]: syntax error: unexpected '|' |
sush | 17 Here doc with pipe continued on last line [sush stdout] Expected '3\n2\n1\n', got '' stdout: stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 2: 1: command not found |
zsh | 18 Here doc with builtin 'read' [zsh stdout] Expected '=val1= =val2=\n', got '' [zsh status] Expected 0, got 1 stdout: stderr: zsh: val1= not found |
toysh | 18 Here doc with builtin 'read' [toysh stdout] Expected '=val1= =val2=\n', got '== ==\n' stdout: == ==stderr: sh: read: No such file or directory |
toysh | 19 Compound command here doc [toysh stdout] Expected 'X 1\nX 2\nX 3\n', got '' [toysh status] Expected 0, got 127 stdout: stderr: 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 | 20 Here doc in while condition and here doc in body [sush stdout] Expected '1\n2\n3\n', got '' [sush status] Expected 0, got 127 stdout: stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 6: Unexpected token: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 6: 3: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 7: E3: command not found |
toysh | 23 Mixing << and <<- [toysh stdout] Expected 'one\n--\ntwo\n', got 'one\n\ntwo\n' stdout: one twostderr: |
zsh | 24 Two compound commands with two here docs [zsh stdout] Expected 'X 1\nX 2\n==\nY 3\nY 4\n', got 'X 1\nX 2\n' [zsh status] Expected 0, got 1 stdout: X 1 X 2stderr: zsh: = not found |
toysh | 24 Two compound commands with two here docs [toysh stdout] Expected 'X 1\nX 2\n==\nY 3\nY 4\n', got '==\n' [toysh status] Expected 0, got 127 stdout: ==stderr: sh: read: No such file or directory sh: read: No such file or directory sh: 3: No such file or directory sh: 4: No such file or directory |
sush | 25 Function def and execution with here doc [sush stdout] Expected 'before\n1\n2\nafter\n', got 'before\nafter\n' [sush status] Expected 0, got 127 stdout: before afterstderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 2: 1: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 3: 2: command not found /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 4: EOF: command not found |
brush | 27 Redirect after here doc [brush stderr] Expected 'out\n', got '' stdout: outstderr: |
toysh | 28 here doc stripping tabs [toysh stdout] Expected '1\n2\n3 # 2 tabs are both stripped\n 4 # spaces are preserved\n' Got '' [toysh status] Expected 0, got 1 stdout: stderr: main: line 1: sh: <<EOF EOF cat: -: Bad file descriptor cat: closing standard input: Bad file descriptor |
sush | 28 here doc stripping tabs [sush stdout] Expected '1\n2\n3 # 2 tabs are both stripped\n 4 # spaces are preserved\n' Got '1\n2\n\t3 # 2 tabs are both stripped\n 4 # spaces are preserved\n' stdout: 1 2 3 # 2 tabs are both stripped 4 # spaces are preservedstderr: |
dash | 29 Here doc within subshell with boolean stdout: 127stderr: dash: 1: [[: not found |
sush | 30 Here Doc in if condition [sush stdout] Expected 'here doc in IF CONDITION\nTHEN executed\n', got 'THEN executed\n' [sush status] Expected 0, got 2 stdout: THEN executedstderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 4: Unexpected token: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 6: Unexpected token: fi |
toysh | 31 Nested here docs which are indented [toysh stdout] Expected 'outside\ninside\n', got 'outside\ninside\nINSIDE\n)\n' stdout: outside inside INSIDE )stderr: main: line 1: sh: <<INSIDE EOF |
sush | 31 Nested here docs which are indented [sush stdout] Expected 'outside\ninside\n', got 'outside\n\tinside\n' stdout: outside insidestderr: |
toysh | 32 Multiple here docs in pipeline [toysh stdout] Expected '0: 3: fd3\n5: fd5\nok\n', got '' [toysh status] Expected 0, got -6 stdout: stderr: munmap_chunk(): invalid pointer |
sush | 32 Multiple here docs in pipeline [sush stdout] Expected '0: 3: fd3\n5: fd5\nok\n', got '0: fd5\nok\n' stdout: 0: fd5 okstderr: FATAL: Error reading from fd 3: [Errno 9] Bad file descriptor FATAL: Error reading from fd 5: [Errno 9] Bad file descriptor |
osh | 32 Multiple here docs in pipeline [osh stdout] Expected '0: 3: fd3\n5: fd5\nok\n', got '' stdout: stderr: |
toysh | 33 Multiple here docs in pipeline on multiple lines [toysh stdout] Expected '0: 3: fd3\n5: fd5\nok\n', got '' [toysh status] Expected 0, got -6 stdout: stderr: munmap_chunk(): invalid pointer |
sush | 33 Multiple here docs in pipeline on multiple lines [sush stdout] Expected '0: 3: fd3\n5: fd5\nok\n', got '0: fd5\nok\n' stdout: 0: fd5 okstderr: FATAL: Error reading from fd 3: [Errno 9] Bad file descriptor /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 4: fd3: command not found FATAL: Error reading from fd 5: [Errno 9] Bad file descriptor |
osh | 33 Multiple here docs in pipeline on multiple lines [osh stdout] Expected '0: 3: fd3\n5: fd5\nok\n', got '' stdout: stderr: |