Results for type-compat.test.sh

statusbashdashashzshmkshkshtoyshsushbrushosh
pass 4001111022
ok 1000000000
N-I 0000000005
FAIL 2776666750
total7777777777
casebashdashashzshmkshkshtoyshsushbrushoshdescription
0ok FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL pass declare -i -l -u errors can be silenced - ignore_flags_not_impl
detailsdetailsdetailsdetailsdetailsdetailsdetailsdetailsdetails
1pass FAIL FAIL FAIL FAIL FAIL pass FAIL FAIL N-I declare -i with +=
detailsdetailsdetailsdetailsdetailsdetailsdetailsdetails
2pass FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL N-I declare -i with arithmetic inside strings (Nix, issue 864)
detailsdetailsdetailsdetailsdetailsdetailsdetailsdetailsdetails
3FAIL FAIL FAIL FAIL pass pass FAIL FAIL pass pass append in arith context
detailsdetailsdetailsdetailsdetailsdetails
4pass FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL N-I declare array vs. string: mixing -a +a and () ''
detailsdetailsdetailsdetailsdetailsdetailsdetailsdetailsdetails
5FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL N-I declare array vs. associative array
detailsdetailsdetailsdetailsdetailsdetailsdetailsdetailsdetailsdetails
6pass FAIL FAIL pass FAIL FAIL FAIL FAIL pass N-I declare -l -u
detailsdetailsdetailsdetailsdetailsdetailsdetails
12 passed, 1 OK, 5 not implemented, 0 BUG, 52 failed, 0 timeouts, 0 cases skipped

Details on runs that didn't PASS

bash0 declare -i -l -u errors can be silenced - ignore_flags_not_impl

stdout:
status=0
foo=5

status=0
bar=5
stderr:
bash: line 6: shopt: ignore_flags_not_impl: invalid shell option name
dash0 declare -i -l -u errors can be silenced - ignore_flags_not_impl

[dash 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:
dash: 1: declare: not found
dash: 6: shopt: not found
dash: 7: declare: not found
ash0 declare -i -l -u errors can be silenced - ignore_flags_not_impl

[ash 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:
ash: declare: not found
ash: shopt: not found
ash: declare: not found
zsh0 declare -i -l -u errors can be silenced - ignore_flags_not_impl

[zsh stdout] Expected 'status=2\nfoo=\n\nstatus=0\nbar=2+3\n', got 'status=0\nfoo=5\n\nstatus=0\nbar=5\n'

stdout:
status=0
foo=5

status=0
bar=5
stderr:
zsh: command not found: shopt
mksh0 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
ksh0 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
toysh0 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+3
stderr:
sh: shopt: No such file or directory
sush0 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+3
stderr:
/home/andy/git/oils-for-unix/oils/../../shells/rusty_bash/target/release/sush: line 6: shopt: ignore_flags_not_impl: not supported yet
brush0 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=0
stderr:
shopt: ignore_flags_not_impl: invalid shell option name
dash1 declare -i with +=

[dash stdout] Expected '[1 2 ]\n[3]\n[2]\n', got '[1 ]\n[1 ]\n[x]\n'

stdout:
[1 ]
[1 ]
[x]
stderr:
dash: 1: declare: not found
dash: 3: s+= 2 : not found
dash: 5: declare: not found
dash: 7: i+= 2 : not found
dash: 9: declare: not found
dash: 11: j+= 2 : not found
ash1 declare -i with +=

[ash stdout] Expected '[1 2 ]\n[3]\n[2]\n', got '[1 ]\n[1 ]\n[x]\n'

stdout:
[1 ]
[1 ]
[x]
stderr:
ash: declare: not found
ash: s+= 2 : not found
ash: declare: not found
ash: i+= 2 : not found
ash: declare: not found
ash: j+= 2 : not found
zsh1 declare -i with +=

[zsh stdout] Expected '[1 2 ]\n[3]\n[2]\n', got '[1 2 ]\n'
[zsh status] Expected 0, got 1

stdout:
[1  2 ]
stderr:
zsh: no matches found: [3]
mksh1 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
ksh1 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
sush1 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 '")
brush1 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:
osh1 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)
dash2 declare -i with arithmetic inside strings (Nix, issue 864)

[dash stdout] Expected 's=3\nitem=3\n', got 's=1 + 2\n'
[dash status] Expected 0, got 2

stdout:
s=1 + 2
stderr:
dash: 1: declare: not found
dash: 5: Syntax error: "(" unexpected
ash2 declare -i with arithmetic inside strings (Nix, issue 864)

[ash stdout] Expected 's=3\nitem=3\n', got 's=1 + 2\n'
[ash status] Expected 0, got 2

stdout:
s=1 + 2
stderr:
ash: declare: not found
ash: syntax error: unexpected "("
zsh2 declare -i with arithmetic inside strings (Nix, issue 864)

[zsh stdout] Expected 's=3\nitem=3\n', got 's=3\nitem=2\n'

stdout:
s=3
item=2
stderr:
mksh2 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 + 2
stderr:
mksh: <stdin>[1]: declare: not found
mksh: <stdin>[5]: syntax error: '(' unexpected
ksh2 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 + 2
stderr:
E: ksh: <stdin>[1]: declare: inaccessible or not found
E: ksh: <stdin>[5]: syntax error: unexpected '('
toysh2 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=3
stderr:
main: line 5: sh: syntax error: )
sush2 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=0
stderr:
/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]'")
brush2 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=0
stderr:
osh2 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)
bash3 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 ' ")
dash3 append in arith context

[dash stdout] Expected '3|3|2\n', got '||\n'

stdout:
||
stderr:
dash: 1: declare: not found
dash: 3: s+= 2 : not found
dash: 4: declare: not found
dash: 6: i+= 2 : not found
dash: 7: declare: not found
dash: 9: j+= 2 : not found
ash3 append in arith context

[ash stdout] Expected '3|3|2\n', got '||\n'

stdout:
||
stderr:
ash: declare: not found
ash: s+= 2 : not found
ash: declare: not found
ash: i+= 2 : not found
ash: declare: not found
ash: j+= 2 : not found
zsh3 append in arith context

[zsh stdout] Expected '3|3|2\n', got '|0|0\n'

stdout:
|0|0
stderr:
zsh: bad math expression: operand expected at `'1 ''
zsh: bad math expression: operand expected at `' 2 ''
zsh: bad math expression: operand expected at `'1 ' '
zsh: bad math expression: operand expected at `' 2 ' '
zsh: bad math expression: operand expected at `'x ' '
zsh: bad math expression: operand expected at `' 2 ' '
toysh3 append in arith context

[toysh stdout] Expected '3|3|2\n', got '2|2|2\n'

stdout:
2|2|2
stderr:
main: line 8: sh: =0
main: line 8: sh: bad math:  j=x   @ 6
sush3 append in arith context

[sush stdout] Expected '3|3|2\n', got '|0|0\n'

stdout:
|0|0
stderr:
/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 '")
dash4 declare array vs. string: mixing -a +a and () ''

[dash stdout] Expected "['1', '(2 3)', '4', '5', '6']\n", got ''
[dash status] Expected 0, got 2

stdout:
stderr: 
dash: 1: declare: not found
dash: 2: declare: not found
dash: 3: declare: not found
dash: 4: declare: not found
dash: 5: Bad substitution
ash4 declare array vs. string: mixing -a +a and () ''

[ash stdout] Expected "['1', '(2 3)', '4', '5', '6']\n", got ''
[ash status] Expected 0, got 2

stdout:
stderr: 
ash: declare: not found
ash: declare: not found
ash: declare: not found
ash: declare: not found
ash: syntax error: bad substitution
zsh4 declare array vs. string: mixing -a +a and () ''

[zsh stdout] Expected "['1', '(2 3)', '4', '5', '6']\n", got ''
[zsh status] Expected 0, got 1

stdout:
stderr: 
declare: xyz3: inconsistent type for assignment
mksh4 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
ksh4 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
toysh4 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: [@]}"
sush4 declare array vs. string: mixing -a +a and () ''

[sush stdout] Expected "['1', '(2 3)', '4', '5', '6']\n", got "['', '']\n"

stdout:
['', '']
stderr:
brush4 declare array vs. string: mixing -a +a and () ''

[brush stdout] Expected "['1', '(2 3)', '4', '5', '6']\n", got "['', '']\n"

stdout:
['', '']
stderr:
osh4 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
bash5 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:
dash5 declare array vs. associative array

[dash stdout] Expected "['1', '0', 'd']\n['2', 'a', 'c', 'b', 'd']\n" Got ''
[dash status] Expected 0, got 2

stdout:
stderr: 
dash: 1: declare: not found
dash: 2: declare: not found
dash: 3: Bad substitution
ash5 declare array vs. associative array

[ash stdout] Expected "['1', '0', 'd']\n['2', 'a', 'c', 'b', 'd']\n" Got ''
[ash status] Expected 0, got 2

stdout:
stderr: 
ash: declare: not found
ash: declare: not found
ash: syntax error: bad substitution
zsh5 declare array vs. associative array

[zsh stdout] Expected "['1', '0', 'd']\n['2', 'a', 'c', 'b', 'd']\n" Got ''
[zsh status] Expected 0, got 1

stdout:
stderr: 
declare: array: inconsistent type for assignment
mksh5 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
ksh5 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
toysh5 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: [@]}"
sush5 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:
brush5 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:
osh5 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
dash6 declare -l -u

[dash stdout] Expected 'foo\nFOO\n', got '\n\n'

stdout:

stderr:
dash: 1: declare: not found
dash: 2: declare: not found
ash6 declare -l -u

[ash stdout] Expected 'foo\nFOO\n', got '\n\n'

stdout:

stderr:
ash: declare: not found
ash: declare: not found
mksh6 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
ksh6 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
toysh6 declare -l -u

[toysh stdout] Expected 'foo\nFOO\n', got 'FOO\nfoo\n'

stdout:
FOO
foo
stderr:
sush6 declare -l -u

[sush stdout] Expected 'foo\nFOO\n', got 'FOO\nfoo\n'

stdout:
FOO
foo
stderr:
osh6 declare -l -u

stdout:
FOO
foo
stderr:
  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)