Results for explore-parsing.test.sh

casedashbashmkshoshdescription
0pass ok ok FAIL Bad env name: hyphen
detailsdetailsdetails
1pass ok ok FAIL Bad env name: period
detailsdetailsdetails
2pass pass pass pass Bad var sub
3pass ok ok FAIL Bad braced var sub -- not allowed
detailsdetailsdetails
4BUG BUG BUG FAIL Bad var sub caught at parse time
detailsdetailsdetailsdetails
5pass pass pass pass Pipe with while
6pass pass pass pass Length of length of ARGS!
7pass pass pass pass Length of length of ARGS! 2 digit
8pass pass pass FAIL $1 .. $9 are scoped, while $0 is not
details
9pass pass pass pass Chained && and || -- || has higher precedence?
10pass pass pass pass Pipeline comments
11pass pass pass pass Command block
12ok pass ok FAIL { is its own word, needs a space
detailsdetailsdetails

35 passed, 8 ok, 0 known unimplemented, 3 known bugs, 6 failed, 0 skipped

Details on runs that didn't PASS

bash0 Bad env name: hyphen

stdout:
stderr: 
/bin/bash: line 1: export: `FOO-BAR=foo': not a valid identifier
mksh0 Bad env name: hyphen

stdout:
stderr: 
/bin/mksh: <stdin>[1]: export: FOO-BAR=foo: is not an identifier
osh0 Bad env name: hyphen

[osh status] Expected 2, got 1

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 739, in Execute
    ok, val = self.ev.EvalCompoundWord(pair.rhs)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 573, in EvalCompoundWord
    assert isinstance(word, ast.CompoundWord), "Expected CompoundWord, got %s" % word
AssertionError: Expected CompoundWord, got None
bash1 Bad env name: period

stdout:
stderr: 
/bin/bash: line 1: export: `FOO.BAR=foo': not a valid identifier
mksh1 Bad env name: period

stdout:
stderr: 
/bin/mksh: <stdin>[1]: export: FOO.BAR=foo: is not an identifier
osh1 Bad env name: period

[osh status] Expected 2, got 1

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 739, in Execute
    ok, val = self.ev.EvalCompoundWord(pair.rhs)
  File "/home/andy/git/oil/bin/../core/word_eval.py", line 573, in EvalCompoundWord
    assert isinstance(word, ast.CompoundWord), "Expected CompoundWord, got %s" % word
AssertionError: Expected CompoundWord, got None
bash3 Bad braced var sub -- not allowed

stdout:
stderr: 
/bin/bash: line 1: ${%}: bad substitution
mksh3 Bad braced var sub -- not allowed

stdout:
stderr: 
/bin/mksh: <stdin>[1]: ${%}: bad substitution
osh3 Bad braced var sub -- not allowed

[osh status] Expected 2, got 1

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 286, in OshMain
    node = c_parser.ParseWholeFile()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1561, in ParseWholeFile
    node = self.ParseCommandTerm()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1469, in ParseCommandTerm
    child = self.ParseAndOr()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1334, in ParseAndOr
    left = self.ParsePipeline()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1270, in ParsePipeline
    child = self.ParseCommand()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1252, in ParseCommand
    return self.ParseSimpleCommand()  # echo foo
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 599, in ParseSimpleCommand
    result = self._ScanSimpleCommand()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 414, in _ScanSimpleCommand
    if not self._Peek(): return None
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 144, in _Peek
    w = self.w_parser.ReadWord(self.next_lex_mode)
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 1093, in ReadWord
    w, need_more = self._ReadWord(lex_mode)
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 1054, in _ReadWord
    w = self._ReadCompoundWord(lex_mode=lex_mode)
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 900, in _ReadCompoundWord
    part = self._ReadLeftParts()
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 531, in _ReadLeftParts
    return self._ReadBracedBracedVarSub(d_quoted=False)
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 457, in _ReadBracedBracedVarSub
    raise AssertionError(self.cur_token)
AssertionError: (token id:Unknown_Tok val:"%" span_id:3)
dash4 Bad var sub caught at parse time

stdout:
ok
stderr:
bash4 Bad var sub caught at parse time

stdout:
ok
stderr:
mksh4 Bad var sub caught at parse time

stdout:
ok
stderr:
osh4 Bad var sub caught at parse time

[osh status] Expected 2, got 1

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 286, in OshMain
    node = c_parser.ParseWholeFile()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1561, in ParseWholeFile
    node = self.ParseCommandTerm()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1469, in ParseCommandTerm
    child = self.ParseAndOr()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1334, in ParseAndOr
    left = self.ParsePipeline()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1270, in ParsePipeline
    child = self.ParseCommand()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1233, in ParseCommand
    node = self.ParseCompoundCommand()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1043, in ParseCompoundCommand
    return self.ParseIf()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 998, in ParseIf
    body = self.ParseCommandList()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1539, in ParseCommandList
    node = self.ParseCommandTerm()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1469, in ParseCommandTerm
    child = self.ParseAndOr()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1334, in ParseAndOr
    left = self.ParsePipeline()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1270, in ParsePipeline
    child = self.ParseCommand()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1252, in ParseCommand
    return self.ParseSimpleCommand()  # echo foo
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 599, in ParseSimpleCommand
    result = self._ScanSimpleCommand()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 414, in _ScanSimpleCommand
    if not self._Peek(): return None
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 144, in _Peek
    w = self.w_parser.ReadWord(self.next_lex_mode)
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 1093, in ReadWord
    w, need_more = self._ReadWord(lex_mode)
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 1054, in _ReadWord
    w = self._ReadCompoundWord(lex_mode=lex_mode)
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 900, in _ReadCompoundWord
    part = self._ReadLeftParts()
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 531, in _ReadLeftParts
    return self._ReadBracedBracedVarSub(d_quoted=False)
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 457, in _ReadBracedBracedVarSub
    raise AssertionError(self.cur_token)
AssertionError: (token id:Unknown_Tok val:"%" span_id:15)
osh8 $1 .. $9 are scoped, while $0 is not

[osh stdout] Expected b'sh a 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, 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 689, in Execute
    status, cflow = thunk.RunInParent()
  File "/home/andy/git/oil/bin/../core/process.py", line 369, in RunInParent
    return self.ex.RunFunc(self.func_node, self.argv)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 474, in RunFunc
    status, cflow = self.Execute(func_body)
  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 703, in Execute
    status, cflow = self.Execute(node.command)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 706, in Execute
    status, cflow = self._RunPipeline(node)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 610, in _RunPipeline
    p = self._GetProcessForNode(child)
  File "/home/andy/git/oil/bin/../core/cmd_exec.py", line 519, in _GetProcessForNode
    raise AssertionError("Error evaluating words: %s" % err)
AssertionError: Error evaluating words: ['Undefined variable 0', 'Error evaluating word part (SimpleVarSub token:(token id:VSub_Number val:"$0" span_id:8))', 'Error evaluating word (CompoundWord parts:[(SimpleVarSub token:(token id:VSub_Number val:"$0" span_id:8))])']
dash12 { is its own word, needs a space

stdout:
stderr: 
/bin/dash: 1: {ls: not found
mksh12 { is its own word, needs a space

stdout:
stderr: 
/bin/mksh: <stdin>[1]: syntax error: '}' unexpected
osh12 { is its own word, needs a space

[osh status] Expected 2, got 127

stdout:
stderr: 
Unexpected error in execvpe('{ls', ['{ls'], ...): [Errno 2] No such file or directory: b'/home/andy/bin/{ls'