Results for var-op-other.test.sh

statusbashmkshzshosh
pass 145812
ok 0013
N-I 2670
BUG 1610
FAIL 0002
total17171717
casebashmkshzshoshdescription
0pass pass pass pass String slice
1pass pass ok ok Cannot take length of substring slice
detailsdetails
2pass BUG pass pass Out of range string slice: begin
details
3pass BUG pass pass Out of range string slice: length
details
4pass pass pass ok String slice: negative begin
details
5pass BUG pass ok String slice: negative second arg is position, not length
detailsdetails
6N-I N-I N-I pass strict-word-eval with string slice
detailsdetailsdetails
7pass pass pass pass String slice with math
8pass BUG pass pass Slice undefined
details
9pass BUG pass pass Slice UTF-8 String
details
10BUG BUG BUG pass Slice string with invalid UTF-8 results in empty string and warning
detailsdetailsdetails
11N-I N-I N-I pass Slice string with invalid UTF-8 with strict-word-eval
detailsdetailsdetails
12pass N-I N-I pass Lower Case with , and ,,
detailsdetails
13pass N-I N-I pass Upper Case with ^ and ^^
detailsdetails
14pass N-I N-I FAIL Lower Case with constant string (VERY WEIRD)
detailsdetailsdetails
15pass N-I N-I FAIL Lower Case glob
detailsdetailsdetails
16pass pass N-I pass ${x@Q}
details
39 passed, 4 OK, 15 not implemented, 8 BUG, 2 failed, 0 timeouts, 0 cases skipped
2 failed under osh

Details on runs that didn't PASS

zsh1 Cannot take length of substring slice

stdout:
3
stderr:
osh1 Cannot take length of substring slice

stdout:
stderr: 
  echo ${#v:1:3}
           ^
[ stdin ]:2: Expected } after length expression, got ':'
mksh2 Out of range string slice: begin

stdout:
0
stderr:
mksh3 Out of range string slice: length

stdout:
_defg
0
stderr:
osh4 String slice: negative begin

stdout:
stderr: 
  echo ${foo: -4:3}
       ^~
[ stdin ]:2: warning: The start index of a string slice can't be negative: -4
mksh5 String slice: negative second arg is position, not length

stdout:
defg defg defg
stderr:
osh5 String slice: negative second arg is position, not length

stdout:
stderr: 
  echo ${foo:3:-1} ${foo: 3: -2} ${foo:3 :-3 }
       ^~
[ stdin ]:2: warning: The length of a string slice can't be negative: -1
  echo ${foo:3:-1} ${foo: 3: -2} ${foo:3 :-3 }
                   ^~
[ stdin ]:2: warning: The length of a string slice can't be negative: -2
  echo ${foo:3:-1} ${foo: 3: -2} ${foo:3 :-3 }
                                 ^~
[ stdin ]:2: warning: The length of a string slice can't be negative: -3
bash6 strict-word-eval with string slice

stdout:
slice
-bc-
stderr:
/home/andy/git/oilshell/oil/_tmp/spec-bin/bash: line 1: shopt: strict-word-eval: invalid shell option name
mksh6 strict-word-eval with string slice

stdout:
slice
-bc-
stderr:
/home/andy/git/oilshell/oil/_tmp/spec-bin/mksh: <stdin>[1]: shopt: not found
zsh6 strict-word-eval with string slice

stdout:
slice
-bc-
stderr:
zsh: command not found: shopt
mksh8 Slice undefined

stdout:
--
--
-done-
stderr:
mksh9 Slice UTF-8 String

stdout:
stderr:
bash10 Slice string with invalid UTF-8 results in empty string and warning

stdout:
-bcd-
stderr:
mksh10 Slice string with invalid UTF-8 results in empty string and warning

stdout:
-bcd-
stderr:
zsh10 Slice string with invalid UTF-8 results in empty string and warning

stdout:
-bcd-
stderr:
bash11 Slice string with invalid UTF-8 with strict-word-eval

stdout:
slice
-bcd-
stderr:
/home/andy/git/oilshell/oil/_tmp/spec-bin/bash: line 1: shopt: strict-word-eval: invalid shell option name
mksh11 Slice string with invalid UTF-8 with strict-word-eval

stdout:
slice
-bcd-
stderr:
/home/andy/git/oilshell/oil/_tmp/spec-bin/mksh: <stdin>[1]: shopt: not found
zsh11 Slice string with invalid UTF-8 with strict-word-eval

stdout:
slice
-bcd-
stderr:
zsh: command not found: shopt
mksh12 Lower Case with , and ,,

stdout:
stderr: 
/home/andy/git/oilshell/oil/_tmp/spec-bin/mksh: <stdin>[2]: ${x,}: bad substitution
zsh12 Lower Case with , and ,,

stdout:
stderr: 
zsh: bad substitution
mksh13 Upper Case with ^ and ^^

stdout:
stderr: 
/home/andy/git/oilshell/oil/_tmp/spec-bin/mksh: <stdin>[2]: ${x^}: bad substitution
zsh13 Upper Case with ^ and ^^

stdout:
stderr: 
zsh: bad substitution
mksh14 Lower Case with constant string (VERY WEIRD)

stdout:
stderr: 
/home/andy/git/oilshell/oil/_tmp/spec-bin/mksh: <stdin>[2]: ${x,A}: bad substitution
zsh14 Lower Case with constant string (VERY WEIRD)

stdout:
stderr: 
zsh: bad substitution
osh14 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 903, in <module>
    sys.exit(main(sys.argv))
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 861, in main
    return AppBundleMain(argv)
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 831, in AppBundleMain
    status = ShellMain('osh', argv0, main_argv, login_shell)
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 642, 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 159, in Batch
    is_return, is_fatal = ex.ExecuteAndCatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_exec.py", line 1268, in ExecuteAndCatch
    status = self._Execute(node, fork_external=fork_external)
  File "/home/andy/git/oilshell/oil/osh/cmd_exec.py", line 1216, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oilshell/oil/osh/cmd_exec.py", line 717, in _Dispatch
    cmd_val = self.word_ev.EvalWordSequence2(words, allow_assign=True)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1286, in EvalWordSequence2
    self._EvalWordToParts(w, False, part_vals)  # not double quoted
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 958, in _EvalWordToParts
    self._EvalWordPart(p, part_vals, quoted=quoted, is_subst=is_subst)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 922, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 756, in _EvalBracedVarSub
    val = self._ApplyUnarySuffixOp(val, part.suffix_op)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 503, in _ApplyUnarySuffixOp
    s = string_ops.DoUnarySuffixOp(val.s, op, arg_val.s)
  File "/home/andy/git/oilshell/oil/osh/string_ops.py", line 192, in DoUnarySuffixOp
    raise NotImplementedError("%s can't have an argument" % op.op_id)
NotImplementedError: <Id_t VOp1_Comma 131> can't have an argument
mksh15 Lower Case glob

stdout:
stderr: 
/home/andy/git/oilshell/oil/_tmp/spec-bin/mksh: <stdin>[2]: ${x,[d-f]}: bad substitution
zsh15 Lower Case glob

stdout:
stderr: 
zsh: bad substitution
osh15 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 903, in <module>
    sys.exit(main(sys.argv))
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 861, in main
    return AppBundleMain(argv)
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 831, in AppBundleMain
    status = ShellMain('osh', argv0, main_argv, login_shell)
  File "/home/andy/git/oilshell/oil/bin/oil.py", line 642, 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 159, in Batch
    is_return, is_fatal = ex.ExecuteAndCatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_exec.py", line 1268, in ExecuteAndCatch
    status = self._Execute(node, fork_external=fork_external)
  File "/home/andy/git/oilshell/oil/osh/cmd_exec.py", line 1216, in _Execute
    status, check_errexit = self._Dispatch(node, fork_external)
  File "/home/andy/git/oilshell/oil/osh/cmd_exec.py", line 717, in _Dispatch
    cmd_val = self.word_ev.EvalWordSequence2(words, allow_assign=True)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1286, in EvalWordSequence2
    self._EvalWordToParts(w, False, part_vals)  # not double quoted
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 958, in _EvalWordToParts
    self._EvalWordPart(p, part_vals, quoted=quoted, is_subst=is_subst)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 922, in _EvalWordPart
    self._EvalBracedVarSub(part, part_vals, quoted)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 756, in _EvalBracedVarSub
    val = self._ApplyUnarySuffixOp(val, part.suffix_op)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 503, in _ApplyUnarySuffixOp
    s = string_ops.DoUnarySuffixOp(val.s, op, arg_val.s)
  File "/home/andy/git/oilshell/oil/osh/string_ops.py", line 272, in DoUnarySuffixOp
    raise NotImplementedError("Can't use %s with pattern" % op.op_id)
NotImplementedError: Can't use <Id_t VOp1_Comma 131> with pattern
zsh16 ${x@Q}

stdout:
stderr: 
zsh: bad substitution