spec test index / oilshell.org
158 passed, 11 ok, 51 known unimplemented, 19 known bugs, 2 failed, 0 skipped
dash | 1 Unicode string length (UTF-8) stdout: 9stderr: |
mksh | 1 Unicode string length (UTF-8) stdout: 4stderr: |
dash | 2 Unicode string length (spec/testdata/utf8-chars.txt) stdout: 13stderr: |
mksh | 2 Unicode string length (spec/testdata/utf8-chars.txt) stdout: 13stderr: |
dash | 3 String length with incomplete utf-8 stdout: 0 1 2 3 4 5 6 7 8 9 10 11 12 13stderr: |
bash | 3 String length with incomplete utf-8 stdout: 0 1 2 3 3 4 5 6 5 6 7 8 9 7stderr: |
mksh | 3 String length with incomplete utf-8 stdout: 0 1 2 3 4 5 6 7 8 9 10 11 12 13stderr: |
zsh | 3 String length with incomplete utf-8 stdout: 0 1 2 3 3 4 5 6 5 6 7 8 9 7stderr: |
dash | 4 String length with invalid utf-8 continuation bytes stdout: 7 8 9 10 11 12 13 14 15 16 17 18 19 20 20stderr: |
bash | 4 String length with invalid utf-8 continuation bytes stdout: 1 2 3 4 4 5 6 7 6 7 8 9 10 8 8stderr: |
mksh | 4 String length with invalid utf-8 continuation bytes stdout: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 14stderr: |
zsh | 4 String length with invalid utf-8 continuation bytes stdout: 1 2 3 4 4 5 6 7 6 7 8 9 10 8 8stderr: |
dash | 6 Length of undefined variable with nounset stdout: stderr: _tmp/spec-bin/dash: 2: undef: parameter not set |
dash | 7 Cannot take length of substring slice stdout: 5stderr: |
zsh | 7 Cannot take length of substring slice stdout: 3stderr: |
osh | 7 Cannot take length of substring slice stdout: stderr: Line 2 of '<stdin>' echo ${#v:1:3} ^ Expected } after length expression, got ':' |
osh_ALT | 7 Cannot take length of substring slice stdout: stderr: Line 2 of '<stdin>' echo ${#v:1:3} ^ Expected } after length expression, got ':' |
osh-byterun | 7 Cannot take length of substring slice stdout: stderr: Line 2 of '<stdin>' echo ${#v:1:3} ^ Expected } after length expression, got ':' |
dash | 8 Pattern replacement stdout: stderr: _tmp/spec-bin/dash: 2: Bad substitution |
dash | 9 Pattern replacement on unset variable stdout: stderr: _tmp/spec-bin/dash: 1: Bad substitution |
mksh | 9 Pattern replacement on unset variable stdout: -- status=0 --stderr: |
dash | 10 Global Pattern replacement with / stdout: stderr: _tmp/spec-bin/dash: 2: Bad substitution |
dash | 11 Left Anchored Pattern replacement with # stdout: stderr: _tmp/spec-bin/dash: 2: Bad substitution |
dash | 12 Right Anchored Pattern replacement with % stdout: stderr: _tmp/spec-bin/dash: 2: Bad substitution |
dash | 13 Replace fixed strings stdout: stderr: _tmp/spec-bin/dash: 2: Bad substitution |
dash | 14 Replace is longest match stdout: stderr: _tmp/spec-bin/dash: 2: Bad substitution |
dash | 15 Replace char class stdout: stderr: _tmp/spec-bin/dash: 2: Bad substitution |
mksh | 15 Replace char class stdout: xx_xx_xx xx_xx_xxstderr: |
dash | 16 Replace hard glob stdout: stderr: _tmp/spec-bin/dash: 2: Bad substitution |
dash | 17 Pattern replacement ${v/} is not valid stdout: stderr: _tmp/spec-bin/dash: 2: Bad substitution |
bash | 17 Pattern replacement ${v/} is not valid stdout: -abcde- status=0stderr: |
mksh | 17 Pattern replacement ${v/} is not valid stdout: -abcde- status=0stderr: |
zsh | 17 Pattern replacement ${v/} is not valid stdout: -abcde- status=0stderr: |
dash | 18 Pattern replacement ${v//} is not valid stdout: stderr: _tmp/spec-bin/dash: 2: Bad substitution |
bash | 18 Pattern replacement ${v//} is not valid stdout: -a/b/c- status=0stderr: |
mksh | 18 Pattern replacement ${v//} is not valid stdout: -a/b/c- status=0stderr: |
zsh | 18 Pattern replacement ${v//} is not valid stdout: -a/b/c- status=0stderr: |
dash | 19 ${v/a} is the same as ${v/a/} -- no replacement string stdout: stderr: _tmp/spec-bin/dash: 2: Bad substitution |
dash | 20 String slice stdout: stderr: _tmp/spec-bin/dash: 2: Bad substitution |
dash | 21 Out of range string slice: begin stdout: stderr: _tmp/spec-bin/dash: 2: Bad substitution |
mksh | 21 Out of range string slice: begin stdout: 0stderr: |
dash | 22 Out of range string slice: length stdout: stderr: _tmp/spec-bin/dash: 2: Bad substitution |
mksh | 22 Out of range string slice: length stdout: _defg 0stderr: |
dash | 23 String slice: negative begin stdout: stderr: _tmp/spec-bin/dash: 2: Bad substitution |
osh | 23 String slice: negative begin stdout: stderr: osh warning: The start index of a string slice can't be negative: -4 |
osh_ALT | 23 String slice: negative begin stdout: stderr: osh warning: The start index of a string slice can't be negative: -4 |
osh-byterun | 23 String slice: negative begin stdout: stderr: osh warning: The start index of a string slice can't be negative: -4 |
dash | 24 String slice: negative second arg is position, not length stdout: stderr: _tmp/spec-bin/dash: 2: Bad substitution |
mksh | 24 String slice: negative second arg is position, not length stdout: defg defg defgstderr: |
osh | 24 String slice: negative second arg is position, not length stdout: stderr: osh warning: The length of a string slice can't be negative: -1 osh warning: The length of a string slice can't be negative: -2 osh warning: The length of a string slice can't be negative: -3 |
osh_ALT | 24 String slice: negative second arg is position, not length stdout: stderr: osh warning: The length of a string slice can't be negative: -1 osh warning: The length of a string slice can't be negative: -2 osh warning: The length of a string slice can't be negative: -3 |
osh-byterun | 24 String slice: negative second arg is position, not length stdout: stderr: osh warning: The length of a string slice can't be negative: -1 osh warning: The length of a string slice can't be negative: -2 osh warning: The length of a string slice can't be negative: -3 |
dash | 25 strict-word-eval with string slice stdout: stderr: _tmp/spec-bin/dash: 1: set: Illegal option -o strict-word-eval |
bash | 25 strict-word-eval with string slice stdout: slice -bc-stderr: _tmp/spec-bin/bash: line 1: set: strict-word-eval: invalid option name |
mksh | 25 strict-word-eval with string slice stdout: stderr: _tmp/spec-bin/mksh: <stdin>[1]: set: strict-word-eval: bad option |
zsh | 25 strict-word-eval with string slice stdout: stderr: set: no such option: strict-word-eval |
dash | 26 String slice with math stdout: stderr: _tmp/spec-bin/dash: 3: Bad substitution |
dash | 27 Slice undefined stdout: stderr: _tmp/spec-bin/dash: 1: Bad substitution |
mksh | 27 Slice undefined stdout: -- -- -done-stderr: |
dash | 28 Slice UTF-8 String stdout: stderr: _tmp/spec-bin/dash: 2: Bad substitution |
mksh | 28 Slice UTF-8 String stdout: -μstderr: |
dash | 29 Slice string with invalid UTF-8 results in empty string and warning stdout: stderr: _tmp/spec-bin/dash: 2: Bad substitution |
bash | 29 Slice string with invalid UTF-8 results in empty string and warning stdout: -bcd-stderr: |
mksh | 29 Slice string with invalid UTF-8 results in empty string and warning stdout: -bcd-stderr: |
zsh | 29 Slice string with invalid UTF-8 results in empty string and warning stdout: -bcd-stderr: |
dash | 30 Slice string with invalid UTF-8 with strict-word-eval stdout: stderr: _tmp/spec-bin/dash: 1: set: Illegal option -o strict-word-eval |
bash | 30 Slice string with invalid UTF-8 with strict-word-eval stdout: slice -bcd-stderr: _tmp/spec-bin/bash: line 1: set: strict-word-eval: invalid option name |
mksh | 30 Slice string with invalid UTF-8 with strict-word-eval stdout: stderr: _tmp/spec-bin/mksh: <stdin>[1]: set: strict-word-eval: bad option |
zsh | 30 Slice string with invalid UTF-8 with strict-word-eval stdout: stderr: set: no such option: strict-word-eval |
dash | 31 Lower Case with , and ,, stdout: stderr: _tmp/spec-bin/dash: 2: Bad substitution |
mksh | 31 Lower Case with , and ,, stdout: stderr: _tmp/spec-bin/mksh: <stdin>[2]: ${x,}: bad substitution |
zsh | 31 Lower Case with , and ,, stdout: stderr: zsh: bad substitution |
dash | 32 Upper Case with ^ and ^^ stdout: stderr: _tmp/spec-bin/dash: 2: Bad substitution |
mksh | 32 Upper Case with ^ and ^^ stdout: stderr: _tmp/spec-bin/mksh: <stdin>[2]: ${x^}: bad substitution |
zsh | 32 Upper Case with ^ and ^^ stdout: stderr: zsh: bad substitution |
dash | 33 Lower Case with constant string (VERY WEIRD) stdout: stderr: _tmp/spec-bin/dash: 2: Bad substitution |
mksh | 33 Lower Case with constant string (VERY WEIRD) stdout: stderr: _tmp/spec-bin/mksh: <stdin>[2]: ${x,A}: bad substitution |
zsh | 33 Lower Case with constant string (VERY WEIRD) stdout: stderr: zsh: bad substitution |
osh | 33 Lower Case with constant string (VERY WEIRD) [osh stdout] Expected 'aAA ABC DEF\naaa aBC DEF\n', got '' [osh status] Expected 0, got 1 stdout: stderr: Traceback (most recent call last): File "/home/andy/git/oilshell/oil/bin/oil.py", line 572, in <module> main(sys.argv) File "/home/andy/git/oilshell/oil/bin/oil.py", line 545, in main sys.exit(AppBundleMain(argv)) File "/home/andy/git/oilshell/oil/bin/oil.py", line 519, in AppBundleMain status = ShellMain('osh', argv0, main_argv, login_shell) File "/home/andy/git/oilshell/oil/bin/oil.py", line 349, in ShellMain status = main_loop.Batch(ex, c_parser, arena, nodes_out=nodes_out) File "/home/andy/git/oilshell/oil/core/main_loop.py", line 117, in Batch is_control_flow, is_fatal = ex.ExecuteAndCatch(node) File "/home/andy/git/oilshell/oil/osh/cmd_exec.py", line 1207, in ExecuteAndCatch status = self._Execute(node, fork_external=fork_external) File "/home/andy/git/oilshell/oil/osh/cmd_exec.py", line 1155, in _Execute status, check_errexit = self._Dispatch(node, fork_external) File "/home/andy/git/oilshell/oil/osh/cmd_exec.py", line 695, in _Dispatch argv = self.word_ev.EvalWordSequence(words) File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1117, in EvalWordSequence return self._EvalWordSequence(words) File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1090, in _EvalWordSequence self._EvalWordToParts(w, False, part_vals) # not double quoted File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 891, in _EvalWordToParts self._EvalWordPart(p, part_vals, quoted=quoted) File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 854, in _EvalWordPart self._EvalBracedVarSub(part, part_vals, quoted) File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 666, in _EvalBracedVarSub val = self._ApplyUnarySuffixOp(val, part.suffix_op) File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 432, in _ApplyUnarySuffixOp s = string_ops.DoUnarySuffixOp(val.s, op, arg_val.s) File "/home/andy/git/oilshell/oil/osh/string_ops.py", line 186, in DoUnarySuffixOp raise NotImplementedError("%s can't have an argument" % op.op_id) NotImplementedError: VOp1_Comma can't have an argument |
osh_ALT | 33 Lower Case with constant string (VERY WEIRD) [osh_ALT stdout] Expected 'aAA ABC DEF\naaa aBC DEF\n', got '' [osh_ALT status] Expected 0, got 1 stdout: stderr: Traceback (most recent call last): File "/home/andy/git/oilshell/oil/bin/oil.py", line 563, in _cpython_main_hook main(sys.argv) File "/home/andy/git/oilshell/oil/bin/oil.py", line 545, in main sys.exit(AppBundleMain(argv)) File "/home/andy/git/oilshell/oil/bin/oil.py", line 519, in AppBundleMain status = ShellMain('osh', argv0, main_argv, login_shell) File "/home/andy/git/oilshell/oil/bin/oil.py", line 349, in ShellMain status = main_loop.Batch(ex, c_parser, arena, nodes_out=nodes_out) File "/home/andy/git/oilshell/oil/core/main_loop.py", line 124, in Batch return ex.LastStatus() File "/home/andy/git/oilshell/oil/osh/cmd_exec.py", line 1207, in ExecuteAndCatch status = self._Execute(node, fork_external=fork_external) File "/home/andy/git/oilshell/oil/osh/cmd_exec.py", line 1155, in _Execute status, check_errexit = self._Dispatch(node, fork_external) File "/home/andy/git/oilshell/oil/osh/cmd_exec.py", line 1100, in _Dispatch libc.print_time(real, user, sys_) File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1117, in EvalWordSequence return self._EvalWordSequence(words) File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1090, in _EvalWordSequence self._EvalWordToParts(w, False, part_vals) # not double quoted File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 891, in _EvalWordToParts self._EvalWordPart(p, part_vals, quoted=quoted) File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 854, in _EvalWordPart self._EvalBracedVarSub(part, part_vals, quoted) File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 677, in _EvalBracedVarSub replace_str = replace_val.s File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 432, in _ApplyUnarySuffixOp s = string_ops.DoUnarySuffixOp(val.s, op, arg_val.s) File "/home/andy/git/oilshell/oil/osh/string_ops.py", line 259, in DoUnarySuffixOp return s NotImplementedError: VOp1_Comma can't have an argument FATAL: couldn't import from app bundle '_tmp/oil-tar-test/oil-0.6.pre11/_bin/osh' (1) Stripping the oil.ovm binary may cause this error. See https://github.com/oilshell/oil/issues/47 |
osh-byterun | 33 Lower Case with constant string (VERY WEIRD) [osh-byterun stdout] Expected 'aAA ABC DEF\naaa aBC DEF\n', got '' [osh-byterun status] Expected 0, got 1 stdout: stderr: FATAL: VOp1_Comma can't have an argument |
dash | 34 Lower Case glob stdout: stderr: _tmp/spec-bin/dash: 2: Bad substitution |
mksh | 34 Lower Case glob stdout: stderr: _tmp/spec-bin/mksh: <stdin>[2]: ${x,[d-f]}: bad substitution |
zsh | 34 Lower Case glob stdout: stderr: zsh: bad substitution |
osh | 34 Lower Case glob [osh stdout] Expected 'ABC DEF\nABC deF\n', got '' [osh status] Expected 0, got 1 stdout: stderr: Traceback (most recent call last): File "/home/andy/git/oilshell/oil/bin/oil.py", line 572, in <module> main(sys.argv) File "/home/andy/git/oilshell/oil/bin/oil.py", line 545, in main sys.exit(AppBundleMain(argv)) File "/home/andy/git/oilshell/oil/bin/oil.py", line 519, in AppBundleMain status = ShellMain('osh', argv0, main_argv, login_shell) File "/home/andy/git/oilshell/oil/bin/oil.py", line 349, in ShellMain status = main_loop.Batch(ex, c_parser, arena, nodes_out=nodes_out) File "/home/andy/git/oilshell/oil/core/main_loop.py", line 117, in Batch is_control_flow, is_fatal = ex.ExecuteAndCatch(node) File "/home/andy/git/oilshell/oil/osh/cmd_exec.py", line 1207, in ExecuteAndCatch status = self._Execute(node, fork_external=fork_external) File "/home/andy/git/oilshell/oil/osh/cmd_exec.py", line 1155, in _Execute status, check_errexit = self._Dispatch(node, fork_external) File "/home/andy/git/oilshell/oil/osh/cmd_exec.py", line 695, in _Dispatch argv = self.word_ev.EvalWordSequence(words) File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1117, in EvalWordSequence return self._EvalWordSequence(words) File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1090, in _EvalWordSequence self._EvalWordToParts(w, False, part_vals) # not double quoted File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 891, in _EvalWordToParts self._EvalWordPart(p, part_vals, quoted=quoted) File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 854, in _EvalWordPart self._EvalBracedVarSub(part, part_vals, quoted) File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 666, in _EvalBracedVarSub val = self._ApplyUnarySuffixOp(val, part.suffix_op) File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 432, in _ApplyUnarySuffixOp s = string_ops.DoUnarySuffixOp(val.s, op, arg_val.s) File "/home/andy/git/oilshell/oil/osh/string_ops.py", line 262, in DoUnarySuffixOp raise NotImplementedError("Can't use %s with pattern" % op.op_id) NotImplementedError: Can't use VOp1_Comma with pattern |
osh_ALT | 34 Lower Case glob [osh_ALT stdout] Expected 'ABC DEF\nABC deF\n', got '' [osh_ALT status] Expected 0, got 1 stdout: stderr: Traceback (most recent call last): File "/home/andy/git/oilshell/oil/bin/oil.py", line 563, in _cpython_main_hook main(sys.argv) File "/home/andy/git/oilshell/oil/bin/oil.py", line 545, in main sys.exit(AppBundleMain(argv)) File "/home/andy/git/oilshell/oil/bin/oil.py", line 519, in AppBundleMain status = ShellMain('osh', argv0, main_argv, login_shell) File "/home/andy/git/oilshell/oil/bin/oil.py", line 349, in ShellMain status = main_loop.Batch(ex, c_parser, arena, nodes_out=nodes_out) File "/home/andy/git/oilshell/oil/core/main_loop.py", line 124, in Batch return ex.LastStatus() File "/home/andy/git/oilshell/oil/osh/cmd_exec.py", line 1207, in ExecuteAndCatch status = self._Execute(node, fork_external=fork_external) File "/home/andy/git/oilshell/oil/osh/cmd_exec.py", line 1155, in _Execute status, check_errexit = self._Dispatch(node, fork_external) File "/home/andy/git/oilshell/oil/osh/cmd_exec.py", line 1100, in _Dispatch libc.print_time(real, user, sys_) File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1117, in EvalWordSequence return self._EvalWordSequence(words) File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1090, in _EvalWordSequence self._EvalWordToParts(w, False, part_vals) # not double quoted File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 891, in _EvalWordToParts self._EvalWordPart(p, part_vals, quoted=quoted) File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 854, in _EvalWordPart self._EvalBracedVarSub(part, part_vals, quoted) File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 677, in _EvalBracedVarSub replace_str = replace_val.s File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 432, in _ApplyUnarySuffixOp s = string_ops.DoUnarySuffixOp(val.s, op, arg_val.s) File "/home/andy/git/oilshell/oil/osh/string_ops.py", line 262, in DoUnarySuffixOp raise NotImplementedError("Can't use %s with pattern" % op.op_id) NotImplementedError: Can't use VOp1_Comma with pattern FATAL: couldn't import from app bundle '_tmp/oil-tar-test/oil-0.6.pre11/_bin/osh' (1) Stripping the oil.ovm binary may cause this error. See https://github.com/oilshell/oil/issues/47 |
osh-byterun | 34 Lower Case glob [osh-byterun stdout] Expected 'ABC DEF\nABC deF\n', got '' [osh-byterun status] Expected 0, got 1 stdout: stderr: FATAL: Can't use VOp1_Comma with pattern |