case | bash | mksh | zsh | osh | description |
0 | pass | pass | N-I | FAIL | Multiple right brackets inside expression |
details | details | ||||
1 | pass | pass | pass | FAIL | Slicing of string with constants |
details | |||||
2 | pass | pass | pass | FAIL | Slicing of string with variables |
details | |||||
3 | pass | pass | ok | FAIL | Array index on LHS of assignment |
details | details | ||||
4 | pass | pass | BUG | FAIL | Array index on LHS with spaces |
details | details | ||||
5 | pass | pass | ok | FAIL | Array index on LHS with indices |
details | details | ||||
6 | pass | BUG | BUG | FAIL | Slicing of string with expressions |
details | details | details | |||
7 | pass | BUG | BUG | FAIL | Ambiguous colon in slice |
details | details | details | |||
8 | pass | pass | pass | FAIL | Triple parens should be disambiguated |
details | |||||
9 | pass | pass | pass | FAIL | Quadruple parens should be disambiguated |
details | |||||
10 | pass | N-I | pass | pass | Alternative $[] syntax |
details |
25 passed, 2 ok, 2 known unimplemented, 5 known bugs, 10 failed, 0 skipped
zsh | 0 Multiple right brackets inside expression stdout: stderr: |
osh | 0 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' |
osh | 1 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' |
osh | 2 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' |
zsh | 3 Array index on LHS of assignment stdout: X 2 3stderr: |
osh | 3 Array index on LHS of assignment [osh stdout] Expected b'1 X 3\n', got b'1 2 3\n' stdout: 1 2 3stderr: 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' |
zsh | 4 Array index on LHS with spaces stdout: stderr: zsh: bad pattern: a[zero |
osh | 4 Array index on LHS with spaces [osh stdout] Expected b'1 X 3\n', got b'1 2 3\n' stdout: 1 2 3stderr: Unexpected error in execvpe('a[zero', ['a[zero', '+', '5', '-', '4]=X'], ...): [Errno 2] No such file or directory: b'/home/andy/bin/a[zero' |
zsh | 5 Array index on LHS with indices stdout: X 2 3stderr: |
osh | 5 Array index on LHS with indices [osh stdout] Expected b'1 2 X\n', got b'1 2 3\n' stdout: 1 2 3stderr: 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' |
mksh | 6 Slicing of string with expressions stdout: stderr: /bin/mksh: <stdin>[3]: ${s:zero}: bad substitution |
zsh | 6 Slicing of string with expressions stdout: stderr: zsh: unrecognized modifier `z' |
osh | 6 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' |
mksh | 7 Ambiguous colon in slice stdout: 2stderr: /bin/mksh: <stdin>[3]: ${s: 0 < 1 ? 2 : 0 : 1}: bad substitution |
zsh | 7 Ambiguous colon in slice stdout: 2stderr: zsh: ':' expected |
osh | 7 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 |
osh | 8 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' |
osh | 9 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' |
mksh | 10 Alternative $[] syntax stdout: $[1 + 2] $[3 * 4]stderr: |