Results for sh-usage.test.sh

statusbashdashmkshzshosh
pass 121091213
ok 01100
N-I 23420
FAIL 00001
total1414141414
casebashdashmkshzshoshdescription
0pass pass pass pass pass sh -c
1pass pass pass pass pass empty -c input
2pass pass N-I pass pass sh +c is accepted
details
3pass pass pass pass pass empty stdin
4pass N-I N-I pass FAIL shell obeys --help (regression for OSH)
detailsdetailsdetails
5pass pass pass pass pass args are passed
6pass pass pass pass pass args that look like flags are passed after script
7pass pass pass pass pass args that look like flags are passed after -c
8pass pass pass pass pass exit with explicit arg
9pass pass pass pass pass exit with no args
10N-I N-I N-I N-I pass --rcfile in non-interactive shell prints warnings
detailsdetailsdetailsdetails
11pass pass pass pass pass accepts -l flag
12pass ok ok pass pass accepts --login flag (dash and mksh don't accept long flags)
detailsdetails
13N-I N-I N-I N-I pass osh --eval
detailsdetailsdetailsdetails
56 passed, 2 OK, 11 not implemented, 0 BUG, 1 failed, 0 timeouts, 0 cases skipped
1 failed under osh

Details on runs that didn't PASS

mksh2 sh +c is accepted

stdout:
stderr: 
mksh: echo hi: No such file or directory
dash4 shell obeys --help (regression for OSH)

stdout:
stderr: 
dash: 0: Illegal option --
mksh4 shell obeys --help (regression for OSH)

stdout:
stderr: 
mksh: mksh: --: unknown option
osh4 shell obeys --help (regression for OSH)

[osh stdout] Expected 'yes\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 1253, 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 2175, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 1974, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1711, in _Dispatch
    status = self._DoShAssignment(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1028, in _DoShAssignment
    rhs = self.word_ev.EvalRhsWord(pair.rhs)
  File "/home/uke/oil/osh/word_eval.py", line 2194, in EvalRhsWord
    return self.EvalWordToString(w)
  File "/home/uke/oil/osh/word_eval.py", line 2103, in EvalWordToString
    self._EvalWordPart(p, part_vals, 0)
  File "/home/uke/oil/osh/word_eval.py", line 1881, in _EvalWordPart
    quoted)  # type: part_value_t
  File "/home/uke/oil/osh/word_eval.py", line 2629, in _EvalCommandSub
    stdout_str = self.shell_ex.RunCommandSub(cs_part)
  File "/home/uke/oil/core/executor.py", line 691, in RunCommandSub
    status, stdout_str, stderr_str = self.CaptureStdout(node)
  File "/home/uke/oil/core/executor.py", line 619, in CaptureStdout
    fds, w, exc = select.select([r,r2], [], [r,r2], -1)
NameError: global name 'select' is not defined
bash10 --rcfile in non-interactive shell prints warnings

stdout:
rc
==> interactive.txt <==
bash: cannot set terminal process group (15405): Inappropriate ioctl for device
bash: no job control in this shell
bash-5.2$ exit

==> non-interactive.txt <==
stderr:
warned=1
warned=1
dash10 --rcfile in non-interactive shell prints warnings

stdout:
==> interactive.txt <==
dash: 0: Illegal option --

==> non-interactive.txt <==
dash: 0: Illegal option --
stderr:
warned=1
warned=1
mksh10 --rcfile in non-interactive shell prints warnings

stdout:
==> interactive.txt <==
mksh: mksh: --: unknown option

==> non-interactive.txt <==
mksh: mksh: --: unknown option
stderr:
warned=1
warned=1
zsh10 --rcfile in non-interactive shell prints warnings

stdout:
==> interactive.txt <==
zsh: no such option: rcfile

==> non-interactive.txt <==
zsh: no such option: rcfile
stderr:
warned=1
warned=1
dash12 accepts --login flag (dash and mksh don't accept long flags)

stdout:
stderr: 
dash: 0: Illegal option --
mksh12 accepts --login flag (dash and mksh don't accept long flags)

stdout:
stderr: 
mksh: mksh: --: unknown option
bash13 osh --eval

stdout:
stderr: 
dash13 osh --eval

stdout:
stderr: 
mksh13 osh --eval

stdout:
stderr: 
zsh13 osh --eval

stdout:
stderr: