spec test index / oilshell.org
68 passed, 6 OK, 3 not implemented, 0 BUG, 37 failed, 0 timeouts, 0 cases skipped 4 failed under osh
osh_.py | 1 set associative array to indexed array literal (very surprising bash behavior) [osh_.py stdout] Expected "foo\nspam eggs\nk1\nk2\n['foo', 'spam eggs']\n['0', '1']\n", got '' [osh_.py status] Expected 0, got 127 stdout: stderr: for v in "${assoc[@]}"; do echo $v; done | sort ^~~~ [ stdin ]:2: 'sort' not found for v in "${!assoc[@]}"; do echo $v; done | sort ^~~~ [ stdin ]:3: 'sort' not found argv.py "${assoc[@]}" ^~~~~~~ [ stdin ]:5: 'argv.py' not found argv.py "${!assoc[@]}" ^~~~~~~ [ stdin ]:6: 'argv.py' not found |
osh_.cc | 1 set associative array to indexed array literal (very surprising bash behavior) [osh_.cc stdout] Expected "foo\nspam eggs\nk1\nk2\n['foo', 'spam eggs']\n['0', '1']\n", got '' [osh_.cc status] Expected 0, got -6 stdout: stderr: osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed. |
osh_.py | 3 Initializing indexed array with assoc array [osh_.py stdout] Expected 'status=2\n[]\n', got 'status=2\n' [osh_.py status] Expected 0, got 127 stdout: status=2stderr: declare -a a=([xx]=1 [yy]=2 [zz]=3) ^~ [ stdin ]:1: 'declare' Got -a but RHS isn't an array argv.py "${a[@]}" ^~~~~~~ [ stdin ]:3: 'argv.py' not found |
osh_.cc | 3 Initializing indexed array with assoc array [osh_.cc stdout] Expected 'status=2\n[]\n', got 'status=2\n' [osh_.cc status] Expected 0, got 127 stdout: status=2stderr: declare -a a=([xx]=1 [yy]=2 [zz]=3) ^~ [ stdin ]:1: 'declare' Got -a but RHS isn't an array argv.py "${a[@]}" ^~~~~~~ [ stdin ]:3: 'argv.py' not found |
osh_.py | 4 create empty assoc array, put, then get [osh_.py stdout] Expected '[]\n[]\nbar\n', got 'bar\n' stdout: barstderr: argv.py "${A[@]}" ^~~~~~~ [ stdin ]:2: 'argv.py' not found argv.py "${!A[@]}" ^~~~~~~ [ stdin ]:3: 'argv.py' not found |
osh_.cc | 4 create empty assoc array, put, then get [osh_.cc stdout] Expected '[]\n[]\nbar\n', got 'bar\n' stdout: barstderr: argv.py "${A[@]}" ^~~~~~~ [ stdin ]:2: 'argv.py' not found argv.py "${!A[@]}" ^~~~~~~ [ stdin ]:3: 'argv.py' not found |
osh_.py | 5 Empty value (doesn't use EmptyWord?) [osh_.py stdout] Expected "['']\n", got '' [osh_.py status] Expected 0, got 127 stdout: stderr: argv.py "${A["k"]}" ^~~~~~~ [ stdin ]:2: 'argv.py' not found |
osh_.cc | 5 Empty value (doesn't use EmptyWord?) [osh_.cc stdout] Expected "['']\n", got '' [osh_.cc status] Expected 0, got 127 stdout: stderr: argv.py "${A["k"]}" ^~~~~~~ [ stdin ]:2: 'argv.py' not found |
osh_.py | 6 retrieve keys with ! [osh_.py stdout] Expected 'a+1\nfoo\nx\n', got '' [osh_.py status] Expected 0, got 127 stdout: stderr: done | sort ^~~~ [ stdin ]:8: 'sort' not found |
osh_.cc | 6 retrieve keys with ! [osh_.cc stdout] Expected 'a+1\nfoo\nx\n', got '' [osh_.cc status] Expected 0, got -6 stdout: stderr: osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed. |
osh_.py | 7 retrieve values with ${A[@]} [osh_.py stdout] Expected 'b\nbar\nc\n', got '' [osh_.py status] Expected 0, got 127 stdout: stderr: done | sort ^~~~ [ stdin ]:8: 'sort' not found |
osh_.cc | 7 retrieve values with ${A[@]} [osh_.cc stdout] Expected 'b\nbar\nc\n', got '' [osh_.cc status] Expected 0, got -6 stdout: stderr: osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed. |
osh | 8 coerce to string with ${A[*]}, etc. [osh stdout] Expected "['xx yy']\n['X X Y Y']\n['xx', 'yy']\n['X', 'X', 'Y', 'Y']\n", got "['xx', 'yy']\n['X X Y Y']\n['xx', 'yy']\n['X', 'X', 'Y', 'Y']\n" stdout: ['xx', 'yy'] ['X X Y Y'] ['xx', 'yy'] ['X', 'X', 'Y', 'Y']stderr: |
osh_.py | 8 coerce to string with ${A[*]}, etc. [osh_.py stdout] Expected "['xx yy']\n['X X Y Y']\n['xx', 'yy']\n['X', 'X', 'Y', 'Y']\n", got '' [osh_.py status] Expected 0, got 127 stdout: stderr: argv.py "${A[*]}" ^~~~~~~ [ stdin ]:4: 'argv.py' not found argv.py "${!A[*]}" ^~~~~~~ [ stdin ]:5: 'argv.py' not found argv.py ${A[@]} ^~~~~~~ [ stdin ]:6: 'argv.py' not found argv.py ${!A[@]} ^~~~~~~ [ stdin ]:7: 'argv.py' not found |
osh_.cc | 8 coerce to string with ${A[*]}, etc. [osh_.cc stdout] Expected "['xx yy']\n['X X Y Y']\n['xx', 'yy']\n['X', 'X', 'Y', 'Y']\n", got '' [osh_.cc status] Expected 0, got 127 stdout: stderr: argv.py "${A[*]}" ^~~~~~~ [ stdin ]:4: 'argv.py' not found argv.py "${!A[*]}" ^~~~~~~ [ stdin ]:5: 'argv.py' not found argv.py ${A[@]} ^~~~~~~ [ stdin ]:6: 'argv.py' not found argv.py ${!A[@]} ^~~~~~~ [ stdin ]:7: 'argv.py' not found |
osh_.py | 9 ${A[@]/b/B} [osh_.py stdout] Expected 'BBB\nccc\nddd\n', got '' [osh_.py status] Expected 0, got 127 stdout: stderr: done | sort ^~~~ [ stdin ]:7: 'sort' not found |
osh_.cc | 9 ${A[@]/b/B} [osh_.cc stdout] Expected 'BBB\nccc\nddd\n', got '' [osh_.cc status] Expected 0, got -6 stdout: stderr: osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed. |
osh_.py | 10 ${A[@]#prefix} [osh_.py stdout] Expected 'hree\none\nwo\n', got '' [osh_.py status] Expected 0, got 127 stdout: stderr: done | sort ^~~~ [ stdin ]:7: 'sort' not found |
osh_.cc | 10 ${A[@]#prefix} [osh_.cc stdout] Expected 'hree\none\nwo\n', got '' [osh_.cc status] Expected 0, got -6 stdout: stderr: osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed. |
osh | 11 ${assoc} disallowed in OSH, like ${assoc[0]} in bash stdout: stderr: echo "${a}" ^~ [ stdin ]:3: fatal: Array 'a' can't be referred to as a scalar (without @ or *) |
osh_.py | 11 ${assoc} disallowed in OSH, like ${assoc[0]} in bash stdout: stderr: echo "${a}" ^~ [ stdin ]:3: fatal: Array 'a' can't be referred to as a scalar (without @ or *) |
osh_.cc | 11 ${assoc} disallowed in OSH, like ${assoc[0]} in bash stdout: stderr: echo "${a}" ^~~~ [ stdin ]:3: fatal: Array 'a' can't be referred to as a scalar (without @ or *) |
osh_.py | 19 Array stored in associative array gets converted to string (without strict_array) [osh_.py stdout] Expected "['1 2 3']\n", got '' [osh_.py status] Expected 0, got 127 stdout: stderr: argv.py "${d['key']}" ^~~~~~~ [ stdin ]:4: 'argv.py' not found |
osh_.cc | 19 Array stored in associative array gets converted to string (without strict_array) [osh_.cc stdout] Expected "['1 2 3']\n", got '' [osh_.cc status] Expected 0, got 127 stdout: stderr: argv.py "${d['key']}" ^~~~~~~ [ stdin ]:4: 'argv.py' not found |
osh_.py | 20 Indexed array as key of associative array coerces to string (without shopt -s strict_array) [osh_.py stdout] Expected 'foo\n1 2 3\n42\n', got 'foo\n' [osh_.py status] Expected 0, got 127 stdout: foostderr: done | sort ^~~~ [ stdin ]:8: 'sort' not found |
osh_.cc | 20 Indexed array as key of associative array coerces to string (without shopt -s strict_array) [osh_.cc stdout] Expected 'foo\n1 2 3\n42\n', got 'foo\n' [osh_.cc status] Expected 0, got -6 stdout: foostderr: osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed. |
osh_.py | 21 Append to associative array value A['x']+='suffix' [osh_.py stdout] Expected "['foobarbar']\n", got '' [osh_.py status] Expected 0, got 127 stdout: stderr: argv.py "${A["x"]}" ^~~~~~~ [ stdin ]:5: 'argv.py' not found |
osh_.cc | 21 Append to associative array value A['x']+='suffix' [osh_.cc stdout] Expected "['foobarbar']\n", got '' [osh_.cc status] Expected 0, got 127 stdout: stderr: argv.py "${A["x"]}" ^~~~~~~ [ stdin ]:5: 'argv.py' not found |
osh | 23 bash variable can have an associative array part and a string part stdout: stderr: echo ${assoc[1]} ${assoc[2]} ${assoc} ^~ [ stdin ]:4: fatal: Array 'assoc' can't be referred to as a scalar (without @ or *) |
osh_.py | 23 bash variable can have an associative array part and a string part stdout: stderr: echo ${assoc[1]} ${assoc[2]} ${assoc} ^~ [ stdin ]:4: fatal: Array 'assoc' can't be referred to as a scalar (without @ or *) |
osh_.cc | 23 bash variable can have an associative array part and a string part stdout: stderr: echo ${assoc[1]} ${assoc[2]} ${assoc} ^~~~ [ stdin ]:4: fatal: Array 'assoc' can't be referred to as a scalar (without @ or *) |
osh | 28 readonly associative array can't be modified stdout: stderr: A['x']=1 ^~ [ stdin ]:2: fatal: Can't assign to readonly associative array |
osh_.py | 28 readonly associative array can't be modified stdout: stderr: A['x']=1 ^~ [ stdin ]:2: fatal: Can't assign to readonly associative array |
osh_.cc | 28 readonly associative array can't be modified stdout: stderr: A['x']=1 ^~ [ stdin ]:2: fatal: Can't assign to readonly associative array |
osh_.cc | 33 unset -v and assoc array [osh_.cc stdout] Expected 'len=1\nlen=0\nlen=1\nlen=0\nlen=1\nlen=0\n', got 'len=1\nlen=0\nlen=1\nlen=0\nlen=1\n' [osh_.cc status] Expected 0, got -6 stdout: len=1 len=0 len=1 len=0 len=1stderr: osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed. |
osh | 34 nameref and assoc array [osh stdout] Expected 'values: val\nbefore val\nafter val2\nvalues: val2\n---\nbefore val2\nafter val3\nvalues: val3\n', got 'values: val\nbefore A["K"]\nafter val2\nvalues: val\n---\nbefore A[$key]\nafter val3\nvalues: val\n' stdout: values: val before A["K"] after val2 values: val --- before A[$key] after val3 values: valstderr: |
osh_.py | 34 nameref and assoc array [osh_.py stdout] Expected 'values: val\nbefore val\nafter val2\nvalues: val2\n---\nbefore val2\nafter val3\nvalues: val3\n', got 'values: val\nbefore A["K"]\nafter val2\nvalues: val\n---\nbefore A[$key]\nafter val3\nvalues: val\n' stdout: values: val before A["K"] after val2 values: val --- before A[$key] after val3 values: valstderr: |
osh_.cc | 34 nameref and assoc array [osh_.cc stdout] Expected 'values: val\nbefore val\nafter val2\nvalues: val2\n---\nbefore val2\nafter val3\nvalues: val3\n', got 'values: val\nbefore A["K"]\nafter val2\nvalues: val\n---\nbefore A[$key]\nafter val3\nvalues: val\n' stdout: values: val before A["K"] after val2 values: val --- before A[$key] after val3 values: valstderr: |
osh | 35 ${!ref} and assoc array [osh stdout] Expected 'values: val\nref val\nref val\n', got 'values: val\nref\nref\n' stdout: values: val ref refstderr: |
osh_.py | 35 ${!ref} and assoc array [osh_.py stdout] Expected 'values: val\nref val\nref val\n', got 'values: val\nref\nref\n' stdout: values: val ref refstderr: |
osh_.cc | 35 ${!ref} and assoc array [osh_.cc stdout] Expected 'values: val\nref val\nref val\n', got 'values: val\nref\nref\n' stdout: values: val ref refstderr: |
osh | 36 printf -v and assoc array [osh stdout] Expected 'values: val\nvalues: /val2/\nvalues: /val3/\n', got 'values: val\nvalues: val\nvalues: val\n' stdout: values: val values: val values: valstderr: printf -v 'assoc["K"]' '/%s/' val2 ^~~~~~ [ stdin ]:6: 'printf' -v expected a variable name. shopt -s eval_unsafe_arith allows expressions printf -v 'assoc[$key]' '/%s/' val3 ^~~~~~ [ stdin ]:9: 'printf' -v expected a variable name. shopt -s eval_unsafe_arith allows expressions |
osh_.py | 36 printf -v and assoc array [osh_.py stdout] Expected 'values: val\nvalues: /val2/\nvalues: /val3/\n', got 'values: val\nvalues: val\nvalues: val\n' stdout: values: val values: val values: valstderr: printf -v 'assoc["K"]' '/%s/' val2 ^~~~~~ [ stdin ]:6: 'printf' -v expected a variable name. shopt -s eval_unsafe_arith allows expressions printf -v 'assoc[$key]' '/%s/' val3 ^~~~~~ [ stdin ]:9: 'printf' -v expected a variable name. shopt -s eval_unsafe_arith allows expressions |
osh_.cc | 36 printf -v and assoc array [osh_.cc stdout] Expected 'values: val\nvalues: /val2/\nvalues: /val3/\n', got 'values: val\nvalues: val\nvalues: val\n' stdout: values: val values: val values: valstderr: printf -v 'assoc["K"]' '/%s/' val2 ^~~~~~ [ stdin ]:6: 'printf' -v expected a variable name. shopt -s eval_unsafe_arith allows expressions printf -v 'assoc[$key]' '/%s/' val3 ^~~~~~ [ stdin ]:9: 'printf' -v expected a variable name. shopt -s eval_unsafe_arith allows expressions |
osh_.py | 37 bash bug: (( A["$key"] = 1 )) doesn't work [osh_.py stdout] Expected "['\\\\']\n['42']\n", got '' [osh_.py status] Expected 0, got 127 stdout: stderr: argv.py "${!A[@]}" ^~~~~~~ [ stdin ]:4: 'argv.py' not found argv.py "${A[@]}" ^~~~~~~ [ stdin ]:5: 'argv.py' not found |
osh_.cc | 37 bash bug: (( A["$key"] = 1 )) doesn't work [osh_.cc stdout] Expected "['\\\\']\n['42']\n", got '' [osh_.cc status] Expected 0, got 127 stdout: stderr: argv.py "${!A[@]}" ^~~~~~~ [ stdin ]:4: 'argv.py' not found argv.py "${A[@]}" ^~~~~~~ [ stdin ]:5: 'argv.py' not found |