spec test index / oilshell.org
| status | osh | osh-cpp | |
| pass | 8 | 8 | |
| ok | 5 | 5 | |
| FAIL | 5 | 5 | |
| total | 18 | 18 | |
| case | osh | osh-cpp | description |
| 0 | pass | pass | Lower Case with , and ,, |
| 1 | pass | pass | Upper Case with ^ and ^^ |
| 2 | FAIL | FAIL | Case Folding of Unicode Characters |
| details | details | ||
| 3 | FAIL | FAIL | Lower Case with constant string (VERY WEIRD) |
| details | details | ||
| 4 | FAIL | FAIL | Lower Case glob |
| details | details | ||
| 5 | FAIL | FAIL | ${x@u} U l L upper / lower case (bash 5.1 feature) |
| details | details | ||
| 6 | pass | pass | ${x@Q} |
| 7 | ok | ok | ${array@Q} and ${array[@]@Q} |
| details | details | ||
| 8 | pass | pass | ${!prefix@} ${!prefix*} yields sorted array of var names |
| 9 | pass | pass | ${!prefix@} matches var name (regression) |
| 10 | pass | pass | ${var@a} for attributes |
| 11 | pass | pass | ${var@a} error conditions |
| 12 | ok | ok | undef and @P @Q @a |
| details | details | ||
| 13 | ok | ok | argv array and @P @Q @a |
| details | details | ||
| 14 | ok | ok | assoc array and @P @Q @a |
| details | details | ||
| 15 | ok | ok | ${!var[@]@X} |
| details | details | ||
| 16 | pass | pass | ${#var@X} is a parse error |
| 17 | FAIL | FAIL | ${!A@a} and ${!A[@]@a} |
| details | details |
16 passed, 10 OK, 0 not implemented, 0 BUG, 10 failed, 0 timeouts, 0 cases skipped 5 failed under osh
| osh | 2 Case Folding of Unicode Characters [osh stdout] Expected 'u \xc3\x80\xc3\x88\nU \xc3\x80\xc3\x88\nl \xc3\xa0\xc3\x88\nL \xc3\xa0\xc3\xa8\nu \xc3\x81\xc3\xa9\nU \xc3\x81\xc3\x89\nl \xc3\xa1\xc3\xa9\nL \xc3\xa1\xc3\xa9\n' Got 'u \xc3\x80\xc3\x88\nU \xc3\x80\xc3\x88\nl \xc3\x80\xc3\x88\nL \xc3\x80\xc3\x88\nu \xc3\xa1\xc3\xa9\nU \xc3\xa1\xc3\xa9\nl \xc3\xa1\xc3\xa9\nL \xc3\xa1\xc3\xa9\n' stdout: u ÀÈ U ÀÈ l ÀÈ L ÀÈ u áé U áé l áé L áéstderr: |
| osh-cpp | 2 Case Folding of Unicode Characters [osh-cpp stdout] Expected 'u \xc3\x80\xc3\x88\nU \xc3\x80\xc3\x88\nl \xc3\xa0\xc3\x88\nL \xc3\xa0\xc3\xa8\nu \xc3\x81\xc3\xa9\nU \xc3\x81\xc3\x89\nl \xc3\xa1\xc3\xa9\nL \xc3\xa1\xc3\xa9\n' Got 'u \xc3\x80\xc3\x88\nU \xc3\x80\xc3\x88\nl \xc3\x80\xc3\x88\nL \xc3\x80\xc3\x88\nu \xc3\xa1\xc3\xa9\nU \xc3\xa1\xc3\xa9\nl \xc3\xa1\xc3\xa9\nL \xc3\xa1\xc3\xa9\n' stdout: u ÀÈ U ÀÈ l ÀÈ L ÀÈ u áé U áé l áé L áéstderr: |
| osh | 3 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: echo ${x,A}
^
[ stdin ]:2: fatal: Id.VOp1_Comma can't have an argument
|
| osh-cpp | 3 Lower Case with constant string (VERY WEIRD) [osh-cpp stdout] Expected 'aAA ABC DEF\naaa aBC DEF\n', got '' [osh-cpp status] Expected 0, got 1 stdout: stderr: echo ${x,A}
^
[ stdin ]:2: fatal: Id.VOp1_Comma can't have an argument
|
| osh | 4 Lower Case glob [osh stdout] Expected 'ABC DEF\nABC deF\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 198, in <module>
sys.exit(main(sys.argv))
File "/home/uke/oil/bin/oils_for_unix.py", line 170, in main
return AppBundleMain(argv)
File "/home/uke/oil/bin/oils_for_unix.py", line 140, in AppBundleMain
return shell.Main('osh', arg_r, environ, login_shell, loader, readline)
File "/home/uke/oil/core/shell.py", line 1101, in Main
cmd_flags=cmd_eval.IsMainProgram)
File "/home/uke/oil/core/main_loop.py", line 360, in Batch
is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags=cmd_flags)
File "/home/uke/oil/osh/cmd_eval.py", line 1940, in ExecuteAndCatch
status = self._Execute(node)
File "/home/uke/oil/osh/cmd_eval.py", line 1757, in _Execute
status = self._Dispatch(node, cmd_st)
File "/home/uke/oil/osh/cmd_eval.py", line 1480, in _Dispatch
status = self._DoSimple(node, cmd_st)
File "/home/uke/oil/osh/cmd_eval.py", line 853, in _DoSimple
cmd_val = self.word_ev.EvalWordSequence2(words, allow_assign=True)
File "/home/uke/oil/osh/word_eval.py", line 2201, in EvalWordSequence2
self._EvalWordToParts(w, part_vals, EXTGLOB_FILES)
File "/home/uke/oil/osh/word_eval.py", line 1718, in _EvalWordToParts
self._EvalWordPart(p, word_part_vals, eval_flags)
File "/home/uke/oil/osh/word_eval.py", line 1638, in _EvalWordPart
self._EvalBracedVarSub(part, part_vals, quoted)
File "/home/uke/oil/osh/word_eval.py", line 1387, in _EvalBracedVarSub
val = self._ApplyUnarySuffixOp(val, op)
File "/home/uke/oil/osh/word_eval.py", line 826, in _ApplyUnarySuffixOp
has_extglob)
File "/home/uke/oil/osh/string_ops.py", line 497, in DoUnarySuffixOp
raise NotImplementedError(ui.PrettyId(id_))
NotImplementedError: Id.VOp1_Comma
|
| osh-cpp | 4 Lower Case glob [osh-cpp stdout] Expected 'ABC DEF\nABC deF\n', got '' [osh-cpp status] Expected 0, got -6 stdout: stderr: osh: _gen/bin/oils_for_unix.mycpp.cc:39355: BigStr* string_ops::DoUnarySuffixOp(BigStr*, syntax_asdl::Token*, BigStr*, bool): Assertion `false' failed. |
| osh | 5 ${x@u} U l L upper / lower case (bash 5.1 feature) [osh status] Expected 0, got 2 stdout: stderr: echo "${x@u}"
^
[ stdin ]:2: Unexpected token in ${} (VOp3)
|
| osh-cpp | 5 ${x@u} U l L upper / lower case (bash 5.1 feature) [osh-cpp status] Expected 0, got 2 stdout: stderr: echo "${x@u}"
^
[ stdin ]:2: Unexpected token in ${} (VOp3)
|
| osh | 7 ${array@Q} and ${array[@]@Q} stdout: x $'y\\nz' x xstderr: |
| osh-cpp | 7 ${array@Q} and ${array[@]@Q} stdout: x $'y\\nz' x xstderr: |
| osh | 12 undef and @P @Q @a stdout: status=0 '' status=0 status=0stderr: |
| osh-cpp | 12 undef and @P @Q @a stdout: status=0 '' status=0 status=0stderr: |
| osh | 13 argv array and @P @Q @a stdout: status=1 a $'b\\nc' status=0 a status=0stderr: echo ${@@P}
^~
[ -c flag ]:1: fatal: Can't use @P on BashArray
|
| osh-cpp | 13 argv array and @P @Q @a stdout: status=1 a $'b\\nc' status=0 a status=0stderr: echo ${@@P}
^~
[ -c flag ]:1: fatal: Can't use @P on BashArray
|
| osh | 14 assoc array and @P @Q @a stdout: status=1 status=1 A - A status=0stderr: declare -A A=(["x"]="y"); echo ${A@P} - ${A[@]@P}
^~
[ -c flag ]:1: fatal: Can't use @P on BashAssoc
declare -A A=(["x"]="y"); echo ${A@Q} - ${A[@]@Q}
^~
[ -c flag ]:1: fatal: Can't use @Q on BashAssoc
|
| osh-cpp | 14 assoc array and @P @Q @a stdout: status=1 status=1 A - A status=0stderr: declare -A A=(["x"]="y"); echo ${A@P} - ${A[@]@P}
^~
[ -c flag ]:1: fatal: Can't use @P on BashAssoc
declare -A A=(["x"]="y"); echo ${A@Q} - ${A[@]@Q}
^~
[ -c flag ]:1: fatal: Can't use @Q on BashAssoc
|
| osh | 15 ${!var[@]@X} stdout: fail 'x y' astderr: declare -A A=(["x"]="y"); echo ${!A[@]@P}
^~
[ -c flag ]:1: fatal: Can't use @P on BashArray
|
| osh-cpp | 15 ${!var[@]@X} stdout: fail 'x y' astderr: declare -A A=(["x"]="y"); echo ${!A[@]@P}
^~
[ -c flag ]:1: fatal: Can't use @P on BashArray
|
| osh | 17 ${!A@a} and ${!A[@]@a} [osh stdout] Expected 'x=\nx=\n', got 'x=a\n' [osh status] Expected 0, got 1 stdout: x=astderr: echo x=${!A@a}
^~~~
[ stdin ]:3: fatal: Indirect expansion of assoc array
|
| osh-cpp | 17 ${!A@a} and ${!A[@]@a} [osh-cpp stdout] Expected 'x=\nx=\n', got 'x=a\n' [osh-cpp status] Expected 0, got 1 stdout: x=astderr: echo x=${!A@a}
^~~~
[ stdin ]:3: fatal: Indirect expansion of assoc array
|