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''

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 959, in Execute
    status = self._Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 824, in _Execute
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 721, in _Execute
    argv = self.ev.EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1045, in EvalWordSequence
    return self._EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1028, in _EvalWordSequence
    args = self._EvalWordAndReframe(w)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 989, in _EvalWordAndReframe
    part_vals = self._EvalParts(word)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 882, in _EvalParts
    for v in self.part_ev._EvalWordPart(p, quoted=quoted):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 804, in _EvalWordPart
    return self._EvalBracedVarSub(part, quoted)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 693, in _EvalBracedVarSub
    val, decay_array = self._ApplyBracketOp(val, part.bracket_op, quoted)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 371, in _ApplyBracketOp
    self._AddErrorContext(
AttributeError: '_NormalPartEvaluator' object has no attribute '_AddErrorContext'
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 959, in Execute
    status = self._Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 824, in _Execute
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 721, in _Execute
    argv = self.ev.EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1045, in EvalWordSequence
    return self._EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1028, in _EvalWordSequence
    args = self._EvalWordAndReframe(w)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 989, in _EvalWordAndReframe
    part_vals = self._EvalParts(word)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 882, in _EvalParts
    for v in self.part_ev._EvalWordPart(p, quoted=quoted):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 804, in _EvalWordPart
    return self._EvalBracedVarSub(part, quoted)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 711, in _EvalBracedVarSub
    if 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 959, in Execute
    status = self._Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 824, in _Execute
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 721, in _Execute
    argv = self.ev.EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1045, in EvalWordSequence
    return self._EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1028, in _EvalWordSequence
    args = self._EvalWordAndReframe(w)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 989, in _EvalWordAndReframe
    part_vals = self._EvalParts(word)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 882, in _EvalParts
    for v in self.part_ev._EvalWordPart(p, quoted=quoted):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 804, in _EvalWordPart
    return self._EvalBracedVarSub(part, quoted)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 711, in _EvalBracedVarSub
    if 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 959, in Execute
    status = self._Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 824, in _Execute
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 721, in _Execute
    argv = self.ev.EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1045, in EvalWordSequence
    return self._EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1028, in _EvalWordSequence
    args = self._EvalWordAndReframe(w)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 989, in _EvalWordAndReframe
    part_vals = self._EvalParts(word)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 882, in _EvalParts
    for v in self.part_ev._EvalWordPart(p, quoted=quoted):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 804, in _EvalWordPart
    return self._EvalBracedVarSub(part, quoted)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 711, in _EvalBracedVarSub
    if 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 959, in Execute
    status = self._Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 824, in _Execute
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 721, in _Execute
    argv = self.ev.EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1045, in EvalWordSequence
    return self._EvalWordSequence(words)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 1028, in _EvalWordSequence
    args = self._EvalWordAndReframe(w)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 989, in _EvalWordAndReframe
    part_vals = self._EvalParts(word)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 882, in _EvalParts
    for v in self.part_ev._EvalWordPart(p, quoted=quoted):
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 814, in _EvalWordPart
    if arith_ev.Eval(part.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 201, in _Eval
    lhs = self._Eval(node.cond)
  File "/home/andy/git/oil/bin/../core/expr_eval.py", line 238, 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 959, in Execute
    status = self._Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 824, in _Execute
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 776, 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 236, 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 959, in Execute
    status = self._Execute(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 824, in _Execute
    status = self._Execute(child)  # last status wins
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 776, 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 236, 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: