Results for serialize.test.sh

statusbashmkshzshashosh
pass 74306
ok 33422
N-I 00180
BUG 03200
FAIL 00002
total1010101010
casebashmkshzshashoshdescription
0pass ok ok N-I FAIL printf %q newline
detailsdetailsdetailsdetails
1ok pass ok N-I pass printf %q spaces
detailsdetailsdetails
2pass BUG pass N-I FAIL printf %q quotes
detailsdetailsdetails
3pass BUG pass N-I ok printf %q unprintable
detailsdetailsdetails
4pass pass pass N-I ok printf %q unicode
detailsdetails
5ok BUG ok N-I pass printf %q invalid unicode
detailsdetailsdetailsdetails
6pass pass BUG ok pass set
detailsdetails
7pass ok BUG N-I pass declare
detailsdetailsdetails
8pass ok N-I N-I pass ${var@Q}
detailsdetailsdetails
9ok pass ok ok pass xtrace
detailsdetailsdetails
20 passed, 14 OK, 9 not implemented, 5 BUG, 2 failed, 0 timeouts, 0 cases skipped
2 failed under osh

Details on runs that didn't PASS

mksh0 printf %q newline

stdout:
'one'$'\n''two'
roundtrip-ok
stderr:
zsh0 printf %q newline

stdout:
one$'\n'two
roundtrip-ok
stderr:
ash0 printf %q newline

stdout:
stderr: 
osh0 printf %q newline

[osh stdout] Expected "$'one\\ntwo'\nroundtrip-ok\n", got "$'one\\ntwo'\n"
[osh status] Expected 0, got 1
[osh stderr] Found 'Traceback (most recent'

stdout:
$'one\ntwo'
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 1266, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2285, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 2084, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1821, in _Dispatch
    status = self._DoShAssignment(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1177, in _DoShAssignment
    rhs = self.word_ev.EvalRhsWord(pair.rhs)
  File "/home/uke/oil/osh/word_eval.py", line 2188, in EvalRhsWord
    return self.EvalWordToString(w)
  File "/home/uke/oil/osh/word_eval.py", line 2097, in EvalWordToString
    self._EvalWordPart(p, part_vals, 0)
  File "/home/uke/oil/osh/word_eval.py", line 1867, in _EvalWordPart
    self._EvalDoubleQuoted(part.parts, part_vals)
  File "/home/uke/oil/osh/word_eval.py", line 1388, in _EvalDoubleQuoted
    self._EvalWordPart(p, part_vals, QUOTED)
  File "/home/uke/oil/osh/word_eval.py", line 1875, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2623, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 693, in RunCommandSub
    status, stdout_str, stderr_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 621, in CaptureStdout
    fds = pyos.WaitForInputs([r, r2])
  File "/home/uke/oil/core/pyos.py", line 288, in WaitForInputs
    r, w, exc = select.select(fd, [], [fd])
TypeError: argument must be an int, or have a fileno() method
bash1 printf %q spaces

stdout:
one\ two
stderr:
zsh1 printf %q spaces

stdout:
one\ two
stderr:
ash1 printf %q spaces

stdout:
stderr: 
mksh2 printf %q quotes

stdout:
''\''"'
roundtrip-ok
stderr:
ash2 printf %q quotes

stdout:
stderr: 
osh2 printf %q quotes

[osh stdout] Expected '$\'\\\'"\'\nroundtrip-ok\n', got '$\'\\\'"\'\n'
[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 1266, in Main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/uke/oil/core/main_loop.py", line 336, in Batch
    was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)
  File "/home/uke/oil/core/main_loop.py", line 401, in Batch2
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 2285, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 2084, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1821, in _Dispatch
    status = self._DoShAssignment(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1177, in _DoShAssignment
    rhs = self.word_ev.EvalRhsWord(pair.rhs)
  File "/home/uke/oil/osh/word_eval.py", line 2188, in EvalRhsWord
    return self.EvalWordToString(w)
  File "/home/uke/oil/osh/word_eval.py", line 2097, in EvalWordToString
    self._EvalWordPart(p, part_vals, 0)
  File "/home/uke/oil/osh/word_eval.py", line 1867, in _EvalWordPart
    self._EvalDoubleQuoted(part.parts, part_vals)
  File "/home/uke/oil/osh/word_eval.py", line 1388, in _EvalDoubleQuoted
    self._EvalWordPart(p, part_vals, QUOTED)
  File "/home/uke/oil/osh/word_eval.py", line 1875, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2623, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 693, in RunCommandSub
    status, stdout_str, stderr_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 621, in CaptureStdout
    fds = pyos.WaitForInputs([r, r2])
  File "/home/uke/oil/core/pyos.py", line 288, in WaitForInputs
    r, w, exc = select.select(fd, [], [fd])
TypeError: argument must be an int, or have a fileno() method
mksh3 printf %q unprintable

stdout:
''$'\377'
stderr:
ash3 printf %q unprintable

stdout:
stderr: 
osh3 printf %q unprintable

stdout:
$'\xff'
stderr:
ash4 printf %q unicode

stdout:
stderr: 
osh4 printf %q unicode

stdout:
'μ'
stderr:
bash5 printf %q invalid unicode

stdout:
$'\316'
$'\316μ'
$'μ\316'
$'\316a'
$'a\316'
stderr:
mksh5 printf %q invalid unicode

stdout:
''$'\316'
''$'\316''μ'
'μ'$'\316'
stderr:
zsh5 printf %q invalid unicode

stdout:
$'\316'
$'\316'μ
μ$'\316'
$'\316'a
a$'\316'
stderr:
ash5 printf %q invalid unicode

stdout:
stderr: 
zsh6 set

stdout:
stderr: 
ash6 set

stdout:
zz='one
stderr:
mksh7 declare

stdout:
typeset zz
typeset zz=$'one\ntwo'
stderr:
zsh7 declare

stdout:
stderr: 
ash7 declare

stdout:
stderr: 
mksh8 ${var@Q}

stdout:
$'one
two μ'
$'one
two μ'
stderr:
zsh8 ${var@Q}

stdout:
stderr: 
ash8 ${var@Q}

stdout:
stderr: 
bash9 xtrace

stdout:
one
two
stderr:
+ echo 'one
two'
zsh9 xtrace

stdout:
one
two
stderr:
+zsh:3> echo 'one
two'
ash9 xtrace

stdout:
one
two
stderr:
+ echo 'one
two'