case | dash | bash | mksh | osh | osh_ALT | description |
0 | pass | pass | pass | pass | pass | Bad var sub |
1 | pass | ok | ok | pass | pass | Bad braced var sub -- not allowed |
details | details | |||||
2 | BUG | BUG | BUG | pass | pass | Bad var sub caught at parse time |
details | details | details | ||||
3 | pass | pass | ok | pass | pass | Incomplete while |
details | ||||||
4 | pass | pass | ok | FAIL | FAIL | Incomplete for |
details | details | details | ||||
5 | pass | pass | ok | pass | pass | Incomplete if |
details | ||||||
6 | pass | pass | ok | FAIL | FAIL | do unexpected |
details | details | details | ||||
7 | pass | pass | ok | pass | pass | } is a parse error |
details | ||||||
8 | BUG | pass | ok | FAIL | FAIL | { is its own word, needs a space |
details | details | details | details | |||
9 | pass | pass | pass | pass | pass | } on the second line |
10 | pass | BUG | ok | pass | pass | Invalid for loop variable name |
details | details | |||||
11 | pass | pass | pass | pass | pass | bad var name globally isn't parsed like an assignment |
12 | pass | ok | ok | FAIL | FAIL | bad var name in export |
details | details | details | details | |||
13 | BUG | BUG | BUG | pass | pass | bad var name in local |
details | details | details |
43 passed, 11 ok, 0 known unimplemented, 8 known bugs, 4 failed, 0 skipped
bash | 1 Bad braced var sub -- not allowed stdout: stderr: /bin/bash: line 1: ${%}: bad substitution |
mksh | 1 Bad braced var sub -- not allowed stdout: stderr: /bin/mksh: <stdin>[1]: ${%}: bad substitution |
dash | 2 Bad var sub caught at parse time stdout: okstderr: |
bash | 2 Bad var sub caught at parse time stdout: okstderr: |
mksh | 2 Bad var sub caught at parse time stdout: okstderr: |
mksh | 3 Incomplete while stdout: stderr: /bin/mksh: <stdin>[1]: syntax error: 'while' unmatched |
mksh | 4 Incomplete for stdout: stderr: /bin/mksh: <stdin>[1]: syntax error: 'newline' unexpected |
osh | 4 Incomplete for [osh status] Expected 2, got 1 stdout: stderr: Traceback (most recent call last): File "bin/osh", line 448, in <module> main(sys.argv) File "bin/osh", line 435, in main sys.exit(OilMain(argv)) File "bin/osh", line 418, in OilMain status = OshMain(main_argv) File "bin/osh", line 327, in OshMain node = c_parser.ParseWholeFile() File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1592, in ParseWholeFile node = self.ParseCommandTerm() File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1504, in ParseCommandTerm child = self.ParseAndOr() File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1373, in ParseAndOr left = self.ParsePipeline() File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1308, in ParsePipeline child = self.ParseCommand() File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1262, in ParseCommand node = self.ParseCompoundCommand() File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1060, in ParseCompoundCommand return self.ParseFor() File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 821, in ParseFor node = self._ParseForEachLoop() File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 759, in _ParseForEachLoop ok, iter_name, quoted = word.StaticEval(self.cur_word) File "/home/andy/git/oil/bin/../core/word.py", line 88, in StaticEval for part in w.parts: AttributeError: 'TokenWord' object has no attribute 'parts' |
osh_ALT | 4 Incomplete for [osh_ALT status] Expected 2, got 1 stdout: stderr: Traceback (most recent call last): File "/home/andy/git/oil/Python-2.7.13/Lib/runpy.py", line 174, in _run_module_as_main "__main__", fname, loader, pkg_name) File "/home/andy/git/oil/Python-2.7.13/Lib/runpy.py", line 72, in _run_code exec code in run_globals File "/home/andy/git/oil/bin/oil.py", line 448, in <module> main(sys.argv) File "/home/andy/git/oil/bin/oil.py", line 435, in main sys.exit(OilMain(argv)) File "/home/andy/git/oil/bin/oil.py", line 418, in OilMain status = OshMain(main_argv) File "/home/andy/git/oil/bin/oil.py", line 327, in OshMain node = c_parser.ParseWholeFile() File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1592, in ParseWholeFile node = self.ParseCommandTerm() File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1504, in ParseCommandTerm child = self.ParseAndOr() File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1373, in ParseAndOr left = self.ParsePipeline() File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1308, in ParsePipeline child = self.ParseCommand() File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1262, in ParseCommand node = self.ParseCompoundCommand() File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 1060, in ParseCompoundCommand return self.ParseFor() File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 821, in ParseFor node = self._ParseForEachLoop() File "/home/andy/git/oil/bin/../osh/cmd_parse.py", line 759, in _ParseForEachLoop ok, iter_name, quoted = word.StaticEval(self.cur_word) File "/home/andy/git/oil/bin/../core/word.py", line 88, in StaticEval for part in w.parts: AttributeError: 'TokenWord' object has no attribute 'parts' |
mksh | 5 Incomplete if stdout: stderr: /bin/mksh: <stdin>[1]: syntax error: 'if' unmatched |
mksh | 6 do unexpected stdout: stderr: /bin/mksh: <stdin>[1]: syntax error: 'do' unexpected |
osh | 6 do unexpected [osh status] Expected 2, got 0 stdout: stderr: |
osh_ALT | 6 do unexpected [osh_ALT status] Expected 2, got 0 stdout: stderr: |
mksh | 7 } is a parse error stdout: stderr: /bin/mksh: <stdin>[1]: syntax error: '}' unexpected |
dash | 8 { is its own word, needs a space stdout: status=127stderr: /bin/dash: 1: {ls: not found |
mksh | 8 { is its own word, needs a space stdout: stderr: /bin/mksh: <stdin>[1]: syntax error: '}' unexpected |
osh | 8 { 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 |
osh_ALT | 8 { is its own word, needs a space [osh_ALT status] Expected 2, got 127 stdout: stderr: Unexpected error in execvpe('{ls', ['{ls'], ...): [Errno 2] No such file or directory |
bash | 10 Invalid for loop variable name stdout: donestderr: /bin/bash: line 3: `i.j': not a valid identifier |
mksh | 10 Invalid for loop variable name stdout: stderr: /bin/mksh: <stdin>[1]: for: bad identifier |
bash | 12 bad var name in export stdout: stderr: /bin/bash: line 1: export: `FOO-BAR=foo': not a valid identifier |
mksh | 12 bad var name in export stdout: stderr: /bin/mksh: <stdin>[1]: export: FOO-BAR=foo: is not an identifier |
osh | 12 bad var name in export [osh status] Expected 2, got 0 stdout: stderr: |
osh_ALT | 12 bad var name in export [osh_ALT status] Expected 2, got 0 stdout: stderr: |
dash | 13 bad var name in local stdout: stderr: |
bash | 13 bad var name in local stdout: stderr: |
mksh | 13 bad var name in local stdout: stderr: |