108 passed, 11 ok, 5 known unimplemented, 6 known bugs, 14 failed, 0 skipped
mksh | 4 local array stdout: stderr: /bin/mksh: <stdin>[2]: syntax error: '(' unexpected |
mksh | 6 space before ( in array initialization stdout: 1stderr: |
osh | 6 space before ( in array initialization [osh status] Expected 2, got 1 stdout: stderr: Traceback (most recent call last): File "bin/osh", line 388, in <module> sys.exit(main(sys.argv)) File "bin/osh", line 378, in main return OshMain(main_argv) File "bin/osh", line 296, in OshMain node = c_parser.ParseWholeFile() File "/home/andy/git/oil2/bin/../osh/cmd_parse.py", line 1531, in ParseWholeFile if not self._NewlineOk(): return None File "/home/andy/git/oil2/bin/../osh/cmd_parse.py", line 185, in _NewlineOk if not self._Peek(): File "/home/andy/git/oil2/bin/../osh/cmd_parse.py", line 148, in _Peek w = self.w_parser.ReadWord(self.next_lex_mode) File "/home/andy/git/oil2/bin/../osh/word_parse.py", line 1098, in ReadWord w, need_more = self._ReadWord(lex_mode) File "/home/andy/git/oil2/bin/../osh/word_parse.py", line 1059, in _ReadWord w = self._ReadCompoundWord(lex_mode=lex_mode) File "/home/andy/git/oil2/bin/../osh/word_parse.py", line 893, in _ReadCompoundWord part2 = self._ReadArrayLiteralPart() File "/home/andy/git/oil2/bin/../osh/word_parse.py", line 838, in _ReadArrayLiteralPart assert self.cur_token.id == Id.Op_LParen, self.cur_token AssertionError: (token id:WS_Space val:" " span_id:1) |
osh | 9 Assign to array index without initialization [osh stdout] Expected b"['9']\n", got b'[]\n' stdout: []stderr: Unexpected error in execvpe('b[2]=9', ['b[2]=9'], ...): [Errno 2] No such file or directory |
osh | 15 Retrieve all indices with ! [osh stdout] Expected b"['0', '1']\n", got b'' stdout: stderr: Traceback (most recent call last): File "bin/osh", line 388, in <module> sys.exit(main(sys.argv)) File "bin/osh", line 378, in main return OshMain(main_argv) File "bin/osh", line 337, in OshMain status = ex.Execute(node) File "/home/andy/git/oil2/bin/../core/cmd_exec.py", line 1111, in Execute status = self._Execute(node) File "/home/andy/git/oil2/bin/../core/cmd_exec.py", line 974, in _Execute status = self._Execute(child) # last status wins File "/home/andy/git/oil2/bin/../core/cmd_exec.py", line 869, in _Execute argv = self.ev.EvalWordSequence(words) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 1056, in EvalWordSequence return self._EvalWordSequence(words) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 1039, in _EvalWordSequence args = self._EvalWordAndReframe(w) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 992, in _EvalWordAndReframe part_vals = self._EvalParts(word) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 885, in _EvalParts for v in self.part_ev._EvalWordPart(p, quoted=quoted): File "/home/andy/git/oil2/bin/../core/word_eval.py", line 803, in _EvalWordPart return [self._EvalDoubleQuotedPart(part)] File "/home/andy/git/oil2/bin/../core/word_eval.py", line 576, in _EvalDoubleQuotedPart for part_val in self._EvalWordPart(p, quoted=True): File "/home/andy/git/oil2/bin/../core/word_eval.py", line 829, in _EvalWordPart return self._EvalBracedVarSub(part, quoted) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 728, in _EvalBracedVarSub val = self._ApplyPrefixOp(val, part.prefix_op) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 428, in _ApplyPrefixOp raise NotImplementedError(op_id) NotImplementedError: VSub_Bang |
mksh | 16 Retrieve indices for one value stdout: ['1']stderr: |
osh | 16 Retrieve indices for one value [osh stdout] Expected b"['']\n", got b'' [osh status] Expected 0, got 1 stdout: stderr: Traceback (most recent call last): File "bin/osh", line 388, in <module> sys.exit(main(sys.argv)) File "bin/osh", line 378, in main return OshMain(main_argv) File "bin/osh", line 337, in OshMain status = ex.Execute(node) File "/home/andy/git/oil2/bin/../core/cmd_exec.py", line 1111, in Execute status = self._Execute(node) File "/home/andy/git/oil2/bin/../core/cmd_exec.py", line 974, in _Execute status = self._Execute(child) # last status wins File "/home/andy/git/oil2/bin/../core/cmd_exec.py", line 869, in _Execute argv = self.ev.EvalWordSequence(words) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 1056, in EvalWordSequence return self._EvalWordSequence(words) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 1039, in _EvalWordSequence args = self._EvalWordAndReframe(w) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 992, in _EvalWordAndReframe part_vals = self._EvalParts(word) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 885, in _EvalParts for v in self.part_ev._EvalWordPart(p, quoted=quoted): File "/home/andy/git/oil2/bin/../core/word_eval.py", line 803, in _EvalWordPart return [self._EvalDoubleQuotedPart(part)] File "/home/andy/git/oil2/bin/../core/word_eval.py", line 576, in _EvalDoubleQuotedPart for part_val in self._EvalWordPart(p, quoted=True): File "/home/andy/git/oil2/bin/../core/word_eval.py", line 829, in _EvalWordPart return self._EvalBracedVarSub(part, quoted) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 728, in _EvalBracedVarSub val = self._ApplyPrefixOp(val, part.prefix_op) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 428, in _ApplyPrefixOp raise NotImplementedError(op_id) NotImplementedError: VSub_Bang |
mksh | 17 Retrieve indices without [] stdout: ['a']stderr: |
osh | 17 Retrieve indices without [] [osh stdout] Expected b"['']\n", got b'' stdout: stderr: Traceback (most recent call last): File "bin/osh", line 388, in <module> sys.exit(main(sys.argv)) File "bin/osh", line 378, in main return OshMain(main_argv) File "bin/osh", line 337, in OshMain status = ex.Execute(node) File "/home/andy/git/oil2/bin/../core/cmd_exec.py", line 1111, in Execute status = self._Execute(node) File "/home/andy/git/oil2/bin/../core/cmd_exec.py", line 974, in _Execute status = self._Execute(child) # last status wins File "/home/andy/git/oil2/bin/../core/cmd_exec.py", line 869, in _Execute argv = self.ev.EvalWordSequence(words) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 1056, in EvalWordSequence return self._EvalWordSequence(words) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 1039, in _EvalWordSequence args = self._EvalWordAndReframe(w) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 992, in _EvalWordAndReframe part_vals = self._EvalParts(word) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 885, in _EvalParts for v in self.part_ev._EvalWordPart(p, quoted=quoted): File "/home/andy/git/oil2/bin/../core/word_eval.py", line 803, in _EvalWordPart return [self._EvalDoubleQuotedPart(part)] File "/home/andy/git/oil2/bin/../core/word_eval.py", line 576, in _EvalDoubleQuotedPart for part_val in self._EvalWordPart(p, quoted=True): File "/home/andy/git/oil2/bin/../core/word_eval.py", line 829, in _EvalWordPart return self._EvalBracedVarSub(part, quoted) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 728, in _EvalBracedVarSub val = self._ApplyPrefixOp(val, part.prefix_op) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 428, in _ApplyPrefixOp raise NotImplementedError(op_id) NotImplementedError: VSub_Bang |
mksh | 23 Exporting array doesn't do anything, not even first element stdout: stderr: /bin/mksh: <stdin>[1]: syntax error: '(' unexpected |
osh | 23 Exporting array doesn't do anything, not even first element stdout: stderr: Line 1 of '<stdin>' export PYTHONPATH=(a b c) ^ Unexpected array literal: (CompoundWord parts: [ (ArrayLiteralPart words: [ (CompoundWord parts:[(LiteralPart token:(token id:Lit_Chars val:a span_id:4))]) (CompoundWord parts:[(LiteralPart token:(token id:Lit_Chars val:b span_id:6))]) (CompoundWord parts:[(LiteralPart token:(token id:Lit_Chars val:c span_id:8))]) ] ) ] ) --- Line 0 of '<unknown>' <token had no position info> NO COL Error parsing AndOr in ParseCommandTerm --- |
mksh | 24 Env with array stdout: stderr: /bin/mksh: <stdin>[1]: syntax error: '(' unexpected |
osh | 24 Env with array [osh stdout] Expected b'a\n(b b)\n', got b'' stdout: stderr: Line 1 of '<stdin>' A=a B=(b b) printenv.py A B ^ Unexpected array literal in binding: (CompoundWord parts: [ (ArrayLiteralPart words: [ (CompoundWord parts:[(LiteralPart token:(token id:Lit_Chars val:b span_id:5))]) (CompoundWord parts:[(LiteralPart token:(token id:Lit_Chars val:b span_id:7))]) ] ) ] ) --- Line 0 of '<unknown>' <token had no position info> NO COL Error parsing AndOr in ParseCommandTerm --- |
osh | 25 Set element [osh stdout] Expected b"['9', '2 3']\n", got b"['1', '2 3']\n" stdout: ['1', '2 3']stderr: Unexpected error in execvpe('a[0]=9', ['a[0]=9'], ...): [Errno 2] No such file or directory |
osh | 26 Set element with var ref [osh stdout] Expected b"['9', '2 3']\n", got b"['1', '2 3']\n" stdout: ['1', '2 3']stderr: Unexpected error in execvpe('a[0]=9', ['a[0]=9'], ...): [Errno 2] No such file or directory |
osh | 27 Set element with array ref [osh stdout] Expected b"['1', '9']\n", got b"['1', '2 3']\n" stdout: ['1', '2 3']stderr: Unexpected error in execvpe('a[1]=9', ['a[1]=9'], ...): [Errno 2] No such file or directory |
mksh | 28 Slice of array with [@] stdout: stderr: /bin/mksh: <stdin>[2]: ${a[@]: 1:2}": bad substitution |
osh | 28 Slice of array with [@] [osh stdout] Expected b"['2', '3']\n", got b'' stdout: stderr: Traceback (most recent call last): File "bin/osh", line 388, in <module> sys.exit(main(sys.argv)) File "bin/osh", line 378, in main return OshMain(main_argv) File "bin/osh", line 337, in OshMain status = ex.Execute(node) File "/home/andy/git/oil2/bin/../core/cmd_exec.py", line 1111, in Execute status = self._Execute(node) File "/home/andy/git/oil2/bin/../core/cmd_exec.py", line 974, in _Execute status = self._Execute(child) # last status wins File "/home/andy/git/oil2/bin/../core/cmd_exec.py", line 869, in _Execute argv = self.ev.EvalWordSequence(words) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 1056, in EvalWordSequence return self._EvalWordSequence(words) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 1039, in _EvalWordSequence args = self._EvalWordAndReframe(w) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 992, in _EvalWordAndReframe part_vals = self._EvalParts(word) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 885, in _EvalParts for v in self.part_ev._EvalWordPart(p, quoted=quoted): File "/home/andy/git/oil2/bin/../core/word_eval.py", line 803, in _EvalWordPart return [self._EvalDoubleQuotedPart(part)] File "/home/andy/git/oil2/bin/../core/word_eval.py", line 576, in _EvalDoubleQuotedPart for part_val in self._EvalWordPart(p, quoted=True): File "/home/andy/git/oil2/bin/../core/word_eval.py", line 829, in _EvalWordPart return self._EvalBracedVarSub(part, quoted) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 733, in _EvalBracedVarSub if LookupKind(part.suffix_op.op_id) == Kind.VTest: AttributeError: 'Slice' object has no attribute 'op_id' |
mksh | 29 Negative slice stdout: stderr: /bin/mksh: <stdin>[2]: ${a[@]: (-2):1}": bad substitution |
osh | 29 Negative slice [osh stdout] Expected b"['2']\n", got b'' stdout: stderr: Traceback (most recent call last): File "bin/osh", line 388, in <module> sys.exit(main(sys.argv)) File "bin/osh", line 378, in main return OshMain(main_argv) File "bin/osh", line 337, in OshMain status = ex.Execute(node) File "/home/andy/git/oil2/bin/../core/cmd_exec.py", line 1111, in Execute status = self._Execute(node) File "/home/andy/git/oil2/bin/../core/cmd_exec.py", line 974, in _Execute status = self._Execute(child) # last status wins File "/home/andy/git/oil2/bin/../core/cmd_exec.py", line 869, in _Execute argv = self.ev.EvalWordSequence(words) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 1056, in EvalWordSequence return self._EvalWordSequence(words) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 1039, in _EvalWordSequence args = self._EvalWordAndReframe(w) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 992, in _EvalWordAndReframe part_vals = self._EvalParts(word) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 885, in _EvalParts for v in self.part_ev._EvalWordPart(p, quoted=quoted): File "/home/andy/git/oil2/bin/../core/word_eval.py", line 803, in _EvalWordPart return [self._EvalDoubleQuotedPart(part)] File "/home/andy/git/oil2/bin/../core/word_eval.py", line 576, in _EvalDoubleQuotedPart for part_val in self._EvalWordPart(p, quoted=True): File "/home/andy/git/oil2/bin/../core/word_eval.py", line 829, in _EvalWordPart return self._EvalBracedVarSub(part, quoted) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 733, in _EvalBracedVarSub if LookupKind(part.suffix_op.op_id) == Kind.VTest: AttributeError: 'Slice' object has no attribute 'op_id' |
mksh | 30 Slice with arithmetic stdout: stderr: /bin/mksh: <stdin>[3]: ${a[@]:i-4:2}": bad substitution |
osh | 30 Slice with arithmetic [osh stdout] Expected b"['2', '3']\n", got b'' stdout: stderr: Traceback (most recent call last): File "bin/osh", line 388, in <module> sys.exit(main(sys.argv)) File "bin/osh", line 378, in main return OshMain(main_argv) File "bin/osh", line 337, in OshMain status = ex.Execute(node) File "/home/andy/git/oil2/bin/../core/cmd_exec.py", line 1111, in Execute status = self._Execute(node) File "/home/andy/git/oil2/bin/../core/cmd_exec.py", line 974, in _Execute status = self._Execute(child) # last status wins File "/home/andy/git/oil2/bin/../core/cmd_exec.py", line 869, in _Execute argv = self.ev.EvalWordSequence(words) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 1056, in EvalWordSequence return self._EvalWordSequence(words) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 1039, in _EvalWordSequence args = self._EvalWordAndReframe(w) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 992, in _EvalWordAndReframe part_vals = self._EvalParts(word) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 885, in _EvalParts for v in self.part_ev._EvalWordPart(p, quoted=quoted): File "/home/andy/git/oil2/bin/../core/word_eval.py", line 803, in _EvalWordPart return [self._EvalDoubleQuotedPart(part)] File "/home/andy/git/oil2/bin/../core/word_eval.py", line 576, in _EvalDoubleQuotedPart for part_val in self._EvalWordPart(p, quoted=True): File "/home/andy/git/oil2/bin/../core/word_eval.py", line 829, in _EvalWordPart return self._EvalBracedVarSub(part, quoted) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 733, in _EvalBracedVarSub if LookupKind(part.suffix_op.op_id) == Kind.VTest: AttributeError: 'Slice' object has no attribute 'op_id' |
osh | 35 declare array and then append [osh stdout] Expected b"['a', 'b', 'c']\n", got b'' stdout: stderr: Traceback (most recent call last): File "bin/osh", line 388, in <module> sys.exit(main(sys.argv)) File "bin/osh", line 378, in main return OshMain(main_argv) File "bin/osh", line 337, in OshMain status = ex.Execute(node) File "/home/andy/git/oil2/bin/../core/cmd_exec.py", line 1111, in Execute status = self._Execute(node) File "/home/andy/git/oil2/bin/../core/cmd_exec.py", line 974, in _Execute status = self._Execute(child) # last status wins File "/home/andy/git/oil2/bin/../core/cmd_exec.py", line 940, in _Execute ok, val = self.ev.EvalWordToAny(pair.rhs) File "/home/andy/git/oil2/bin/../core/word_eval.py", line 934, in EvalWordToAny if (len(word.parts) == 1 and AttributeError: 'NoneType' object has no attribute 'parts' |
mksh | 36 Array syntax in wrong place stdout: stderr: /bin/mksh: <stdin>[1]: syntax error: '(' unexpected |
bash | 38 Single array with :- stdout: ['none', 'x', '']stderr: |
mksh | 38 Single array with :- stdout: ['none', 'x', 'none']stderr: |
osh | 38 Single array with :- stdout: ['x', '']stderr: |
mksh | 39 Stripping a whole array unquoted stdout: stderr: /bin/mksh: <stdin>[2]: ${files[@]%.c}: bad substitution |
mksh | 40 Stripping a whole array quoted stdout: stderr: /bin/mksh: <stdin>[2]: ${files[@]%.c}": bad substitution |
bash | 41 Multiple subscripts not allowed stdout: ['123', '123']stderr: |
mksh | 41 Multiple subscripts not allowed stdout: stderr: /bin/mksh: <stdin>[2]: ${a[0][0]}": bad substitution |
osh | 41 Multiple subscripts not allowed [osh status] Expected 2, got 1 stdout: stderr: Traceback (most recent call last): File "bin/osh", line 388, in <module> sys.exit(main(sys.argv)) File "bin/osh", line 378, in main return OshMain(main_argv) File "bin/osh", line 296, in OshMain node = c_parser.ParseWholeFile() File "/home/andy/git/oil2/bin/../osh/cmd_parse.py", line 1540, in ParseWholeFile node = self.ParseCommandTerm() File "/home/andy/git/oil2/bin/../osh/cmd_parse.py", line 1448, in ParseCommandTerm child = self.ParseAndOr() File "/home/andy/git/oil2/bin/../osh/cmd_parse.py", line 1313, in ParseAndOr left = self.ParsePipeline() File "/home/andy/git/oil2/bin/../osh/cmd_parse.py", line 1249, in ParsePipeline child = self.ParseCommand() File "/home/andy/git/oil2/bin/../osh/cmd_parse.py", line 1231, in ParseCommand return self.ParseSimpleCommand() # echo foo File "/home/andy/git/oil2/bin/../osh/cmd_parse.py", line 544, in ParseSimpleCommand result = self._ScanSimpleCommand() File "/home/andy/git/oil2/bin/../osh/cmd_parse.py", line 351, in _ScanSimpleCommand if not self._Peek(): return None File "/home/andy/git/oil2/bin/../osh/cmd_parse.py", line 148, in _Peek w = self.w_parser.ReadWord(self.next_lex_mode) File "/home/andy/git/oil2/bin/../osh/word_parse.py", line 1098, in ReadWord w, need_more = self._ReadWord(lex_mode) File "/home/andy/git/oil2/bin/../osh/word_parse.py", line 1059, in _ReadWord w = self._ReadCompoundWord(lex_mode=lex_mode) File "/home/andy/git/oil2/bin/../osh/word_parse.py", line 905, in _ReadCompoundWord part = self._ReadLeftParts() File "/home/andy/git/oil2/bin/../osh/word_parse.py", line 513, in _ReadLeftParts return self._ReadDoubleQuotedPart() File "/home/andy/git/oil2/bin/../osh/word_parse.py", line 575, in _ReadDoubleQuotedPart part = self._ReadDoubleQuotedLeftParts() File "/home/andy/git/oil2/bin/../osh/word_parse.py", line 499, in _ReadDoubleQuotedLeftParts return self._ReadBracedBracedVarSub(d_quoted=True) File "/home/andy/git/oil2/bin/../osh/word_parse.py", line 454, in _ReadBracedBracedVarSub part = self._ParseVarExpr(arg_lex_mode) File "/home/andy/git/oil2/bin/../osh/word_parse.py", line 332, in _ParseVarExpr raise AssertionError("Invalid op token %s" % self.cur_token) AssertionError: Invalid op token (token id:VOp2_LBracket val:"[" span_id:28) |
bash | 42 Length op, index op, then transform op is not allowed stdout: 3 3stderr: |
mksh | 42 Length op, index op, then transform op is not allowed stdout: stderr: /bin/mksh: <stdin>[2]: ${#a[0]/1/xxx}": bad substitution |
bash | 43 Array subscript not allowed on string stdout: abcstderr: |
mksh | 43 Array subscript not allowed on string stdout: abcstderr: |