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 pass $1 .. $9 are scoped, while $0 is not
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

36 passed, 8 ok, 0 known unimplemented, 3 known bugs, 5 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 0

stdout:
stderr: 
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 0

stdout:
stderr: 
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 430, in <module>
    main(sys.argv)
  File "bin/osh", line 417, in main
    sys.exit(OilMain(argv))
  File "bin/osh", line 400, in OilMain
    status = OshMain(main_argv)
  File "bin/osh", line 318, in OshMain
    node = c_parser.ParseWholeFile()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1559, in ParseWholeFile
    node = self.ParseCommandTerm()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1467, in ParseCommandTerm
    child = self.ParseAndOr()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1332, in ParseAndOr
    left = self.ParsePipeline()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1268, in ParsePipeline
    child = self.ParseCommand()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1250, in ParseCommand
    return self.ParseSimpleCommand()  # echo foo
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 547, in ParseSimpleCommand
    result = self._ScanSimpleCommand()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 354, in _ScanSimpleCommand
    if not self._Peek(): return None
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 151, in _Peek
    w = self.w_parser.ReadWord(self.next_lex_mode)
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 1107, in ReadWord
    w, need_more = self._ReadWord(lex_mode)
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 1068, in _ReadWord
    w = self._ReadCompoundWord(lex_mode=lex_mode)
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 914, in _ReadCompoundWord
    part = self._ReadLeftParts()
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 533, in _ReadLeftParts
    return self._ReadBracedBracedVarSub(d_quoted=False)
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 459, 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 430, in <module>
    main(sys.argv)
  File "bin/osh", line 417, in main
    sys.exit(OilMain(argv))
  File "bin/osh", line 400, in OilMain
    status = OshMain(main_argv)
  File "bin/osh", line 318, in OshMain
    node = c_parser.ParseWholeFile()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1559, in ParseWholeFile
    node = self.ParseCommandTerm()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1467, in ParseCommandTerm
    child = self.ParseAndOr()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1332, in ParseAndOr
    left = self.ParsePipeline()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1268, in ParsePipeline
    child = self.ParseCommand()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1230, in ParseCommand
    node = self.ParseCompoundCommand()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1038, in ParseCompoundCommand
    return self.ParseIf()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 980, in ParseIf
    body = self.ParseCommandList()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1537, in ParseCommandList
    node = self.ParseCommandTerm()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1467, in ParseCommandTerm
    child = self.ParseAndOr()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1332, in ParseAndOr
    left = self.ParsePipeline()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1268, in ParsePipeline
    child = self.ParseCommand()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1250, in ParseCommand
    return self.ParseSimpleCommand()  # echo foo
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 547, in ParseSimpleCommand
    result = self._ScanSimpleCommand()
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 354, in _ScanSimpleCommand
    if not self._Peek(): return None
  File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 151, in _Peek
    w = self.w_parser.ReadWord(self.next_lex_mode)
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 1107, in ReadWord
    w, need_more = self._ReadWord(lex_mode)
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 1068, in _ReadWord
    w = self._ReadCompoundWord(lex_mode=lex_mode)
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 914, in _ReadCompoundWord
    part = self._ReadLeftParts()
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 533, in _ReadLeftParts
    return self._ReadBracedBracedVarSub(d_quoted=False)
  File "/home/andy/git/oil/bin/../osh/word_parse.py", line 459, in _ReadBracedBracedVarSub
    raise AssertionError(self.cur_token)
AssertionError: (token id:Unknown_Tok val:"%" span_id:15)
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