103 passed, 4 ok, 17 known unimplemented, 7 known bugs, 9 failed, 0 skipped
dash | 2 Bizarre recursive evaluation rule stdout: stderr: /bin/dash: 5: Illegal number: foo |
osh | 2 Bizarre recursive evaluation rule [osh stdout] Expected b'6 6 6 6\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, cflow = ex.Execute(node) File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 758, in Execute status, cflow = self.Execute(child) # last status wins File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 663, in Execute raise AssertionError('Error evaluating words: %s' % err) AssertionError: Error evaluating words: ["Invalid integer constant 'foo'", '', 'Error evaluating word part (ArithSubPart\n anode: \n (ArithBinary\n op_id: Arith_Plus\n left: (RightVar name:bar)\n right: \n (ArithWord\n w: (CompoundWord parts:[(LiteralPart token:(token id:Lit_Digits val:1 span_id:24))])\n )\n )\n spids: [21 26]\n)', 'Error evaluating word (CompoundWord\n parts: [\n (ArithSubPart\n anode: \n (ArithBinary\n op_id: Arith_Plus\n left: (RightVar name:bar)\n right: \n (ArithWord\n w: (CompoundWord parts:[(LiteralPart token:(token id:Lit_Digits val:1 span_id:24))])\n )\n )\n spids: [21 26]\n )\n ]\n)'] |
dash | 6 Constant with quotes like '1' stdout: stderr: /bin/dash: 1: arithmetic expression: expecting primary: "'1' + 2" |
bash | 6 Constant with quotes like '1' stdout: stderr: /bin/bash: line 1: '1' + 2: syntax error: operand expected (error token is "'1' + 2") |
zsh | 6 Constant with quotes like '1' stdout: stderr: zsh: bad math expression: illegal character: ' |
dash | 9 Bad variable substitution stdout: stderr: /bin/dash: 2: Illegal number: foo |
bash | 9 Bad variable substitution stdout: 5stderr: |
mksh | 9 Bad variable substitution stdout: 5stderr: |
zsh | 9 Bad variable substitution stdout: 5stderr: |
dash | 10 Two bad variable substitutions stdout: stderr: /bin/dash: 3: Illegal number: foo |
bash | 10 Two bad variable substitutions stdout: 0stderr: |
mksh | 10 Two bad variable substitutions stdout: 0stderr: |
zsh | 10 Two bad variable substitutions stdout: 0stderr: |
osh | 12 Ternary operator [osh stdout] Expected b'10\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, cflow = ex.Execute(node) File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 758, in Execute status, cflow = self.Execute(child) # last status wins File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 659, in Execute argv = self.ev.EvalWords(node.words) File "/home/andy/git/oil/bin/../core/word_eval.py", line 791, in EvalWords ok, val = self.EvalCompoundWord(w, ifs=ifs, do_glob=do_glob) File "/home/andy/git/oil/bin/../core/word_eval.py", line 580, in EvalCompoundWord ok, val = self.EvalWordPart(p, quoted=False) File "/home/andy/git/oil/bin/../core/word_eval.py", line 713, in EvalWordPart return self.EvalArithSub(part.anode) File "/home/andy/git/oil/bin/../core/word_eval.py", line 228, 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 |
dash | 13 Preincrement stdout: 4 4stderr: |
osh | 13 Preincrement [osh stdout] Expected b'5\n5\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, cflow = ex.Execute(node) File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 758, in Execute status, cflow = self.Execute(child) # last status wins File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 659, in Execute argv = self.ev.EvalWords(node.words) File "/home/andy/git/oil/bin/../core/word_eval.py", line 791, in EvalWords ok, val = self.EvalCompoundWord(w, ifs=ifs, do_glob=do_glob) File "/home/andy/git/oil/bin/../core/word_eval.py", line 580, in EvalCompoundWord ok, val = self.EvalWordPart(p, quoted=False) File "/home/andy/git/oil/bin/../core/word_eval.py", line 713, in EvalWordPart return self.EvalArithSub(part.anode) File "/home/andy/git/oil/bin/../core/word_eval.py", line 228, 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 239, in _Eval raise AssertionError("Shouldn't get here") AssertionError: Shouldn't get here |
dash | 14 Postincrement stdout: stderr: /bin/dash: 2: arithmetic expression: expecting primary: "a++" |
osh | 14 Postincrement [osh stdout] Expected b'4\n5\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, cflow = ex.Execute(node) File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 758, in Execute status, cflow = self.Execute(child) # last status wins File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 659, in Execute argv = self.ev.EvalWords(node.words) File "/home/andy/git/oil/bin/../core/word_eval.py", line 791, in EvalWords ok, val = self.EvalCompoundWord(w, ifs=ifs, do_glob=do_glob) File "/home/andy/git/oil/bin/../core/word_eval.py", line 580, in EvalCompoundWord ok, val = self.EvalWordPart(p, quoted=False) File "/home/andy/git/oil/bin/../core/word_eval.py", line 713, in EvalWordPart return self.EvalArithSub(part.anode) File "/home/andy/git/oil/bin/../core/word_eval.py", line 228, 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 239, in _Eval raise AssertionError("Shouldn't get here") AssertionError: Shouldn't get here |
dash | 15 Comma operator (borrowed from C) stdout: stderr: /bin/dash: 3: arithmetic expression: expecting EOF: "a,(b+1)" |
osh | 16 Mutating ops [osh stdout] Expected b'5\n5\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, cflow = ex.Execute(node) File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 758, in Execute status, cflow = self.Execute(child) # last status wins File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 659, in Execute argv = self.ev.EvalWords(node.words) File "/home/andy/git/oil/bin/../core/word_eval.py", line 791, in EvalWords ok, val = self.EvalCompoundWord(w, ifs=ifs, do_glob=do_glob) File "/home/andy/git/oil/bin/../core/word_eval.py", line 580, in EvalCompoundWord ok, val = self.EvalWordPart(p, quoted=False) File "/home/andy/git/oil/bin/../core/word_eval.py", line 713, in EvalWordPart return self.EvalArithSub(part.anode) File "/home/andy/git/oil/bin/../core/word_eval.py", line 228, 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 237, in _Eval raise AssertionError("Invalid node %r" % node.id) AttributeError: 'ArithAssign' object has no attribute 'id' |
osh | 17 Bitwise ops [osh stdout] Expected b'3\n0\n-4\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, cflow = ex.Execute(node) File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 758, in Execute status, cflow = self.Execute(child) # last status wins File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 659, in Execute argv = self.ev.EvalWords(node.words) File "/home/andy/git/oil/bin/../core/word_eval.py", line 791, in EvalWords ok, val = self.EvalCompoundWord(w, ifs=ifs, do_glob=do_glob) File "/home/andy/git/oil/bin/../core/word_eval.py", line 580, in EvalCompoundWord ok, val = self.EvalWordPart(p, quoted=False) File "/home/andy/git/oil/bin/../core/word_eval.py", line 713, in EvalWordPart return self.EvalArithSub(part.anode) File "/home/andy/git/oil/bin/../core/word_eval.py", line 228, 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 239, in _Eval raise AssertionError("Shouldn't get here") AssertionError: Shouldn't get here |
dash | 19 No floating point stdout: stderr: /bin/dash: 1: arithmetic expression: expecting EOF: "1 + 2.3" |
zsh | 19 No floating point stdout: 3.2999999999999998stderr: |
osh | 19 No floating point [osh status] Expected 1, got 2 stdout: <core.base.ParseError object at 0x7fdc893a1470> Line 1 of '<stdin>' echo $((1 + 2.3)) ^ --- <core.base.ParseError object at 0x7fdc893a1470> Line 1 of '<stdin>' echo $((1 + 2.3)) ^ --- <core.base.ParseError object at 0x7fdc893a14a8> Line 0 of '<unknown>' <token had no position info> NO COL --- <core.base.ParseError object at 0x7fdc893a14e0> Line 0 of '<unknown>' <token had no position info> NO COL --- <core.base.ParseError object at 0x7fdc893a1160> Line 0 of '<unknown>' <token had no position info> NO COL --- <core.base.ParseError object at 0x7fdc893a1128> Line 1 of '<stdin>' echo $((1 + 2.3)) ^ --- <core.base.ParseError object at 0x7fdc893a12e8> Line 0 of '<unknown>' <token had no position info> NO COL ---stderr: Unknown token in arith context: (token id:Unknown_Tok val:. span_id:8) Unknown token in arith context: (token id:Unknown_Tok val:. span_id:8) Error reading arith word in ArithParser Error parsing arith sub part Error reading command word Error parsing AndOr in ParseCommandTerm |
dash | 20 Array indexing in arith stdout: stderr: /bin/dash: 1: Syntax error: "(" unexpected |
zsh | 20 Array indexing in arith stdout: 7stderr: |
osh | 20 Array indexing in arith [osh stdout] Expected b'11\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, cflow = ex.Execute(node) File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 758, in Execute status, cflow = self.Execute(child) # last status wins File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 663, in Execute raise AssertionError('Error evaluating words: %s' % err) AssertionError: Error evaluating words: ['', 'Error evaluating word part (ArithSubPart\n anode: \n (ArithBinary\n op_id: Arith_Plus\n left: \n (ArithBinary\n op_id: Arith_LBracket\n left: (RightVar name:array)\n right: \n (ArithWord\n w: (CompoundWord parts:[(LiteralPart token:(token id:Lit_Digits val:1 span_id:16))])\n )\n )\n right: \n (ArithBinary\n op_id: Arith_Star\n left: \n (ArithBinary\n op_id: Arith_LBracket\n left: (RightVar name:array)\n right: \n (ArithWord\n w: \n (CompoundWord\n parts: [(LiteralPart token:(token id:Lit_Digits val:2 span_id:23))]\n )\n )\n )\n right: \n (ArithWord\n w: (CompoundWord parts:[(LiteralPart token:(token id:Lit_Digits val:3 span_id:26))])\n )\n )\n )\n spids: [13 28]\n)', 'Error evaluating word (CompoundWord\n parts: [\n (ArithSubPart\n anode: \n (ArithBinary\n op_id: Arith_Plus\n left: \n (ArithBinary\n op_id: Arith_LBracket\n left: (RightVar name:array)\n right: \n (ArithWord\n w: \n (CompoundWord\n parts: [(LiteralPart token:(token id:Lit_Digits val:1 span_id:16))]\n )\n )\n )\n right: \n (ArithBinary\n op_id: Arith_Star\n left: \n (ArithBinary\n op_id: Arith_LBracket\n left: (RightVar name:array)\n right: \n (ArithWord\n w: \n (CompoundWord\n parts: [(LiteralPart token:(token id:Lit_Digits val:2 span_id:23))]\n )\n )\n )\n right: \n (ArithWord\n w: \n (CompoundWord\n parts: [(LiteralPart token:(token id:Lit_Digits val:3 span_id:26))]\n )\n )\n )\n )\n spids: [13 28]\n )\n ]\n)'] |
dash | 21 Constants in base 36 stdout: stderr: /bin/dash: 1: arithmetic expression: expecting EOF: "36#a" |
dash | 22 Constants in bases 2 to 64 stdout: stderr: /bin/dash: 1: arithmetic expression: expecting EOF: "64#a" |
mksh | 22 Constants in bases 2 to 64 stdout: stderr: /bin/mksh: <stdin>[1]: 64#a: bad number '64#a' |
zsh | 22 Constants in bases 2 to 64 stdout: stderr: zsh: invalid base (must be 2 to 36 inclusive): 64 |
dash | 23 Dynamic base constants stdout: stderr: /bin/dash: 2: arithmetic expression: expecting EOF: " 16#a " |
mksh | 24 Octal constant stdout: 11stderr: |
zsh | 24 Octal constant stdout: 11stderr: |
mksh | 25 Dynamic octal constant stdout: 11stderr: |
zsh | 25 Dynamic octal constant stdout: 11stderr: |
osh | 27 Dynamic var names! [osh stdout] Expected b'11\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, cflow = ex.Execute(node) File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 758, in Execute status, cflow = self.Execute(child) # last status wins File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 663, in Execute raise AssertionError('Error evaluating words: %s' % err) AssertionError: Error evaluating words: ["Invalid integer constant 'foo'", '', 'Error evaluating word part (ArithSubPart\n anode: \n (ArithBinary\n op_id: Arith_Plus\n left: \n (ArithBinary\n op_id: Arith_Plus\n left: (RightVar name:foo)\n right: \n (ArithWord\n w: \n (CompoundWord\n parts: [\n (LiteralPart\n token: (token id:Lit_ArithVarLike val:f span_id:14)\n )\n (SimpleVarSub token:(token id:VSub_Name val:"$x" span_id:15))\n ]\n )\n )\n )\n right: \n (ArithWord\n w: (CompoundWord parts:[(LiteralPart token:(token id:Lit_Digits val:1 span_id:19))])\n )\n )\n spids: [8 22]\n)', 'Error evaluating word (CompoundWord\n parts: [\n (ArithSubPart\n anode: \n (ArithBinary\n op_id: Arith_Plus\n left: \n (ArithBinary\n op_id: Arith_Plus\n left: (RightVar name:foo)\n right: \n (ArithWord\n w: \n (CompoundWord\n parts: [\n (LiteralPart\n token: (token id:Lit_ArithVarLike val:f span_id:14)\n )\n (SimpleVarSub\n token: (token id:VSub_Name val:"$x" span_id:15)\n )\n ]\n )\n )\n )\n right: \n (ArithWord\n w: (CompoundWord parts:[(LiteralPart token:(token id:Lit_Digits val:1 span_id:19))])\n )\n )\n spids: [8 22]\n )\n ]\n)'] |