status | bash | dash | ash | zsh | mksh | ksh | toysh | sush | brush | osh | |
pass | 49 | 7 | 19 | 35 | 36 | 36 | 17 | 36 | 40 | 50 | |
ok | 0 | 0 | 0 | 1 | 7 | 0 | 0 | 0 | 0 | 0 | |
N-I | 0 | 0 | 0 | 0 | 5 | 0 | 0 | 0 | 0 | 0 | |
BUG | 1 | 0 | 0 | 1 | 2 | 0 | 0 | 0 | 0 | 0 | |
FAIL | 0 | 43 | 31 | 13 | 0 | 14 | 33 | 14 | 10 | 0 | |
total | 50 | 50 | 50 | 50 | 50 | 50 | 50 | 50 | 50 | 50 | |
case | bash | dash | ash | zsh | mksh | ksh | toysh | sush | brush | osh | description |
0 | pass | FAIL | pass | pass | pass | pass | FAIL | pass | pass | pass | [[ glob matching, [[ has no glob expansion |
details | details | ||||||||||
1 | pass | FAIL | pass | pass | pass | pass | FAIL | pass | pass | pass | [[ glob matching with escapes |
details | details | ||||||||||
2 | pass | FAIL | FAIL | pass | pass | pass | pass | pass | pass | pass | equality |
details | details | ||||||||||
3 | pass | FAIL | pass | FAIL | pass | pass | FAIL | pass | pass | pass | [[ glob matching with unquoted var |
details | details | details | |||||||||
4 | pass | FAIL | pass | pass | N-I | FAIL | pass | pass | pass | pass | [[ regex matching |
details | details | details | |||||||||
5 | pass | FAIL | FAIL | FAIL | N-I | FAIL | FAIL | pass | FAIL | pass | [[ regex syntax error |
details | details | details | details | details | details | details | |||||
6 | pass | FAIL | FAIL | pass | pass | pass | pass | pass | pass | pass | [[ has no word splitting |
details | details | ||||||||||
7 | pass | FAIL | FAIL | pass | pass | pass | pass | pass | pass | pass | [[ has quote joining |
details | details | ||||||||||
8 | pass | FAIL | pass | pass | pass | pass | pass | pass | pass | pass | [[ empty string is false |
details | |||||||||||
9 | pass | pass | pass | pass | pass | pass | FAIL | pass | pass | pass | && chain |
details | |||||||||||
10 | pass | FAIL | pass | pass | pass | pass | FAIL | pass | pass | pass | || chain |
details | details | ||||||||||
11 | pass | FAIL | FAIL | pass | pass | pass | FAIL | pass | pass | pass | [[ compound expressions |
details | details | details | |||||||||
12 | pass | FAIL | pass | pass | pass | pass | FAIL | FAIL | pass | pass | precedence of && and || inside [[ |
details | details | details | |||||||||
13 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | precedence of && and || in a command context |
14 | pass | FAIL | FAIL | FAIL | N-I | FAIL | pass | pass | pass | pass | Octal literals with -eq |
details | details | details | details | details | |||||||
15 | pass | FAIL | FAIL | pass | N-I | FAIL | pass | pass | pass | pass | Hex literals with -eq |
details | details | details | details | ||||||||
16 | pass | FAIL | FAIL | pass | pass | pass | pass | pass | pass | pass | > on strings |
details | details | ||||||||||
17 | pass | FAIL | pass | pass | pass | pass | pass | pass | pass | pass | != on strings |
details | |||||||||||
18 | pass | FAIL | FAIL | pass | pass | pass | FAIL | pass | pass | pass | -eq on strings |
details | details | details | |||||||||
19 | pass | FAIL | pass | pass | pass | pass | pass | pass | pass | pass | [[ compare with literal -f (compare with test-builtin.test.sh) |
details | |||||||||||
20 | pass | FAIL | FAIL | FAIL | ok | FAIL | FAIL | FAIL | pass | pass | [[ with op variable (compare with test-builtin.test.sh) |
details | details | details | details | details | details | details | |||||
21 | pass | FAIL | FAIL | pass | pass | pass | FAIL | pass | pass | pass | [[ with unquoted empty var (compare with test-builtin.test.sh) |
details | details | details | |||||||||
22 | pass | pass | FAIL | FAIL | pass | pass | FAIL | pass | pass | pass | [[ at runtime doesn't work |
details | details | details | |||||||||
23 | pass | pass | FAIL | FAIL | pass | pass | FAIL | FAIL | FAIL | pass | [[ with env prefix doesn't work |
details | details | details | details | details | |||||||
24 | pass | FAIL | FAIL | pass | pass | pass | FAIL | pass | pass | pass | [[ over multiple lines is OK |
details | details | details | |||||||||
25 | pass | pass | pass | FAIL | pass | pass | pass | pass | FAIL | pass | Argument that looks like a command word operator |
details | details | ||||||||||
26 | pass | FAIL | FAIL | FAIL | ok | FAIL | FAIL | pass | pass | pass | Argument that looks like a real operator |
details | details | details | details | details | details | ||||||
27 | pass | FAIL | FAIL | pass | pass | pass | FAIL | pass | pass | pass | User array compared to "$@" (broken unless shopt -s strict_array) |
details | details | details | |||||||||
28 | pass | FAIL | FAIL | pass | pass | pass | FAIL | pass | pass | pass | Array coerces to string (shopt -s strict_array to disallow) |
details | details | details | |||||||||
29 | BUG | FAIL | FAIL | FAIL | pass | pass | FAIL | FAIL | FAIL | pass | (( array1 == array2 )) doesn't work |
details | details | details | details | details | details | details | |||||
30 | pass | FAIL | pass | pass | pass | pass | pass | pass | pass | pass | Quotes don't matter in comparison |
details | |||||||||||
31 | pass | FAIL | FAIL | pass | pass | pass | FAIL | pass | pass | pass | -eq does dynamic arithmetic parsing (not supported in OSH) |
details | details | details | |||||||||
32 | pass | FAIL | FAIL | pass | pass | pass | FAIL | pass | pass | pass | -eq coercion produces weird results |
details | details | details | |||||||||
33 | pass | FAIL | pass | pass | pass | pass | FAIL | pass | pass | pass | [[ '(' ]] is treated as literal |
details | details | ||||||||||
34 | pass | FAIL | FAIL | FAIL | ok | FAIL | FAIL | FAIL | FAIL | pass | [[ '(' foo ]] is syntax error |
details | details | details | details | details | details | details | details | ||||
35 | pass | FAIL | pass | pass | pass | pass | FAIL | pass | pass | pass | empty ! is treated as literal |
details | details | ||||||||||
36 | pass | FAIL | FAIL | pass | ok | FAIL | FAIL | FAIL | pass | pass | [[ -z ]] is syntax error |
details | details | details | details | details | details | ||||||
37 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | [[ -z '>' ]] |
38 | pass | FAIL | FAIL | pass | ok | FAIL | FAIL | FAIL | FAIL | pass | [[ -z '>' a ]] is syntax error |
details | details | details | details | details | details | details | |||||
39 | pass | pass | pass | pass | pass | pass | pass | pass | pass | pass | test whether ']]' is empty |
40 | pass | FAIL | FAIL | FAIL | ok | FAIL | FAIL | FAIL | pass | pass | [[ ]] is syntax error |
details | details | details | details | details | details | details | |||||
41 | pass | FAIL | FAIL | FAIL | ok | FAIL | pass | FAIL | FAIL | pass | [[ && ]] is syntax error |
details | details | details | details | details | details | details | |||||
42 | pass | FAIL | FAIL | BUG | BUG | FAIL | FAIL | FAIL | FAIL | pass | [[ a 3< b ]] doesn't work (bug regression) |
details | details | details | details | details | details | details | details | ||||
43 | pass | FAIL | pass | pass | pass | pass | FAIL | pass | pass | pass | tilde expansion in [[ |
details | details | ||||||||||
44 | pass | FAIL | FAIL | pass | pass | pass | FAIL | FAIL | pass | pass | more tilde expansion |
details | details | details | details | ||||||||
45 | pass | FAIL | FAIL | ok | N-I | FAIL | FAIL | FAIL | pass | pass | tilde expansion with =~ (confusing) |
details | details | details | details | details | details | details | |||||
46 | pass | FAIL | FAIL | pass | pass | pass | FAIL | pass | FAIL | pass | [[ ]] with redirect |
details | details | details | details | ||||||||
47 | pass | FAIL | pass | pass | pass | pass | pass | FAIL | pass | pass | special chars |
details | details | ||||||||||
48 | pass | FAIL | FAIL | pass | pass | pass | FAIL | FAIL | pass | pass | \(\) in pattern (regression) |
details | details | details | details | ||||||||
49 | pass | FAIL | FAIL | FAIL | BUG | FAIL | FAIL | pass | FAIL | pass | negative numbers - zero, decimal, octal, hex, base N |
details | details | details | details | details | details | details |
325 passed, 8 OK, 5 not implemented, 4 BUG, 158 failed, 0 timeouts, 0 cases skipped
dash | 0 [[ glob matching, [[ has no glob expansion [dash stdout] Expected 'true\nfalse\n', got 'false\n' stdout: falsestderr: dash: 1: [[: not found dash: 2: [[: not found |
toysh | 0 [[ glob matching, [[ has no glob expansion [toysh stdout] Expected 'true\nfalse\n', got 'false\n' stdout: falsestderr: |
dash | 1 [[ glob matching with escapes [dash stdout] Expected 'true\n', got '' [dash status] Expected 0, got 127 stdout: stderr: dash: 1: [[: not found |
toysh | 1 [[ glob matching with escapes [toysh stdout] Expected 'true\n', got '' [toysh status] Expected 0, got 1 stdout: stderr: |
dash | 2 equality [dash stdout] Expected 'true\nfalse\n', got 'false\n' stdout: falsestderr: dash: 1: [[: not found dash: 2: [[: not found |
ash | 2 equality [ash stdout] Expected 'true\nfalse\n', got 'true\n' stdout: truestderr: |
dash | 3 [[ glob matching with unquoted var [dash stdout] Expected 'true\nfalse\n', got 'false\n' stdout: falsestderr: dash: 2: [[: not found dash: 3: [[: not found |
zsh | 3 [[ glob matching with unquoted var [zsh stdout] Expected 'true\nfalse\n', got 'false\n' stdout: falsestderr: |
toysh | 3 [[ glob matching with unquoted var [toysh stdout] Expected 'true\nfalse\n', got 'false\n' stdout: falsestderr: |
dash | 4 [[ regex matching [dash stdout] Expected 'true\nfalse\n', got 'false\n' stdout: falsestderr: dash: 2: [[: not found dash: 3: [[: not found |
mksh | 4 [[ regex matching stdout: stderr: mksh: <stdin>[2]: syntax error: '=~' unexpected operator/operand |
ksh | 4 [[ regex matching [ksh stdout] Expected 'true\nfalse\n', got '' [ksh status] Expected 0, got 1 stdout: stderr: E: ksh: <stdin>[2]: syntax error: unexpected operator/operand '=~' |
dash | 5 [[ regex syntax error [dash status] Expected 2, got 127 stdout: stderr: dash: 1: [[: not found |
ash | 5 [[ regex syntax error [ash status] Expected 2, got 1 stdout: stderr: |
zsh | 5 [[ regex syntax error [zsh status] Expected 2, got 1 stdout: stderr: zsh: failed to compile regex: Invalid preceding regular expression |
mksh | 5 [[ regex syntax error stdout: stderr: mksh: <stdin>[1]: syntax error: '=~' unexpected operator/operand |
ksh | 5 [[ regex syntax error [ksh status] Expected 2, got 1 stdout: stderr: E: ksh: <stdin>[1]: syntax error: unexpected operator/operand '=~' |
toysh | 5 [[ regex syntax error [toysh status] Expected 2, got 1 stdout: stderr: |
brush | 5 [[ regex syntax error [brush status] Expected 2, got 1 stdout: stderr: [33m WARN[0m error using regex: invalid regex: Parsing error at position 5: Target of repeat operator is invalid; expression: '(?ms)*' |
dash | 6 [[ has no word splitting [dash stdout] Expected 'true\n', got '' [dash status] Expected 0, got 127 stdout: stderr: dash: 2: [[: not found |
ash | 6 [[ has no word splitting [ash stdout] Expected 'true\n', got '' [ash status] Expected 0, got 2 stdout: stderr: ash: two: unknown operand |
dash | 7 [[ has quote joining [dash stdout] Expected 'true\n', got '' [dash status] Expected 0, got 127 stdout: stderr: dash: 2: [[: not found |
ash | 7 [[ has quote joining [ash stdout] Expected 'true\n', got '' [ash status] Expected 0, got 2 stdout: stderr: ash: two: unknown operand |
dash | 8 [[ empty string is false [dash stdout] Expected 'true\nfalse\n', got 'false\n' stdout: falsestderr: dash: 1: [[: not found dash: 2: [[: not found |
toysh | 9 && chain [toysh stdout] Expected 'false\n', got '' [toysh status] Expected 0, got -11 stdout: stderr: |
dash | 10 || chain [dash stdout] Expected 'true\n', got '' [dash status] Expected 0, got 127 stdout: stderr: dash: 1: [[: not found dash: 1: : Permission denied dash: 1: t: not found |
toysh | 10 || chain [toysh stdout] Expected 'true\n', got '' [toysh status] Expected 0, got -11 stdout: stderr: |
dash | 11 [[ compound expressions [dash stdout] Expected 'true\n', got '' [dash status] Expected 0, got 2 stdout: stderr: dash: 1: Syntax error: word unexpected |
ash | 11 [[ compound expressions [ash stdout] Expected 'true\n', got '' [ash status] Expected 0, got 2 stdout: stderr: ash: syntax error: unexpected "(" |
toysh | 11 [[ compound expressions [toysh stdout] Expected 'true\n', got '' [toysh status] Expected 0, got 2 stdout: stderr: main: line 1: sh: syntax error: 1 |
dash | 12 precedence of && and || inside [[ [dash stdout] Expected 'true\n', got '' [dash status] Expected 0, got 127 stdout: stderr: dash: 1: [[: not found dash: 1: : Permission denied |
toysh | 12 precedence of && and || inside [[ [toysh stdout] Expected 'true\n', got '' [toysh status] Expected 0, got -11 stdout: stderr: |
sush | 12 precedence of && and || inside [[ [sush stdout] Expected 'true\n', got '' [sush status] Expected 0, got 1 stdout: stderr: |
dash | 14 Octal literals with -eq [dash stdout] Expected 'true\nfalse\n', got 'false\n' stdout: falsestderr: dash: 1: shopt: not found dash: 4: [[: not found dash: 5: [[: not found |
ash | 14 Octal literals with -eq [ash stdout] Expected 'true\nfalse\n', got 'false\n' stdout: falsestderr: ash: shopt: not found ash: ZZZ017: bad number |
zsh | 14 Octal literals with -eq [zsh stdout] Expected 'true\nfalse\n', got 'false\n' stdout: falsestderr: zsh: command not found: shopt |
mksh | 14 Octal literals with -eq stdout: falsestderr: mksh: <stdin>[1]: shopt: not found |
ksh | 14 Octal literals with -eq [ksh stdout] Expected 'true\nfalse\n', got 'false\n' stdout: falsestderr: E: ksh: <stdin>[1]: shopt: inaccessible or not found |
dash | 15 Hex literals with -eq [dash stdout] Expected 'true\nfalse\n', got 'false\n' stdout: falsestderr: dash: 1: shopt: not found dash: 4: [[: not found dash: 5: [[: not found |
ash | 15 Hex literals with -eq [ash stdout] Expected 'true\nfalse\n', got 'false\n' stdout: falsestderr: ash: shopt: not found ash: 0x0f: bad number ash: ZZZ0x0f: bad number |
mksh | 15 Hex literals with -eq stdout: falsestderr: mksh: <stdin>[1]: shopt: not found mksh: <stdin>[4]: 0x0f: bad number '0x0f' |
ksh | 15 Hex literals with -eq [ksh stdout] Expected 'true\nfalse\n', got 'false\n' stdout: falsestderr: E: ksh: <stdin>[1]: shopt: inaccessible or not found W: ksh: <stdin>[4]: 0x0f: bad number: Invalid argument |
dash | 16 > on strings [dash stdout] Expected 'true\nfalse\n', got 'false\n' stdout: falsestderr: dash: 1: [[: not found dash: 2: [[: not found |
ash | 16 > on strings [ash stdout] Expected 'true\nfalse\n', got 'true\n' stdout: truestderr: |
dash | 17 != on strings [dash stdout] Expected 'true\nfalse\n', got 'false\n' stdout: falsestderr: dash: 1: [[: not found dash: 2: [[: not found |
dash | 18 -eq on strings [dash stdout] Expected 'true\ntrue\n', got '' [dash status] Expected 0, got 127 stdout: stderr: dash: 1: shopt: not found dash: 2: [[: not found dash: 3: [[: not found |
ash | 18 -eq on strings [ash stdout] Expected 'true\ntrue\n', got '' [ash status] Expected 0, got 2 stdout: stderr: ash: shopt: not found ash: a: bad number ash: a: bad number |
toysh | 18 -eq on strings [toysh stdout] Expected 'true\ntrue\n', got '' [toysh status] Expected 0, got 2 stdout: stderr: sh: shopt: No such file or directory [[: not integer: a [[: not integer: a |
dash | 19 [[ compare with literal -f (compare with test-builtin.test.sh) [dash stdout] Expected 'true\ntrue\n', got '' [dash status] Expected 0, got 127 stdout: stderr: dash: 2: [[: not found dash: 3: [[: not found |
dash | 20 [[ with op variable (compare with test-builtin.test.sh) [dash status] Expected 2, got 0 stdout: falsestderr: dash: 2: [[: not found dash: 3: [[: not found |
ash | 20 [[ with op variable (compare with test-builtin.test.sh) [ash status] Expected 2, got 0 stdout: true falsestderr: |
zsh | 20 [[ with op variable (compare with test-builtin.test.sh) [zsh status] Expected 2, got 1 stdout: stderr: zsh: condition expected: $op zsh: condition expected: $op |
mksh | 20 [[ with op variable (compare with test-builtin.test.sh) stdout: stderr: mksh: <stdin>[2]: syntax error: '$op' unexpected operator/operand |
ksh | 20 [[ with op variable (compare with test-builtin.test.sh) [ksh status] Expected 2, got 1 stdout: stderr: E: ksh: <stdin>[2]: syntax error: unexpected operator/operand '$op' |
toysh | 20 [[ with op variable (compare with test-builtin.test.sh) [toysh status] Expected 2, got 0 stdout: true falsestderr: |
sush | 20 [[ with op variable (compare with test-builtin.test.sh) [sush status] Expected 2, got 0 stdout: falsestderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 2: syntax error in conditional expression: unexpected token `a' /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 3: syntax error in conditional expression: unexpected token `a' |
dash | 21 [[ with unquoted empty var (compare with test-builtin.test.sh) [dash stdout] Expected 'true\n', got '' [dash status] Expected 0, got 127 stdout: stderr: dash: 2: [[: not found |
ash | 21 [[ with unquoted empty var (compare with test-builtin.test.sh) [ash stdout] Expected 'true\n', got '' [ash status] Expected 0, got 2 stdout: stderr: ash: : unknown operand |
toysh | 21 [[ with unquoted empty var (compare with test-builtin.test.sh) [toysh stdout] Expected 'true\n', got '' [toysh status] Expected 0, got 2 stdout: stderr: [[: too many arguments |
ash | 22 [[ at runtime doesn't work [ash status] Expected 127, got 0 stdout: stderr: |
zsh | 22 [[ at runtime doesn't work [zsh status] Expected 127, got 1 stdout: stderr: zsh: = not found |
toysh | 22 [[ at runtime doesn't work [toysh status] Expected 127, got 0 stdout: stderr: |
ash | 23 [[ with env prefix doesn't work [ash status] Expected 127, got 0 stdout: stderr: |
zsh | 23 [[ with env prefix doesn't work [zsh status] Expected 127, got 1 stdout: stderr: zsh: parse error near `[[' |
toysh | 23 [[ with env prefix doesn't work [toysh status] Expected 127, got 0 stdout: stderr: |
sush | 23 [[ with env prefix doesn't work [sush status] Expected 127, got 2 stdout: stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 2: Unexpected token: foo |
brush | 23 [[ with env prefix doesn't work [brush status] Expected 127, got 2 stdout: stderr: [31mERROR[0m main: syntax error near token `foo' (line 1 col 12) |
dash | 24 [[ over multiple lines is OK [dash stdout] Expected 'true\n', got '' [dash status] Expected 0, got 2 stdout: stderr: dash: 1: [[: not found dash: 2: Syntax error: "&&" unexpected |
ash | 24 [[ over multiple lines is OK [ash stdout] Expected 'true\n', got '' [ash status] Expected 0, got 2 stdout: stderr: ash: missing ]] ash: syntax error: unexpected "&&" |
toysh | 24 [[ over multiple lines is OK [toysh stdout] Expected 'true\n', got '' [toysh status] Expected 0, got 2 stdout: stderr: main: line 1: sh: syntax error: && |
zsh | 25 Argument that looks like a command word operator [zsh stdout] Expected 'false\nfalse\n', got 'false\n' [zsh status] Expected 0, got 1 stdout: falsestderr: zsh: = not found |
brush | 25 Argument that looks like a command word operator [brush stdout] Expected 'false\nfalse\n', got 'false\n' [brush status] Expected 0, got 2 stdout: falsestderr: [31mERROR[0m main: syntax error near token `false' (line 1 col 21) |
dash | 26 Argument that looks like a real operator [dash status] Expected 2, got 127 stdout: stderr: dash: 1: cannot open ]]: No such file dash: 1: [[: not found |
ash | 26 Argument that looks like a real operator [ash status] Expected 2, got 1 stdout: stderr: ash: can't open ]]: no such file |
zsh | 26 Argument that looks like a real operator [zsh status] Expected 2, got 1 stdout: stderr: zsh: parse error near `]]' |
mksh | 26 Argument that looks like a real operator stdout: stderr: mksh: <stdin>[1]: syntax error: '-f' missing argument |
ksh | 26 Argument that looks like a real operator [ksh status] Expected 2, got 1 stdout: stderr: E: ksh: <stdin>[1]: syntax error: missing argument '-f' |
toysh | 26 Argument that looks like a real operator [toysh status] Expected 2, got 1 stdout: stderr: |
dash | 27 User array compared to "$@" (broken unless shopt -s strict_array) [dash stdout] Expected 'true\nfalse\n', got '' [dash status] Expected 0, got 2 stdout: stderr: dash: 1: Syntax error: "(" unexpected |
ash | 27 User array compared to "$@" (broken unless shopt -s strict_array) [ash stdout] Expected 'true\nfalse\n', got '' [ash status] Expected 0, got 2 stdout: stderr: ash: syntax error: unexpected "(" |
toysh | 27 User array compared to "$@" (broken unless shopt -s strict_array) [toysh stdout] Expected 'true\nfalse\n', got '' [toysh status] Expected 0, got 2 stdout: stderr: main: line 1: sh: syntax error: '1 3' |
dash | 28 Array coerces to string (shopt -s strict_array to disallow) [dash stdout] Expected 'true\nfalse\n', got '' [dash status] Expected 0, got 2 stdout: stderr: dash: 1: Syntax error: "(" unexpected |
ash | 28 Array coerces to string (shopt -s strict_array to disallow) [ash stdout] Expected 'true\nfalse\n', got '' [ash status] Expected 0, got 2 stdout: stderr: ash: syntax error: unexpected "(" |
toysh | 28 Array coerces to string (shopt -s strict_array to disallow) [toysh stdout] Expected 'true\nfalse\n', got '' [toysh status] Expected 0, got 2 stdout: stderr: main: line 1: sh: syntax error: '1 3' |
bash | 29 (( array1 == array2 )) doesn't work stdout: status=1 status=1 status=1stderr: bash: line 6: ((: 1 3: syntax error in expression (error token is "3") bash: line 9: ((: 1 3: syntax error in expression (error token is "3") bash: line 12: ((: 1 3: syntax error in expression (error token is "3") |
dash | 29 (( array1 == array2 )) doesn't work [dash status] Expected 1, got 2 stdout: stderr: dash: 1: Syntax error: "(" unexpected |
ash | 29 (( array1 == array2 )) doesn't work [ash status] Expected 1, got 2 stdout: stderr: ash: syntax error: unexpected "(" |
zsh | 29 (( array1 == array2 )) doesn't work [zsh stdout] Expected u'', got 'status=2\nstatus=2\nstatus=2\n' [zsh status] Expected 1, got 0 stdout: status=2 status=2 status=2stderr: zsh: bad math expression: operator expected at `3 5' zsh: bad math expression: operator expected at `3 5' zsh: bad math expression: operator expected at `3 6' |
toysh | 29 (( array1 == array2 )) doesn't work [toysh status] Expected 1, got 2 stdout: stderr: main: line 1: sh: syntax error: '1 3' |
sush | 29 (( array1 == array2 )) doesn't work [sush stdout] Expected u'', got 'status=1\nstatus=1\nstatus=1\n' [sush status] Expected 1, got 0 stdout: status=1 status=1 status=1stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 6: ((: a == b : syntax error in expression (error token is "3") /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 9: ((: a == c : syntax error in expression (error token is "3") /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 12: ((: a == d : syntax error in expression (error token is "3") |
brush | 29 (( array1 == array2 )) doesn't work [brush stdout] Expected u'', got 'status=1\nstatus=1\nstatus=1\n' [brush status] Expected 1, got 0 stdout: status=1 status=1 status=1stderr: [31mERROR[0m error: arithmetic evaluation error: failed to parse expression: '1 3' [31mERROR[0m error: arithmetic evaluation error: failed to parse expression: '1 3' [31mERROR[0m error: arithmetic evaluation error: failed to parse expression: '1 3' |
dash | 30 Quotes don't matter in comparison [dash stdout] Expected 'true\ntrue\n', got '' [dash status] Expected 0, got 127 stdout: stderr: dash: 1: [[: not found dash: 2: [[: not found |
dash | 31 -eq does dynamic arithmetic parsing (not supported in OSH) [dash stdout] Expected 'true\ntrue\n', got '' [dash status] Expected 0, got 127 stdout: stderr: dash: 1: [[: not found dash: 3: [[: not found |
ash | 31 -eq does dynamic arithmetic parsing (not supported in OSH) [ash stdout] Expected 'true\ntrue\n', got '' [ash status] Expected 0, got 2 stdout: stderr: ash: 1+2: bad number ash: 1+2: bad number |
toysh | 31 -eq does dynamic arithmetic parsing (not supported in OSH) [toysh stdout] Expected 'true\ntrue\n', got '' [toysh status] Expected 0, got 2 stdout: stderr: [[: not integer: 1+2 [[: not integer: 1+2 |
dash | 32 -eq coercion produces weird results [dash stdout] Expected 'true\n', got '' [dash status] Expected 0, got 127 stdout: stderr: dash: 1: shopt: not found dash: 2: [[: not found |
ash | 32 -eq coercion produces weird results [ash stdout] Expected 'true\n', got '' [ash status] Expected 0, got 2 stdout: stderr: ash: shopt: not found ash: bad number |
toysh | 32 -eq coercion produces weird results [toysh stdout] Expected 'true\n', got '' [toysh status] Expected 0, got 2 stdout: stderr: sh: shopt: No such file or directory [[: not integer: |
dash | 33 [[ '(' ]] is treated as literal [dash stdout] Expected 'status=0\n', got 'status=127\n' stdout: status=127stderr: dash: 1: [[: not found |
toysh | 33 [[ '(' ]] is treated as literal [toysh stdout] Expected 'status=0\n', got 'status=2\n' stdout: status=2stderr: [[: need arg @1 |
dash | 34 [[ '(' foo ]] is syntax error [dash status] Expected 2, got 0 stdout: status=127stderr: dash: 1: [[: not found |
ash | 34 [[ '(' foo ]] is syntax error [ash status] Expected 2, got 0 stdout: status=2stderr: ash: closing paren expected |
zsh | 34 [[ '(' foo ]] is syntax error [zsh status] Expected 2, got 0 stdout: status=1stderr: zsh: parse error: condition expected: '(' |
mksh | 34 [[ '(' foo ]] is syntax error stdout: stderr: mksh: <stdin>[1]: syntax error: 'foo' unexpected operator/operand |
ksh | 34 [[ '(' foo ]] is syntax error [ksh status] Expected 2, got 1 stdout: stderr: E: ksh: <stdin>[1]: syntax error: unexpected operator/operand 'foo' |
toysh | 34 [[ '(' foo ]] is syntax error [toysh status] Expected 2, got 0 stdout: status=2stderr: [[: need ) |
sush | 34 [[ '(' foo ]] is syntax error [sush status] Expected 2, got 0 stdout: status=2stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: syntax error in conditional expression: unexpected token `'('' |
brush | 34 [[ '(' foo ]] is syntax error [brush status] Expected 2, got 0 stdout: status=2stderr: [31mERROR[0m main: syntax error near token `foo' (line 1 col 8) |
dash | 35 empty ! is treated as literal [dash stdout] Expected 'status=0\n', got 'status=127\n' stdout: status=127stderr: dash: 1: [[: not found |
toysh | 35 empty ! is treated as literal [toysh stdout] Expected 'status=0\n', got 'status=2\n' stdout: status=2stderr: [[: need arg @1 |
dash | 36 [[ -z ]] is syntax error [dash status] Expected 2, got 0 stdout: status=127stderr: dash: 1: [[: not found |
ash | 36 [[ -z ]] is syntax error [ash status] Expected 2, got 0 stdout: status=0stderr: |
mksh | 36 [[ -z ]] is syntax error stdout: stderr: mksh: <stdin>[2]: syntax error: 'echo' unexpected operator/operand |
ksh | 36 [[ -z ]] is syntax error [ksh status] Expected 2, got 1 stdout: stderr: E: ksh: <stdin>[2]: syntax error: unexpected operator/operand 'echo' |
toysh | 36 [[ -z ]] is syntax error [toysh status] Expected 2, got 0 stdout: status=0stderr: |
sush | 36 [[ -z ]] is syntax error [sush status] Expected 2, got 0 stdout: status=2stderr: |
dash | 38 [[ -z '>' a ]] is syntax error [dash status] Expected 2, got 0 stdout: status=127stderr: dash: 1: [[: not found |
ash | 38 [[ -z '>' a ]] is syntax error [ash status] Expected 2, got 0 stdout: status=0stderr: |
mksh | 38 [[ -z '>' a ]] is syntax error stdout: stderr: mksh: <stdin>[1]: syntax error: '--' unexpected operator/operand |
ksh | 38 [[ -z '>' a ]] is syntax error [ksh status] Expected 2, got 1 stdout: stderr: E: ksh: <stdin>[1]: syntax error: unexpected operator/operand '--' |
toysh | 38 [[ -z '>' a ]] is syntax error [toysh status] Expected 2, got 0 stdout: status=0stderr: |
sush | 38 [[ -z '>' a ]] is syntax error [sush status] Expected 2, got 0 stdout: status=2stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: syntax error in conditional expression: unexpected token `'>'' |
brush | 38 [[ -z '>' a ]] is syntax error [brush status] Expected 2, got 0 stdout: status=2stderr: [31mERROR[0m main: syntax error near token `--' (line 1 col 11) |
dash | 40 [[ ]] is syntax error [dash stdout] Expected u'', got 'status=127\n' [dash status] Expected 2, got 0 stdout: status=127stderr: dash: 1: [[: not found |
ash | 40 [[ ]] is syntax error [ash stdout] Expected u'', got 'status=1\n' [ash status] Expected 2, got 0 stdout: status=1stderr: |
zsh | 40 [[ ]] is syntax error [zsh status] Expected 2, got 1 stdout: stderr: zsh: parse error near `echo' |
mksh | 40 [[ ]] is syntax error stdout: stderr: mksh: <stdin>[1]: syntax error: 'newline' unexpected operator/operand |
ksh | 40 [[ ]] is syntax error [ksh status] Expected 2, got 1 stdout: stderr: E: ksh: <stdin>[1]: syntax error: unexpected operator/operand 'newline' |
toysh | 40 [[ ]] is syntax error [toysh stdout] Expected u'', got 'status=1\n' [toysh status] Expected 2, got 0 stdout: status=1stderr: |
sush | 40 [[ ]] is syntax error [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: Unexpected token: ]] |
dash | 41 [[ && ]] is syntax error [dash stdout] Expected u'', got 'status=127\n' [dash status] Expected 2, got 0 stdout: status=127stderr: dash: 1: [[: not found |
ash | 41 [[ && ]] is syntax error [ash stdout] Expected u'', got 'status=0\n' [ash status] Expected 2, got 0 stdout: status=0stderr: |
zsh | 41 [[ && ]] is syntax error [zsh stdout] Expected u'', got 'status=1\n' [zsh status] Expected 2, got 0 stdout: status=1stderr: zsh: parse error near `&&' |
mksh | 41 [[ && ]] is syntax error stdout: stderr: mksh: <stdin>[1]: syntax error: '&&' expression expected |
ksh | 41 [[ && ]] is syntax error [ksh status] Expected 2, got 1 stdout: stderr: E: ksh: <stdin>[1]: syntax error: expression expected '&&' |
sush | 41 [[ && ]] is syntax error [sush stdout] Expected u'', got 'status=2\n' [sush status] Expected 2, got 0 stdout: status=2stderr: |
brush | 41 [[ && ]] is syntax error [brush stdout] Expected u'', got 'status=2\n' [brush status] Expected 2, got 0 stdout: status=2stderr: [31mERROR[0m main: syntax error near token `&&' (line 1 col 4) |
dash | 42 [[ a 3< b ]] doesn't work (bug regression) [dash status] Expected 2, got 0 stdout: status=127 status=127stderr: dash: 1: cannot open b: No such file dash: 1: [[: not found dash: 3: [[: not found |
ash | 42 [[ a 3< b ]] doesn't work (bug regression) [ash status] Expected 2, got 0 stdout: status=1 status=0stderr: ash: can't open b: no such file |
zsh | 42 [[ a 3< b ]] doesn't work (bug regression) stdout: status=0 status=1stderr: |
mksh | 42 [[ a 3< b ]] doesn't work (bug regression) stdout: status=0 status=1stderr: |
ksh | 42 [[ a 3< b ]] doesn't work (bug regression) [ksh status] Expected 2, got 0 stdout: status=0 status=1stderr: |
toysh | 42 [[ a 3< b ]] doesn't work (bug regression) [toysh status] Expected 2, got 0 stdout: status=2 status=2stderr: [[: too many arguments [[: too many arguments |
sush | 42 [[ a 3< b ]] doesn't work (bug regression) [sush status] Expected 2, got 0 stdout: status=2 status=2stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 1: syntax error in conditional expression: unexpected token `a' /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 3: syntax error in conditional expression: unexpected token `a' |
brush | 42 [[ a 3< b ]] doesn't work (bug regression) [brush status] Expected 2, got 0 stdout: status=2 status=2stderr: [31mERROR[0m main: syntax error near token `3' (line 1 col 6) [31mERROR[0m main: syntax error near token `3' (line 1 col 6) |
dash | 43 tilde expansion in [[ [dash stdout] Expected 'status=0\nstatus=0\nstatus=1\n', got 'status=127\nstatus=127\nstatus=127\n' stdout: status=127 status=127 status=127stderr: dash: 2: [[: not found dash: 5: [[: not found dash: 8: [[: not found |
toysh | 43 tilde expansion in [[ [toysh stdout] Expected 'status=0\nstatus=0\nstatus=1\n', got 'status=0\nstatus=1\nstatus=1\n' stdout: status=0 status=1 status=1stderr: |
dash | 44 more tilde expansion [dash stdout] Expected 'status=0\nstatus=1\nunary=1\nstatus=0\nfnmatch=0\nfnmatch=0\n' Got 'status=127\nstatus=127\nunary=127\nstatus=127\nfnmatch=127\nfnmatch=127\n' stdout: status=127 status=127 unary=127 status=127 fnmatch=127 fnmatch=127stderr: dash: 1: [[: not found dash: 4: [[: not found dash: 6: [[: not found dash: 9: [[: not found dash: 12: [[: not found dash: 14: [[: not found |
ash | 44 more tilde expansion [ash stdout] Expected 'status=0\nstatus=1\nunary=1\nstatus=0\nfnmatch=0\nfnmatch=0\n' Got 'status=0\nstatus=1\nunary=0\nstatus=0\nfnmatch=0\nfnmatch=0\n' stdout: status=0 status=1 unary=0 status=0 fnmatch=0 fnmatch=0stderr: |
toysh | 44 more tilde expansion [toysh stdout] Expected 'status=0\nstatus=1\nunary=1\nstatus=0\nfnmatch=0\nfnmatch=0\n' Got 'status=0\nstatus=0\nunary=0\nstatus=0\nfnmatch=2\nfnmatch=2\n' stdout: status=0 status=0 unary=0 status=0 fnmatch=2 fnmatch=2stderr: [[: too many arguments [[: too many arguments |
sush | 44 more tilde expansion [sush stdout] Expected 'status=0\nstatus=1\nunary=1\nstatus=0\nfnmatch=0\nfnmatch=0\n' Got 'status=0\nstatus=0\nunary=0\nstatus=0\nfnmatch=1\nfnmatch=1\n' stdout: status=0 status=0 unary=0 status=0 fnmatch=1 fnmatch=1stderr: |
dash | 45 tilde expansion with =~ (confusing) [dash stdout] Expected 'regex=0\nregex=0\nregex=1\nregex=0\n', got 'regex=127\nregex=127\nregex=127\nregex=127\n' stdout: regex=127 regex=127 regex=127 regex=127stderr: dash: 4: [[: not found dash: 6: [[: not found dash: 10: [[: not found dash: 12: [[: not found |
ash | 45 tilde expansion with =~ (confusing) [ash stdout] Expected 'regex=0\nregex=0\nregex=1\nregex=0\n', got 'regex=0\nregex=0\nregex=1\nregex=1\n' stdout: regex=0 regex=0 regex=1 regex=1stderr: |
zsh | 45 tilde expansion with =~ (confusing) stdout: regex=0 regex=0 regex=1 regex=1stderr: |
mksh | 45 tilde expansion with =~ (confusing) stdout: stderr: |
ksh | 45 tilde expansion with =~ (confusing) [ksh stdout] Expected 'regex=0\nregex=0\nregex=1\nregex=0\n', got '' [ksh status] Expected 0, got 1 stdout: stderr: E: ksh: <stdin>[4]: syntax error: unexpected operator/operand '=~' |
toysh | 45 tilde expansion with =~ (confusing) [toysh stdout] Expected 'regex=0\nregex=0\nregex=1\nregex=0\n', got '' [toysh status] Expected 0, got 2 stdout: stderr: main: line 1: sh: syntax error: ( |
sush | 45 tilde expansion with =~ (confusing) [sush stdout] Expected 'regex=0\nregex=0\nregex=1\nregex=0\n', got 'regex=0\nregex=0\nregex=1\nregex=1\n' stdout: regex=0 regex=0 regex=1 regex=1stderr: |
dash | 46 [[ ]] with redirect [dash stdout] Expected '0\n--\nSTDERR\n', got '127\n--\ndash: 1: [[: not found\n' stdout: 127 -- dash: 1: [[: not foundstderr: STDERR |
ash | 46 [[ ]] with redirect [ash stdout] Expected '0\n--\nSTDERR\n', got '0\n--\n' stdout: 0 --stderr: STDERR |
toysh | 46 [[ ]] with redirect [toysh stdout] Expected '0\n--\nSTDERR\n', got '0\n\nSTDERR\n' stdout: 0 STDERRstderr: |
brush | 46 [[ ]] with redirect [brush stdout] Expected '0\n--\nSTDERR\n', got '2\n--\n' [brush status] Expected 0, got 1 stdout: 2 --stderr: [31mERROR[0m main: syntax error near token `2' (line 1 col 37) cat: /home/andy/git/oils-for-unix/oils/_tmp/spec-tmp/dbracket.test.sh.4014596/46-brush/x.txt: No such file or directory |
dash | 47 special chars [dash stdout] Expected 'caret 0\nbang 0\n', got 'caret 127\nbang 127\n' stdout: caret 127 bang 127stderr: dash: 1: [[: not found dash: 3: [[: not found |
sush | 47 special chars [sush stdout] Expected 'caret 0\nbang 0\n', got 'caret 0\nbang 2\n' stdout: caret 0 bang 2stderr: |
dash | 48 \(\) in pattern (regression) [dash stdout] Expected 'match1\nmatch2\nmatch1\nmatch2\n', got '' stdout: stderr: dash: 1: [[: not found dash: 2: [[: not found dash: 3: [[: not found dash: 5: shopt: not found dash: 7: [[: not found dash: 8: [[: not found dash: 9: [[: not found |
ash | 48 \(\) in pattern (regression) [ash stdout] Expected 'match1\nmatch2\nmatch1\nmatch2\n', got 'match1\nmatch2\nmatch3\nmatch1\nmatch2\nmatch3\n' stdout: match1 match2 match3 match1 match2 match3stderr: ash: shopt: not found |
toysh | 48 \(\) in pattern (regression) [toysh stdout] Expected 'match1\nmatch2\nmatch1\nmatch2\n', got '' stdout: stderr: sh: shopt: No such file or directory |
sush | 48 \(\) in pattern (regression) [sush stdout] Expected 'match1\nmatch2\nmatch1\nmatch2\n', got '' stdout: stderr: |
dash | 49 negative numbers - zero, decimal, octal, hex, base N [dash stdout] Expected 'zero=0\ndecimal=0\noctal=0\nhex=0\nbaseN=0\n', got 'zero=127\ndecimal=127\noctal=127\nhex=127\nbaseN=127\n' stdout: zero=127 decimal=127 octal=127 hex=127 baseN=127stderr: dash: 1: [[: not found dash: 3: [[: not found dash: 5: [[: not found dash: 7: [[: not found dash: 9: [[: not found |
ash | 49 negative numbers - zero, decimal, octal, hex, base N [ash stdout] Expected 'zero=0\ndecimal=0\noctal=0\nhex=0\nbaseN=0\n', got 'zero=0\ndecimal=0\noctal=1\nhex=2\nbaseN=2\n' stdout: zero=0 decimal=0 octal=1 hex=2 baseN=2stderr: ash: -0xff: bad number ash: -64#a: bad number |
zsh | 49 negative numbers - zero, decimal, octal, hex, base N [zsh stdout] Expected 'zero=0\ndecimal=0\noctal=0\nhex=0\nbaseN=0\n', got 'zero=0\ndecimal=0\noctal=1\nhex=0\n' [zsh status] Expected 0, got 1 stdout: zero=0 decimal=0 octal=1 hex=0stderr: zsh: invalid base (must be 2 to 36 inclusive): -64 |
mksh | 49 negative numbers - zero, decimal, octal, hex, base N stdout: zero=0 decimal=0 octal=1 hex=2 baseN=2stderr: mksh: <stdin>[7]: -0xff: bad number '0xff' mksh: <stdin>[9]: -64#a: bad number '64#a' |
ksh | 49 negative numbers - zero, decimal, octal, hex, base N [ksh stdout] Expected 'zero=0\ndecimal=0\noctal=0\nhex=0\nbaseN=0\n', got 'zero=0\ndecimal=0\noctal=1\nhex=2\nbaseN=2\n' stdout: zero=0 decimal=0 octal=1 hex=2 baseN=2stderr: W: ksh: <stdin>[7]: -0xff: bad number '0xff': Invalid argument W: ksh: <stdin>[9]: -64#a: bad number '64#a': Invalid argument |
toysh | 49 negative numbers - zero, decimal, octal, hex, base N [toysh stdout] Expected 'zero=0\ndecimal=0\noctal=0\nhex=0\nbaseN=0\n', got 'zero=0\ndecimal=0\noctal=0\nhex=0\nbaseN=2\n' stdout: zero=0 decimal=0 octal=0 hex=0 baseN=2stderr: [[: not integer: -64#a |
brush | 49 negative numbers - zero, decimal, octal, hex, base N [brush stdout] Expected 'zero=0\ndecimal=0\noctal=0\nhex=0\nbaseN=0\n', got 'zero=0\ndecimal=0\noctal=0\nhex=0\n' stdout: zero=0 decimal=0 octal=0 hex=0stderr: [31mERROR[0m error: arithmetic evaluation error: failed to parse expression: '-64#a' |