status | dash | bash | mksh | zsh | osh | |
pass | 7 | 8 | 6 | 7 | 4 | |
ok | 1 | 0 | 0 | 1 | 0 | |
N-I | 1 | 1 | 2 | 1 | 4 | |
BUG | 0 | 0 | 1 | 0 | 0 | |
FAIL | 0 | 0 | 0 | 0 | 1 | |
total | 9 | 9 | 9 | 9 | 9 | |
case | dash | bash | mksh | zsh | osh | description |
0 | pass | pass | pass | pass | pass | ${##} |
1 | pass | pass | pass | pass | N-I | ${###} |
details | ||||||
2 | pass | pass | pass | pass | N-I | ${####} |
details | ||||||
3 | pass | pass | pass | pass | N-I | ${##2} |
details | ||||||
4 | pass | pass | BUG | pass | N-I | ${###2} |
details | details | |||||
5 | pass | pass | pass | pass | pass | ${1####} |
6 | pass | pass | pass | pass | pass | ${1#'###'} |
7 | ok | N-I | N-I | ok | pass | ${#1#'###'} |
details | details | details | details | |||
8 | N-I | pass | N-I | N-I | FAIL | Julia example from spec/oil-user-feedback |
details | details | details | details |
32 passed, 2 OK, 9 not implemented, 1 BUG, 1 failed, 0 timeouts, 0 cases skipped 1 failed under osh
osh | 1 ${###} stdout: stderr: echo ${###} ^ [ stdin ]:2: Expected } after length expression |
osh | 2 ${####} stdout: stderr: echo ${####} ^~ [ stdin ]:2: Expected } after length expression |
osh | 3 ${##2} stdout: stderr: echo ${##2} ^ [ stdin ]:2: Expected } after length expression |
mksh | 4 ${###2} stdout: 25stderr: |
osh | 4 ${###2} stdout: stderr: echo ${###2} ^ [ stdin ]:2: Expected } after length expression |
dash | 7 ${#1#'###'} stdout: 4stderr: |
bash | 7 ${#1#'###'} stdout: stderr: bash: line 2: ${#1#'###'}: bad substitution |
mksh | 7 ${#1#'###'} stdout: stderr: mksh: <stdin>[2]: ${#1#"###"}: bad substitution |
zsh | 7 ${#1#'###'} stdout: 1stderr: |
dash | 8 Julia example from spec/oil-user-feedback stdout: stderr: |
mksh | 8 Julia example from spec/oil-user-feedback stdout: stderr: |
zsh | 8 Julia example from spec/oil-user-feedback stdout: stderr: |
osh | 8 Julia example from spec/oil-user-feedback [osh stdout] Expected 'git branch -D foo baz\n', got '' [osh status] Expected 0, got 1 [osh stderr] Found 'Traceback (most recent' stdout: stderr: Traceback (most recent call last): File "/home/uke/oil/bin/oils_for_unix.py", line 202, in <module> sys.exit(main(sys.argv)) File "/home/uke/oil/bin/oils_for_unix.py", line 171, in main return AppBundleMain(argv) File "/home/uke/oil/bin/oils_for_unix.py", line 141, in AppBundleMain return shell.Main('osh', arg_r, environ, login_shell, loader, readline) File "/home/uke/oil/core/shell.py", line 1213, in Main cmd_flags=cmd_eval.IsMainProgram) File "/home/uke/oil/core/main_loop.py", line 375, in Batch is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags) File "/home/uke/oil/osh/cmd_eval.py", line 2109, in ExecuteAndCatch status = self._Execute(node) File "/home/uke/oil/osh/cmd_eval.py", line 1908, in _Execute status = self._Dispatch(node, cmd_st) File "/home/uke/oil/osh/cmd_eval.py", line 1813, in _Dispatch status = self._DoPipeline(node, cmd_st) File "/home/uke/oil/osh/cmd_eval.py", line 964, in _DoPipeline self.shell_ex.RunPipeline(node, cmd_st) File "/home/uke/oil/core/executor.py", line 590, in RunPipeline status_out.pipe_status = pi.RunLastPart(self.waiter, self.fd_state) File "/home/uke/oil/core/process.py", line 1414, in RunLastPart cmd_ev.ExecuteAndCatch(last_node, cmd_flags) File "/home/uke/oil/osh/cmd_eval.py", line 2109, in ExecuteAndCatch status = self._Execute(node) File "/home/uke/oil/osh/cmd_eval.py", line 1908, in _Execute status = self._Dispatch(node, cmd_st) File "/home/uke/oil/osh/cmd_eval.py", line 1789, in _Dispatch status = self._DoWhileUntil(node) File "/home/uke/oil/osh/cmd_eval.py", line 1169, in _DoWhileUntil status = self._Execute(node.body) # last one wins File "/home/uke/oil/osh/cmd_eval.py", line 1908, in _Execute status = self._Dispatch(node, cmd_st) File "/home/uke/oil/osh/cmd_eval.py", line 1750, in _Dispatch status = self._ExecuteList(node.children) File "/home/uke/oil/osh/cmd_eval.py", line 1985, in _ExecuteList status = self._Execute(child) File "/home/uke/oil/osh/cmd_eval.py", line 1908, in _Execute status = self._Dispatch(node, cmd_st) File "/home/uke/oil/osh/cmd_eval.py", line 1771, in _Dispatch status = self._DoIf(node) File "/home/uke/oil/osh/cmd_eval.py", line 1421, in _DoIf status = self._ExecuteList(if_arm.action) File "/home/uke/oil/osh/cmd_eval.py", line 1985, in _ExecuteList status = self._Execute(child) File "/home/uke/oil/osh/cmd_eval.py", line 1908, in _Execute status = self._Dispatch(node, cmd_st) File "/home/uke/oil/osh/cmd_eval.py", line 1645, in _Dispatch status = self._DoShAssignment(node, cmd_st) File "/home/uke/oil/osh/cmd_eval.py", line 988, in _DoShAssignment node.left) File "/home/uke/oil/osh/sh_expr_eval.py", line 130, in OldValue cell = mem.GetCellDeref(var_name) File "/home/uke/oil/core/state.py", line 2318, in GetCellDeref cell, _ = self._ResolveNameOrRef(name, which_scopes) ValueError: too many values to unpack |