status | bash | mksh | ksh | toysh | sush | brush | osh | |
pass | 4 | 1 | 1 | 1 | 0 | 2 | 2 | |
ok | 1 | 0 | 0 | 0 | 0 | 0 | 0 | |
N-I | 0 | 0 | 0 | 0 | 0 | 0 | 5 | |
FAIL | 2 | 6 | 6 | 6 | 7 | 5 | 0 | |
total | 7 | 7 | 7 | 7 | 7 | 7 | 7 | |
case | bash | mksh | ksh | toysh | sush | brush | osh | description |
0 | ok | FAIL | FAIL | FAIL | FAIL | FAIL | pass | declare -i -l -u errors can be silenced - ignore_flags_not_impl |
details | details | details | details | details | details | |||
1 | pass | FAIL | FAIL | pass | FAIL | FAIL | N-I | declare -i with += |
details | details | details | details | details | ||||
2 | pass | FAIL | FAIL | FAIL | FAIL | FAIL | N-I | declare -i with arithmetic inside strings (Nix, issue 864) |
details | details | details | details | details | details | |||
3 | FAIL | pass | pass | FAIL | FAIL | pass | pass | append in arith context |
details | details | details | ||||||
4 | pass | FAIL | FAIL | FAIL | FAIL | FAIL | N-I | declare array vs. string: mixing -a +a and () '' |
details | details | details | details | details | details | |||
5 | FAIL | FAIL | FAIL | FAIL | FAIL | FAIL | N-I | declare array vs. associative array |
details | details | details | details | details | details | details | ||
6 | pass | FAIL | FAIL | FAIL | FAIL | pass | N-I | declare -l -u |
details | details | details | details | details |
11 passed, 1 OK, 5 not implemented, 0 BUG, 32 failed, 0 timeouts, 0 cases skipped
bash | 0 declare -i -l -u errors can be silenced - ignore_flags_not_impl stdout: status=0 foo=5 status=0 bar=5stderr: bash: line 6: shopt: ignore_flags_not_impl: invalid shell option name |
mksh | 0 declare -i -l -u errors can be silenced - ignore_flags_not_impl [mksh stdout] Expected 'status=2\nfoo=\n\nstatus=0\nbar=2+3\n', got 'status=127\nfoo=\n\nstatus=127\nbar=\n' stdout: status=127 foo= status=127 bar=stderr: mksh: <stdin>[1]: declare: not found mksh: <stdin>[6]: shopt: not found mksh: <stdin>[7]: declare: not found |
ksh | 0 declare -i -l -u errors can be silenced - ignore_flags_not_impl [ksh stdout] Expected 'status=2\nfoo=\n\nstatus=0\nbar=2+3\n', got 'status=127\nfoo=\n\nstatus=127\nbar=\n' stdout: status=127 foo= status=127 bar=stderr: E: ksh: <stdin>[1]: declare: inaccessible or not found E: ksh: <stdin>[6]: shopt: inaccessible or not found E: ksh: <stdin>[7]: declare: inaccessible or not found |
toysh | 0 declare -i -l -u errors can be silenced - ignore_flags_not_impl [toysh stdout] Expected 'status=2\nfoo=\n\nstatus=0\nbar=2+3\n', got 'status=0\nfoo=2+3\n\nstatus=0\nbar=2+3\n' stdout: status=0 foo=2+3 status=0 bar=2+3stderr: sh: shopt: No such file or directory |
sush | 0 declare -i -l -u errors can be silenced - ignore_flags_not_impl [sush stdout] Expected 'status=2\nfoo=\n\nstatus=0\nbar=2+3\n', got 'status=0\nfoo=2+3\n\nstatus=0\nbar=2+3\n' stdout: status=0 foo=2+3 status=0 bar=2+3stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 6: shopt: ignore_flags_not_impl: not supported yet |
brush | 0 declare -i -l -u errors can be silenced - ignore_flags_not_impl [brush stdout] Expected 'status=2\nfoo=\n\nstatus=0\nbar=2+3\n', got 'status=0\nfoo=0\n\nstatus=0\nbar=0\n' stdout: status=0 foo=0 status=0 bar=0stderr: shopt: ignore_flags_not_impl: invalid shell option name |
mksh | 1 declare -i with += [mksh stdout] Expected '[1 2 ]\n[3]\n[2]\n', got '[1 2 ]\n[1 2 ]\n[x 2 ]\n' stdout: [1 2 ] [1 2 ] [x 2 ]stderr: mksh: <stdin>[1]: declare: not found mksh: <stdin>[5]: declare: not found mksh: <stdin>[9]: declare: not found |
ksh | 1 declare -i with += [ksh stdout] Expected '[1 2 ]\n[3]\n[2]\n', got '[1 2 ]\n[1 2 ]\n[x 2 ]\n' stdout: [1 2 ] [1 2 ] [x 2 ]stderr: E: ksh: <stdin>[1]: declare: inaccessible or not found E: ksh: <stdin>[5]: declare: inaccessible or not found E: ksh: <stdin>[9]: declare: inaccessible or not found |
sush | 1 declare -i with += [sush stdout] Expected '[1 2 ]\n[3]\n[2]\n', got '[1 2 ]\n[0]\n[0]\n' stdout: [1 2 ] [0] [0]stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 6: '1 ': syntax error: operand expected (error token is "'1 '") /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 7: ' 2 ': syntax error: operand expected (error token is "' 2 '") /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 11: ' 2 ': syntax error: operand expected (error token is "' 2 '") |
brush | 1 declare -i with += [brush stdout] Expected '[1 2 ]\n[3]\n[2]\n', got '[1 2 ]\n[0]\n[0]\n' stdout: [1 2 ] [0] [0]stderr: |
osh | 1 declare -i with += stdout: [1 2 ] [1 2 ] [x 2 ]stderr: declare -i i ^~~~~~~ [ stdin ]:5: 'declare' doesn't implement flag -i (shopt --set ignore_flags_not_impl) declare -i j ^~~~~~~ [ stdin ]:9: 'declare' doesn't implement flag -i (shopt --set ignore_flags_not_impl) |
mksh | 2 declare -i with arithmetic inside strings (Nix, issue 864) [mksh stdout] Expected 's=3\nitem=3\n', got 's=1 + 2\n' [mksh status] Expected 0, got 1 stdout: s=1 + 2stderr: mksh: <stdin>[1]: declare: not found mksh: <stdin>[5]: syntax error: '(' unexpected |
ksh | 2 declare -i with arithmetic inside strings (Nix, issue 864) [ksh stdout] Expected 's=3\nitem=3\n', got 's=1 + 2\n' [ksh status] Expected 0, got 1 stdout: s=1 + 2stderr: E: ksh: <stdin>[1]: declare: inaccessible or not found E: ksh: <stdin>[5]: syntax error: unexpected '(' |
toysh | 2 declare -i with arithmetic inside strings (Nix, issue 864) [toysh stdout] Expected 's=3\nitem=3\n', got 's=3\n' [toysh status] Expected 0, got 2 stdout: s=3stderr: main: line 5: sh: syntax error: ) |
sush | 2 declare -i with arithmetic inside strings (Nix, issue 864) [sush stdout] Expected 's=3\nitem=3\n', got 's=0\nitem=0\n' stdout: s=0 item=0stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 2: '1 + 2': syntax error: operand expected (error token is "'1 + 2'") /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 7: 'array[1+1]': syntax error: operand expected (error token is "'array[1+1]'") |
brush | 2 declare -i with arithmetic inside strings (Nix, issue 864) [brush stdout] Expected 's=3\nitem=3\n', got 's=0\nitem=0\n' stdout: s=0 item=0stderr: |
osh | 2 declare -i with arithmetic inside strings (Nix, issue 864) stdout: s=1 + 2 item=array[1+1]stderr: declare -i s ^~~~~~~ [ stdin ]:1: 'declare' doesn't implement flag -i (shopt --set ignore_flags_not_impl) declare -i item ^~~~~~~ [ stdin ]:6: 'declare' doesn't implement flag -i (shopt --set ignore_flags_not_impl) |
bash | 3 append in arith context [bash stdout] Expected '3|3|2\n', got '||\n' stdout: ||stderr: bash: line 2: ((: s='1 ': syntax error: operand expected (error token is "'1 '") bash: line 3: ((: s+=' 2 ': syntax error: operand expected (error token is "' 2 '") bash: line 5: ((: i='1 ' : syntax error: operand expected (error token is "'1 ' ") bash: line 6: ((: i+=' 2 ' : syntax error: operand expected (error token is "' 2 ' ") bash: line 8: ((: j='x ' : syntax error: operand expected (error token is "'x ' ") bash: line 9: ((: j+=' 2 ' : syntax error: operand expected (error token is "' 2 ' ") |
toysh | 3 append in arith context [toysh stdout] Expected '3|3|2\n', got '2|2|2\n' stdout: 2|2|2stderr: main: line 8: sh: =0 main: line 8: sh: bad math: j=x @ 6 |
sush | 3 append in arith context [sush stdout] Expected '3|3|2\n', got '|0|0\n' stdout: |0|0stderr: /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 2: ((: s='1 ': syntax error: operand expected (error token is "'1 '") /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 3: ((: s+=' 2 ': syntax error: operand expected (error token is "' 2 '") /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 5: ((: i='1 ' : syntax error: operand expected (error token is "'1 '") /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 6: ((: i+=' 2 ' : syntax error: operand expected (error token is "' 2 '") /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 8: ((: j='x ' : syntax error: operand expected (error token is "'x '") /home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 9: ((: j+=' 2 ' : syntax error: operand expected (error token is "' 2 '") |
mksh | 4 declare array vs. string: mixing -a +a and () '' [mksh stdout] Expected "['1', '(2 3)', '4', '5', '6']\n", got "['', '']\n" stdout: ['', '']stderr: mksh: <stdin>[1]: declare: not found mksh: <stdin>[2]: declare: not found mksh: <stdin>[3]: declare: not found mksh: <stdin>[4]: declare: not found |
ksh | 4 declare array vs. string: mixing -a +a and () '' [ksh stdout] Expected "['1', '(2 3)', '4', '5', '6']\n", got "['', '']\n" stdout: ['', '']stderr: E: ksh: <stdin>[1]: declare: inaccessible or not found E: ksh: <stdin>[2]: declare: inaccessible or not found E: ksh: <stdin>[3]: declare: inaccessible or not found E: ksh: <stdin>[4]: declare: inaccessible or not found |
toysh | 4 declare array vs. string: mixing -a +a and () '' [toysh stdout] Expected "['1', '(2 3)', '4', '5', '6']\n", got '' [toysh status] Expected 0, got 1 stdout: stderr: declare: bad +a declare: bad +a main: line 5: sh: xyz3: [@]}" |
sush | 4 declare array vs. string: mixing -a +a and () '' [sush stdout] Expected "['1', '(2 3)', '4', '5', '6']\n", got "['', '']\n" stdout: ['', '']stderr: |
brush | 4 declare array vs. string: mixing -a +a and () '' [brush stdout] Expected "['1', '(2 3)', '4', '5', '6']\n", got "['', '']\n" stdout: ['', '']stderr: |
osh | 4 declare array vs. string: mixing -a +a and () '' stdout: ['', '']stderr: declare +a 'xyz1=1' ^ [ stdin ]:1: 'declare' doesn't accept option +a declare +a 'xyz2=(2 3)' ^ [ stdin ]:2: 'declare' doesn't accept option +a declare -a 'xyz3=4' ^ [ stdin ]:3: 'declare' Got -a but RHS isn't an initializer list declare -a 'xyz4=(5 6)' ^ [ stdin ]:4: 'declare' Got -a but RHS isn't an initializer list |
bash | 5 declare array vs. associative array [bash stdout] Expected "['1', '0', 'd']\n['2', 'a', 'c', 'b', 'd']\n" Got "['1', '0', 'd']\n['2', 'c', 'a', 'd', 'b']\n" stdout: ['1', '0', 'd'] ['2', 'c', 'a', 'd', 'b']stderr: |
mksh | 5 declare array vs. associative array [mksh stdout] Expected "['1', '0', 'd']\n['2', 'a', 'c', 'b', 'd']\n" Got "['0']\n['0']\n" stdout: ['0'] ['0']stderr: mksh: <stdin>[1]: declare: not found mksh: <stdin>[2]: declare: not found |
ksh | 5 declare array vs. associative array [ksh stdout] Expected "['1', '0', 'd']\n['2', 'a', 'c', 'b', 'd']\n" Got "['0']\n['0']\n" stdout: ['0'] ['0']stderr: E: ksh: <stdin>[1]: declare: inaccessible or not found E: ksh: <stdin>[2]: declare: inaccessible or not found |
toysh | 5 declare array vs. associative array [toysh stdout] Expected "['1', '0', 'd']\n['2', 'a', 'c', 'b', 'd']\n" Got '' [toysh status] Expected 0, got 1 stdout: stderr: main: line 3: sh: array: [@]}" main: line 4: sh: assoc: [@]}" |
sush | 5 declare array vs. associative array [sush stdout] Expected "['1', '0', 'd']\n['2', 'a', 'c', 'b', 'd']\n" Got "['0']\n['0']\n" stdout: ['0'] ['0']stderr: |
brush | 5 declare array vs. associative array [brush stdout] Expected "['1', '0', 'd']\n['2', 'a', 'c', 'b', 'd']\n" Got "['0']\n['0']\n" stdout: ['0'] ['0']stderr: |
osh | 5 declare array vs. associative array stdout: ['0'] ['0']stderr: declare -a 'array=([a]=b [c]=d)' ^ [ stdin ]:1: 'declare' Got -a but RHS isn't an initializer list declare -A 'assoc=([a]=b [c]=d)' ^ [ stdin ]:2: 'declare' Got -A but RHS isn't an initializer list |
mksh | 6 declare -l -u [mksh stdout] Expected 'foo\nFOO\n', got '\n\n' stdout: stderr: mksh: <stdin>[1]: declare: not found mksh: <stdin>[2]: declare: not found |
ksh | 6 declare -l -u [ksh stdout] Expected 'foo\nFOO\n', got '\n\n' stdout: stderr: E: ksh: <stdin>[1]: declare: inaccessible or not found E: ksh: <stdin>[2]: declare: inaccessible or not found |
toysh | 6 declare -l -u [toysh stdout] Expected 'foo\nFOO\n', got 'FOO\nfoo\n' stdout: FOO foostderr: |
sush | 6 declare -l -u [sush stdout] Expected 'foo\nFOO\n', got 'FOO\nfoo\n' stdout: FOO foostderr: |
osh | 6 declare -l -u stdout: FOO foostderr: declare -l lower=FOO ^~~~~~~ [ stdin ]:1: Warning: OSH doesn't implement flags -l or -u (shopt --set ignore_flags_not_impl) declare -u upper=foo ^~~~~~~ [ stdin ]:2: Warning: OSH doesn't implement flags -l or -u (shopt --set ignore_flags_not_impl) |