Results for array-compat.test.sh

casebashmkshoshosh_ALTdescription
0pass pass pass pass Assignment Causes Array Decay
1pass pass FAIL FAIL Array Decay with IFS
detailsdetails
2pass pass FAIL FAIL User arrays decay
detailsdetails
3pass pass FAIL FAIL $a gives first element of array
detailsdetails
4pass pass FAIL FAIL Assign to array index without initialization
detailsdetails
5pass pass FAIL FAIL a[40] grows array
detailsdetails
6pass pass FAIL FAIL array decays to string when comparing with [[ a = b ]]
detailsdetails
7pass pass FAIL FAIL Increment array variables
detailsdetails
8pass N-I pass pass Apply vectorized operations on ${a[*]}
details

21 passed, 0 ok, 1 known unimplemented, 0 known bugs, 7 failed, 0 skipped

Details on runs that didn't PASS

osh1 Array Decay with IFS

[osh stdout] Expected "['[x y z]']\n", got "['[ y z]']\n"

stdout:
['[ y z]']
stderr:
osh_ALT1 Array Decay with IFS

[osh_ALT stdout] Expected "['[x y z]']\n", got "['[ y z]']\n"

stdout:
['[ y z]']
stderr:
osh2 User arrays decay

[osh stdout] Expected "['x', 'y', 'z']\n['x y z']\n['x', 'YYY', 'z']\n", got "['x', 'y', 'z']\n"
[osh status] Expected 0, got 1

stdout:
['x', 'y', 'z']
stderr:
Unexpected error in execvpe('c[1]=YYY', ['c[1]=YYY'], ...): [Errno 2] No such file or directory
Line 8 of '<stdin>'
  argv.py "${b[@]}"
           ^~
osh failed: Can't index string with @: (Str s:'x y z')
osh_ALT2 User arrays decay

[osh_ALT stdout] Expected "['x', 'y', 'z']\n['x y z']\n['x', 'YYY', 'z']\n", got "['x', 'y', 'z']\n"
[osh_ALT status] Expected 0, got 1

stdout:
['x', 'y', 'z']
stderr:
Unexpected error in execvpe('c[1]=YYY', ['c[1]=YYY'], ...): [Errno 2] No such file or directory
Line 8 of '<stdin>'
  argv.py "${b[@]}"
           ^~
osh failed: Can't index string with @: (Str s:'x y z')
osh3 $a gives first element of array

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

stdout:
1 2 3
stderr:
osh_ALT3 $a gives first element of array

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

stdout:
1 2 3
stderr:
osh4 Assign to array index without initialization

[osh stdout] Expected '5 6 2\n', got ''
[osh status] Expected 0, got 1

stdout:
stderr: 
Unexpected error in execvpe('a[5]=5', ['a[5]=5'], ...): [Errno 2] No such file or directory
Unexpected error in execvpe('a[6]=6', ['a[6]=6'], ...): [Errno 2] No such file or directory
Traceback (most recent call last):
  File "bin/osh", line 647, in <module>
    main(sys.argv)
  File "bin/osh", line 630, in main
    sys.exit(AppBundleMain(argv))
  File "bin/osh", line 606, in AppBundleMain
    status = OshMain(argv0, main_argv, login_shell)
  File "bin/osh", line 416, in OshMain
    status = ex.ExecuteAndRunExitTrap(node)
  File "/home/andy/git/oilshell/oil/bin/../core/cmd_exec.py", line 1210, in ExecuteAndRunExitTrap
    status = self.Execute(node)
  File "/home/andy/git/oilshell/oil/bin/../core/cmd_exec.py", line 1192, in Execute
    status = self._Execute(node, fork_external=fork_external)
  File "/home/andy/git/oilshell/oil/bin/../core/cmd_exec.py", line 1145, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oilshell/oil/bin/../core/cmd_exec.py", line 882, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/andy/git/oilshell/oil/bin/../core/cmd_exec.py", line 1166, in _ExecuteList
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oilshell/oil/bin/../core/cmd_exec.py", line 1145, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oilshell/oil/bin/../core/cmd_exec.py", line 668, in _Dispatch
    argv = self.word_ev.EvalWordSequence(words)
  File "/home/andy/git/oilshell/oil/bin/../core/word_eval.py", line 905, in EvalWordSequence
    return self._EvalWordSequence(words)
  File "/home/andy/git/oilshell/oil/bin/../core/word_eval.py", line 878, in _EvalWordSequence
    self._EvalWordToParts(w, False, part_vals)  # not double quoted
  File "/home/andy/git/oilshell/oil/bin/../core/word_eval.py", line 705, in _EvalWordToParts
    self._EvalWordPart(p, part_vals, quoted=quoted)
  File "/home/andy/git/oilshell/oil/bin/../core/word_eval.py", line 677, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/andy/git/oilshell/oil/bin/../core/word_eval.py", line 590, in _EvalBracedVarSub
    val = self._DecayArray(val)
  File "/home/andy/git/oilshell/oil/bin/../core/word_eval.py", line 372, in _DecayArray
    assert val.tag == value_e.StrArray, val
AssertionError: (Str s:0)
osh_ALT4 Assign to array index without initialization

[osh_ALT stdout] Expected '5 6 2\n', got ''
[osh_ALT status] Expected 0, got 1

stdout:
stderr: 
Unexpected error in execvpe('a[5]=5', ['a[5]=5'], ...): [Errno 2] No such file or directory
Unexpected error in execvpe('a[6]=6', ['a[6]=6'], ...): [Errno 2] No such file or directory
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/Python-2.7.13/Lib/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/home/andy/git/oilshell/oil/Python-2.7.13/Lib/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 647, in <module>
    main(sys.argv)
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 630, in main
    sys.exit(AppBundleMain(argv))
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 606, in AppBundleMain
    status = OshMain(argv0, main_argv, login_shell)
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 416, in OshMain
    status = ex.ExecuteAndRunExitTrap(node)
  File "/home/andy/git/oilshell/oil/core/cmd_exec.py", line 1210, in ExecuteAndRunExitTrap
    status = self.Execute(node)
  File "/home/andy/git/oilshell/oil/core/cmd_exec.py", line 1192, in Execute
    status = self._Execute(node, fork_external=fork_external)
  File "/home/andy/git/oilshell/oil/core/cmd_exec.py", line 1145, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oilshell/oil/core/cmd_exec.py", line 882, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/andy/git/oilshell/oil/core/cmd_exec.py", line 1166, in _ExecuteList
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oilshell/oil/core/cmd_exec.py", line 1145, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oilshell/oil/core/cmd_exec.py", line 668, in _Dispatch
    argv = self.word_ev.EvalWordSequence(words)
  File "/home/andy/git/oilshell/oil/core/word_eval.py", line 905, in EvalWordSequence
    return self._EvalWordSequence(words)
  File "/home/andy/git/oilshell/oil/core/word_eval.py", line 878, in _EvalWordSequence
    self._EvalWordToParts(w, False, part_vals)  # not double quoted
  File "/home/andy/git/oilshell/oil/core/word_eval.py", line 705, in _EvalWordToParts
    self._EvalWordPart(p, part_vals, quoted=quoted)
  File "/home/andy/git/oilshell/oil/core/word_eval.py", line 677, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/andy/git/oilshell/oil/core/word_eval.py", line 590, in _EvalBracedVarSub
    val = self._DecayArray(val)
  File "/home/andy/git/oilshell/oil/core/word_eval.py", line 372, in _DecayArray
    assert val.tag == value_e.StrArray, val
AssertionError: (Str s:0)
FATAL: couldn't import from app bundle '_tmp/oil-tar-test/oil-0.5.alpha1/_bin/osh' (1)
Stripping the oil.ovm binary may cause this error.
See https://github.com/oilshell/oil/issues/47
osh5 a[40] grows array

[osh stdout] Expected '1 5 3 20 30 5\n', got '1 2 3 3\n'

stdout:
1 2 3 3
stderr:
Unexpected error in execvpe('a[1]=5', ['a[1]=5'], ...): [Errno 2] No such file or directory
Unexpected error in execvpe('a[40]=30', ['a[40]=30'], ...): [Errno 2] No such file or directory
Unexpected error in execvpe('a[10]=20', ['a[10]=20'], ...): [Errno 2] No such file or directory
osh_ALT5 a[40] grows array

[osh_ALT stdout] Expected '1 5 3 20 30 5\n', got '1 2 3 3\n'

stdout:
1 2 3 3
stderr:
Unexpected error in execvpe('a[1]=5', ['a[1]=5'], ...): [Errno 2] No such file or directory
Unexpected error in execvpe('a[40]=30', ['a[40]=30'], ...): [Errno 2] No such file or directory
Unexpected error in execvpe('a[10]=20', ['a[10]=20'], ...): [Errno 2] No such file or directory
osh6 array decays to string when comparing with [[ a = b ]]

[osh stdout] Expected '2 7\nEQUAL\n', got ''
[osh status] Expected 0, got 1

stdout:
stderr: 
Traceback (most recent call last):
  File "bin/osh", line 647, in <module>
    main(sys.argv)
  File "bin/osh", line 630, in main
    sys.exit(AppBundleMain(argv))
  File "bin/osh", line 606, in AppBundleMain
    status = OshMain(argv0, main_argv, login_shell)
  File "bin/osh", line 416, in OshMain
    status = ex.ExecuteAndRunExitTrap(node)
  File "/home/andy/git/oilshell/oil/bin/../core/cmd_exec.py", line 1210, in ExecuteAndRunExitTrap
    status = self.Execute(node)
  File "/home/andy/git/oilshell/oil/bin/../core/cmd_exec.py", line 1192, in Execute
    status = self._Execute(node, fork_external=fork_external)
  File "/home/andy/git/oilshell/oil/bin/../core/cmd_exec.py", line 1145, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oilshell/oil/bin/../core/cmd_exec.py", line 882, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/andy/git/oilshell/oil/bin/../core/cmd_exec.py", line 1166, in _ExecuteList
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oilshell/oil/bin/../core/cmd_exec.py", line 1145, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oilshell/oil/bin/../core/cmd_exec.py", line 668, in _Dispatch
    argv = self.word_ev.EvalWordSequence(words)
  File "/home/andy/git/oilshell/oil/bin/../core/word_eval.py", line 905, in EvalWordSequence
    return self._EvalWordSequence(words)
  File "/home/andy/git/oilshell/oil/bin/../core/word_eval.py", line 878, in _EvalWordSequence
    self._EvalWordToParts(w, False, part_vals)  # not double quoted
  File "/home/andy/git/oilshell/oil/bin/../core/word_eval.py", line 705, in _EvalWordToParts
    self._EvalWordPart(p, part_vals, quoted=quoted)
  File "/home/andy/git/oilshell/oil/bin/../core/word_eval.py", line 677, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/andy/git/oilshell/oil/bin/../core/word_eval.py", line 590, in _EvalBracedVarSub
    val = self._DecayArray(val)
  File "/home/andy/git/oilshell/oil/bin/../core/word_eval.py", line 372, in _DecayArray
    assert val.tag == value_e.StrArray, val
AssertionError: (Str s:2)
osh_ALT6 array decays to string when comparing with [[ a = b ]]

[osh_ALT stdout] Expected '2 7\nEQUAL\n', got ''
[osh_ALT status] Expected 0, got 1

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/Python-2.7.13/Lib/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/home/andy/git/oilshell/oil/Python-2.7.13/Lib/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 647, in <module>
    main(sys.argv)
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 630, in main
    sys.exit(AppBundleMain(argv))
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 606, in AppBundleMain
    status = OshMain(argv0, main_argv, login_shell)
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 416, in OshMain
    status = ex.ExecuteAndRunExitTrap(node)
  File "/home/andy/git/oilshell/oil/core/cmd_exec.py", line 1210, in ExecuteAndRunExitTrap
    status = self.Execute(node)
  File "/home/andy/git/oilshell/oil/core/cmd_exec.py", line 1192, in Execute
    status = self._Execute(node, fork_external=fork_external)
  File "/home/andy/git/oilshell/oil/core/cmd_exec.py", line 1145, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oilshell/oil/core/cmd_exec.py", line 882, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/andy/git/oilshell/oil/core/cmd_exec.py", line 1166, in _ExecuteList
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oilshell/oil/core/cmd_exec.py", line 1145, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oilshell/oil/core/cmd_exec.py", line 668, in _Dispatch
    argv = self.word_ev.EvalWordSequence(words)
  File "/home/andy/git/oilshell/oil/core/word_eval.py", line 905, in EvalWordSequence
    return self._EvalWordSequence(words)
  File "/home/andy/git/oilshell/oil/core/word_eval.py", line 878, in _EvalWordSequence
    self._EvalWordToParts(w, False, part_vals)  # not double quoted
  File "/home/andy/git/oilshell/oil/core/word_eval.py", line 705, in _EvalWordToParts
    self._EvalWordPart(p, part_vals, quoted=quoted)
  File "/home/andy/git/oilshell/oil/core/word_eval.py", line 677, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/andy/git/oilshell/oil/core/word_eval.py", line 590, in _EvalBracedVarSub
    val = self._DecayArray(val)
  File "/home/andy/git/oilshell/oil/core/word_eval.py", line 372, in _DecayArray
    assert val.tag == value_e.StrArray, val
AssertionError: (Str s:2)
FATAL: couldn't import from app bundle '_tmp/oil-tar-test/oil-0.5.alpha1/_bin/osh' (1)
Stripping the oil.ovm binary may cause this error.
See https://github.com/oilshell/oil/issues/47
osh7 Increment array variables

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

stdout:
stderr: 
Traceback (most recent call last):
  File "bin/osh", line 647, in <module>
    main(sys.argv)
  File "bin/osh", line 630, in main
    sys.exit(AppBundleMain(argv))
  File "bin/osh", line 606, in AppBundleMain
    status = OshMain(argv0, main_argv, login_shell)
  File "bin/osh", line 416, in OshMain
    status = ex.ExecuteAndRunExitTrap(node)
  File "/home/andy/git/oilshell/oil/bin/../core/cmd_exec.py", line 1210, in ExecuteAndRunExitTrap
    status = self.Execute(node)
  File "/home/andy/git/oilshell/oil/bin/../core/cmd_exec.py", line 1192, in Execute
    status = self._Execute(node, fork_external=fork_external)
  File "/home/andy/git/oilshell/oil/bin/../core/cmd_exec.py", line 1145, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oilshell/oil/bin/../core/cmd_exec.py", line 882, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/andy/git/oilshell/oil/bin/../core/cmd_exec.py", line 1166, in _ExecuteList
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oilshell/oil/bin/../core/cmd_exec.py", line 1145, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oilshell/oil/bin/../core/cmd_exec.py", line 755, in _Dispatch
    i = self.arith_ev.Eval(node.child)
  File "/home/andy/git/oilshell/oil/bin/../core/expr_eval.py", line 266, in Eval
    new_int = old_int + 1
TypeError: can only concatenate list (not "int") to list
osh_ALT7 Increment array variables

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

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/Python-2.7.13/Lib/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/home/andy/git/oilshell/oil/Python-2.7.13/Lib/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 647, in <module>
    main(sys.argv)
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 630, in main
    sys.exit(AppBundleMain(argv))
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 606, in AppBundleMain
    status = OshMain(argv0, main_argv, login_shell)
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 416, in OshMain
    status = ex.ExecuteAndRunExitTrap(node)
  File "/home/andy/git/oilshell/oil/core/cmd_exec.py", line 1210, in ExecuteAndRunExitTrap
    status = self.Execute(node)
  File "/home/andy/git/oilshell/oil/core/cmd_exec.py", line 1192, in Execute
    status = self._Execute(node, fork_external=fork_external)
  File "/home/andy/git/oilshell/oil/core/cmd_exec.py", line 1145, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oilshell/oil/core/cmd_exec.py", line 882, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/andy/git/oilshell/oil/core/cmd_exec.py", line 1166, in _ExecuteList
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oilshell/oil/core/cmd_exec.py", line 1145, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oilshell/oil/core/cmd_exec.py", line 755, in _Dispatch
    i = self.arith_ev.Eval(node.child)
  File "/home/andy/git/oilshell/oil/core/expr_eval.py", line 266, in Eval
    new_int = old_int + 1
TypeError: can only concatenate list (not "int") to list
FATAL: couldn't import from app bundle '_tmp/oil-tar-test/oil-0.5.alpha1/_bin/osh' (1)
Stripping the oil.ovm binary may cause this error.
See https://github.com/oilshell/oil/issues/47
mksh8 Apply vectorized operations on ${a[*]}

stdout:
stderr: 
/bin/mksh: <stdin>[2]: ${a[*]#-}: bad substitution