Results for arith-context.test.sh

casebashmkshzshoshdescription
0pass pass N-I FAIL Multiple right brackets inside expression
detailsdetails
1pass pass pass FAIL Slicing of string with constants
details
2pass pass pass FAIL Slicing of string with variables
details
3pass pass ok FAIL Array index on LHS of assignment
detailsdetails
4pass pass BUG FAIL Array index on LHS with spaces
detailsdetails
5pass pass ok FAIL Array index on LHS with indices
detailsdetails
6pass BUG BUG FAIL Slicing of string with expressions
detailsdetailsdetails
7pass BUG BUG FAIL Ambiguous colon in slice
detailsdetailsdetails
8pass pass pass FAIL Triple parens should be disambiguated
details
9pass pass pass FAIL Quadruple parens should be disambiguated
details
10pass N-I pass pass Alternative $[] syntax
details

25 passed, 2 ok, 2 known unimplemented, 5 known bugs, 10 failed, 0 skipped

Details on runs that didn't PASS

zsh0 Multiple right brackets inside expression

stdout:
stderr: 
osh0 Multiple right brackets inside expression

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

stdout:
stderr: 
osh1 Slicing of string with constants

[osh stdout] Expected b'abcd abcd b\n', got b''

stdout:
stderr: 
Traceback (most recent call last):
  File "bin/osh", line 378, in <module>
    sys.exit(main(sys.argv))
  File "bin/osh", line 368, in main
    return OshMain(main_argv)
  File "bin/osh", line 327, in OshMain
    status = ex.Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 900, in Execute
    status = self._Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 791, in _Execute
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 677, in _Execute
    argv = self.ev.EvalWords(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 769, in EvalWords
    return self._EvalWords(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 759, in _EvalWords
    val = self._EvalCompoundWord(w, ifs=ifs, do_glob=do_glob)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 455, in _EvalCompoundWord
    val = self._EvalWordPart(p, quoted=False)  # may raise
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 691, in _EvalWordPart
    defined, val = self._ApplyVarOps(defined, val, part)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 289, in _ApplyVarOps
    if part.suffix_op and LookupKind(part.suffix_op.op_id) == Kind.VTest:
AttributeError: 'Slice' object has no attribute 'op_id'
osh2 Slicing of string with variables

[osh stdout] Expected b'abcd abcd b\n', got b''

stdout:
stderr: 
Traceback (most recent call last):
  File "bin/osh", line 378, in <module>
    sys.exit(main(sys.argv))
  File "bin/osh", line 368, in main
    return OshMain(main_argv)
  File "bin/osh", line 327, in OshMain
    status = ex.Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 900, in Execute
    status = self._Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 791, in _Execute
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 677, in _Execute
    argv = self.ev.EvalWords(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 769, in EvalWords
    return self._EvalWords(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 759, in _EvalWords
    val = self._EvalCompoundWord(w, ifs=ifs, do_glob=do_glob)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 455, in _EvalCompoundWord
    val = self._EvalWordPart(p, quoted=False)  # may raise
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 691, in _EvalWordPart
    defined, val = self._ApplyVarOps(defined, val, part)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 289, in _ApplyVarOps
    if part.suffix_op and LookupKind(part.suffix_op.op_id) == Kind.VTest:
AttributeError: 'Slice' object has no attribute 'op_id'
zsh3 Array index on LHS of assignment

stdout:
X 2 3
stderr:
osh3 Array index on LHS of assignment

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

stdout:
1 2 3
stderr:
Unexpected error in execvpe('a[zero+5-4]=X', ['a[zero+5-4]=X'], ...): [Errno 2] No such file or directory: b'/home/andy/bin/a[zero+5-4]=X'
zsh4 Array index on LHS with spaces

stdout:
stderr: 
zsh: bad pattern: a[zero
osh4 Array index on LHS with spaces

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

stdout:
1 2 3
stderr:
Unexpected error in execvpe('a[zero', ['a[zero', '+', '5', '-', '4]=X'], ...): [Errno 2] No such file or directory: b'/home/andy/bin/a[zero'
zsh5 Array index on LHS with indices

stdout:
X 2 3
stderr:
osh5 Array index on LHS with indices

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

stdout:
1 2 3
stderr:
Unexpected error in execvpe('a[a[1]]=X', ['a[a[1]]=X'], ...): [Errno 2] No such file or directory: b'/home/andy/bin/a[a[1]]=X'
mksh6 Slicing of string with expressions

stdout:
stderr: 
/bin/mksh: <stdin>[3]: ${s:zero}: bad substitution
zsh6 Slicing of string with expressions

stdout:
stderr: 
zsh: unrecognized modifier `z'
osh6 Slicing of string with expressions

[osh stdout] Expected b'abcd abcd b\n', got b''

stdout:
stderr: 
Traceback (most recent call last):
  File "bin/osh", line 378, in <module>
    sys.exit(main(sys.argv))
  File "bin/osh", line 368, in main
    return OshMain(main_argv)
  File "bin/osh", line 327, in OshMain
    status = ex.Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 900, in Execute
    status = self._Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 791, in _Execute
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 677, in _Execute
    argv = self.ev.EvalWords(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 769, in EvalWords
    return self._EvalWords(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 759, in _EvalWords
    val = self._EvalCompoundWord(w, ifs=ifs, do_glob=do_glob)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 455, in _EvalCompoundWord
    val = self._EvalWordPart(p, quoted=False)  # may raise
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 691, in _EvalWordPart
    defined, val = self._ApplyVarOps(defined, val, part)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 289, in _ApplyVarOps
    if part.suffix_op and LookupKind(part.suffix_op.op_id) == Kind.VTest:
AttributeError: 'Slice' object has no attribute 'op_id'
mksh7 Ambiguous colon in slice

stdout:
2
stderr:
/bin/mksh: <stdin>[3]: ${s: 0 < 1 ? 2 : 0 : 1}: bad substitution
zsh7 Ambiguous colon in slice

stdout:
2
stderr:
zsh: ':' expected
osh7 Ambiguous colon in slice

[osh stdout] Expected b'2\nc\n', got b''

stdout:
stderr: 
Traceback (most recent call last):
  File "bin/osh", line 378, in <module>
    sys.exit(main(sys.argv))
  File "bin/osh", line 368, in main
    return OshMain(main_argv)
  File "bin/osh", line 327, in OshMain
    status = ex.Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 900, in Execute
    status = self._Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 791, in _Execute
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 677, in _Execute
    argv = self.ev.EvalWords(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 769, in EvalWords
    return self._EvalWords(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 759, in _EvalWords
    val = self._EvalCompoundWord(w, ifs=ifs, do_glob=do_glob)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 455, in _EvalCompoundWord
    val = self._EvalWordPart(p, quoted=False)  # may raise
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 703, in _EvalWordPart
    return self._EvalArithSub(part.anode)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 198, in _EvalArithSub
    if arith_ev.Eval(anode):
  File "/home/andy/git/oil/bin/../core/expr_eval.py", line 64, in Eval
    result = self._Eval(node)
  File "/home/andy/git/oil/bin/../core/expr_eval.py", line 202, in _Eval
    lhs = self._Eval(node.cond)
  File "/home/andy/git/oil/bin/../core/expr_eval.py", line 239, in _Eval
    raise AssertionError("Shouldn't get here")
AssertionError: Shouldn't get here
osh8 Triple parens should be disambiguated

[osh stdout] Expected b'7 7\n', got b''

stdout:
stderr: 
Traceback (most recent call last):
  File "bin/osh", line 378, in <module>
    sys.exit(main(sys.argv))
  File "bin/osh", line 368, in main
    return OshMain(main_argv)
  File "bin/osh", line 327, in OshMain
    status = ex.Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 900, in Execute
    status = self._Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 791, in _Execute
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 741, in _Execute
    ok = arith_ev.Eval(node.child)
  File "/home/andy/git/oil/bin/../core/expr_eval.py", line 64, in Eval
    result = self._Eval(node)
  File "/home/andy/git/oil/bin/../core/expr_eval.py", line 237, in _Eval
    raise AssertionError("Invalid node %r" % node.id)
AttributeError: 'ArithAssign' object has no attribute 'id'
osh9 Quadruple parens should be disambiguated

[osh stdout] Expected b'15 15\n', got b''

stdout:
stderr: 
Traceback (most recent call last):
  File "bin/osh", line 378, in <module>
    sys.exit(main(sys.argv))
  File "bin/osh", line 368, in main
    return OshMain(main_argv)
  File "bin/osh", line 327, in OshMain
    status = ex.Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 900, in Execute
    status = self._Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 791, in _Execute
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 741, in _Execute
    ok = arith_ev.Eval(node.child)
  File "/home/andy/git/oil/bin/../core/expr_eval.py", line 64, in Eval
    result = self._Eval(node)
  File "/home/andy/git/oil/bin/../core/expr_eval.py", line 237, in _Eval
    raise AssertionError("Invalid node %r" % node.id)
AttributeError: 'ArithAssign' object has no attribute 'id'
mksh10 Alternative $[] syntax

stdout:
$[1 + 2] $[3 * 4]
stderr: