/home/uke/oil/bin/osh sh-usage: spec test case results

Results for sh-usage.test.sh

statusosh
pass 16
FAIL 1
total17
caseoshdescription
0pass sh -c
1pass empty -c input
2pass sh +c is accepted
3pass empty stdin
4FAIL sh - and sh -- stop flag processing
details
5pass shell obeys --help (regression for OSH)
6pass args are passed
7pass args that look like flags are passed after script
8pass args that look like flags are passed after -c
9pass exit with explicit arg
10pass exit with no args
11pass --rcfile in non-interactive shell prints warnings
12pass accepts -l flag
13pass accepts --login flag (dash and mksh don't accept long flags)
14pass osh --eval
15pass Set LC_ALL LC_CTYPE LC_COLLATE LANG - affects glob ?
16pass LC_CTYPE=invalid
16 passed, 0 OK, 0 not implemented, 0 BUG, 1 failed, 0 timeouts, 0 cases skipped
1 failed under osh

Details on runs that didn't PASS

osh0 sh -c

stdout:
hi
stderr:
osh1 empty -c input

stdout:
stderr: 
osh2 sh +c is accepted

stdout:
hi
stderr:
osh3 empty stdin

stdout:
stderr: 
osh4 sh - and sh -- stop flag processing

[osh stderr] Expected '+ echo foo\n-\n+ echo foo\n' Got 'Traceback (most recent call last):\n File "/home/uke/oil/bin/oils_for_unix.py", line 263, in <module>\n sys.exit(main(sys.argv))\n File "/home/uke/oil/bin/oils_for_unix.py", line 232, in main\n return AppBundleMain(argv)\n File "/home/uke/oil/bin/oils_for_unix.py", line 198, in AppBundleMain\n bash_compat=(applet == \'bash\'))\n File "/home/uke/oil/core/shell.py", line 1296, in Main\n cmd_flags=cmd_eval.IsMainProgram)\n File "/home/uke/oil/core/main_loop.py", line 336, in Batch\n was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)\n File "/home/uke/oil/core/main_loop.py", line 401, in Batch2\n is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)\n File "/home/uke/oil/osh/cmd_eval.py", line 2365, in ExecuteAndCatch\n status = self._Execute(node)\n File "/home/uke/oil/osh/cmd_eval.py", line 2164, in _Execute\n status = self._Dispatch(node, cmd_st)\n File "/home/uke/oil/osh/cmd_eval.py", line 1891, in _Dispatch\n status = self._DoSimple(node, cmd_st)\n File "/home/uke/oil/osh/cmd_eval.py", line 1153, in _DoSimple\n status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)\n File "/home/uke/oil/osh/cmd_eval.py", line 764, in _RunSimpleCommand\n self.tracer.OnSimpleCommand(cmd_val.argv)\n File "/home/uke/oil/core/dev.py", line 660, in OnSimpleCommand\n buf = self._ShTraceBegin()\n File "/home/uke/oil/core/dev.py", line 499, in _ShTraceBegin\n prefix = self._EvalPS4(\'+\')\n File "/home/uke/oil/core/dev.py", line 454, in _EvalPS4\n ps4_word = w_parser.ReadForPlugin()\n File "/home/uke/oil/osh/word_parse.py", line 2358, in ReadForPlugin\n self._ReadLikeDQ(None, False, w.parts)\n File "/home/uke/oil/osh/word_parse.py", line 1100, in _ReadLikeDQ\n elif self.token_type == Id.Lit_EscapedDoubleQuote:\nAttributeError: type object \'Id\' has no attribute \'Lit_EscapedDoubleQuote\'\n-\nTraceback (most recent call last):\n File "/home/uke/oil/bin/oils_for_unix.py", line 263, in <module>\n sys.exit(main(sys.argv))\n File "/home/uke/oil/bin/oils_for_unix.py", line 232, in main\n return AppBundleMain(argv)\n File "/home/uke/oil/bin/oils_for_unix.py", line 198, in AppBundleMain\n bash_compat=(applet == \'bash\'))\n File "/home/uke/oil/core/shell.py", line 1296, in Main\n cmd_flags=cmd_eval.IsMainProgram)\n File "/home/uke/oil/core/main_loop.py", line 336, in Batch\n was_parsed, status = Batch2(cmd_ev, c_parser, errfmt, cmd_flags=cmd_flags)\n File "/home/uke/oil/core/main_loop.py", line 401, in Batch2\n is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags)\n File "/home/uke/oil/osh/cmd_eval.py", line 2365, in ExecuteAndCatch\n status = self._Execute(node)\n File "/home/uke/oil/osh/cmd_eval.py", line 2164, in _Execute\n status = self._Dispatch(node, cmd_st)\n File "/home/uke/oil/osh/cmd_eval.py", line 1891, in _Dispatch\n status = self._DoSimple(node, cmd_st)\n File "/home/uke/oil/osh/cmd_eval.py", line 1153, in _DoSimple\n status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)\n File "/home/uke/oil/osh/cmd_eval.py", line 764, in _RunSimpleCommand\n self.tracer.OnSimpleCommand(cmd_val.argv)\n File "/home/uke/oil/core/dev.py", line 660, in OnSimpleCommand\n buf = self._ShTraceBegin()\n File "/home/uke/oil/core/dev.py", line 499, in _ShTraceBegin\n prefix = self._EvalPS4(\'+\')\n File "/home/uke/oil/core/dev.py", line 454, in _EvalPS4\n ps4_word = w_parser.ReadForPlugin()\n File "/home/uke/oil/osh/word_parse.py", line 2358, in ReadForPlugin\n self._ReadLikeDQ(None, False, w.parts)\n File "/home/uke/oil/osh/word_parse.py", line 1100, in _ReadLikeDQ\n elif self.token_type == Id.Lit_EscapedDoubleQuote:\nAttributeError: type object \'Id\' has no attribute \'Lit_EscapedDoubleQuote\'\n'
[osh stdout] Expected 'foo\n-\nfoo\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 263, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 232, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 198, in AppBundleMain
    bash_compat=(applet == 'bash'))
  File "/home/uke/oil/core/shell.py", line 1296, 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 2365, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 2164, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1891, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1153, in _DoSimple
    status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 764, in _RunSimpleCommand
    self.tracer.OnSimpleCommand(cmd_val.argv)
  File "/home/uke/oil/core/dev.py", line 660, in OnSimpleCommand
    buf = self._ShTraceBegin()
  File "/home/uke/oil/core/dev.py", line 499, in _ShTraceBegin
    prefix = self._EvalPS4('+')
  File "/home/uke/oil/core/dev.py", line 454, in _EvalPS4
    ps4_word = w_parser.ReadForPlugin()
  File "/home/uke/oil/osh/word_parse.py", line 2358, in ReadForPlugin
    self._ReadLikeDQ(None, False, w.parts)
  File "/home/uke/oil/osh/word_parse.py", line 1100, in _ReadLikeDQ
    elif self.token_type == Id.Lit_EscapedDoubleQuote:
AttributeError: type object 'Id' has no attribute 'Lit_EscapedDoubleQuote'
-
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 263, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 232, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 198, in AppBundleMain
    bash_compat=(applet == 'bash'))
  File "/home/uke/oil/core/shell.py", line 1296, 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 2365, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/uke/oil/osh/cmd_eval.py", line 2164, in _Execute
    status = self._Dispatch(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1891, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1153, in _DoSimple
    status = self._RunSimpleCommand(cmd_val, cmd_st, run_flags)
  File "/home/uke/oil/osh/cmd_eval.py", line 764, in _RunSimpleCommand
    self.tracer.OnSimpleCommand(cmd_val.argv)
  File "/home/uke/oil/core/dev.py", line 660, in OnSimpleCommand
    buf = self._ShTraceBegin()
  File "/home/uke/oil/core/dev.py", line 499, in _ShTraceBegin
    prefix = self._EvalPS4('+')
  File "/home/uke/oil/core/dev.py", line 454, in _EvalPS4
    ps4_word = w_parser.ReadForPlugin()
  File "/home/uke/oil/osh/word_parse.py", line 2358, in ReadForPlugin
    self._ReadLikeDQ(None, False, w.parts)
  File "/home/uke/oil/osh/word_parse.py", line 1100, in _ReadLikeDQ
    elif self.token_type == Id.Lit_EscapedDoubleQuote:
AttributeError: type object 'Id' has no attribute 'Lit_EscapedDoubleQuote'
osh5 shell obeys --help (regression for OSH)

stdout:
yes
stderr:
osh6 args are passed

stdout:
['a', 'b']
stderr:
osh7 args that look like flags are passed after script

stdout:
['--help', '--help', '-h']
stderr:
osh8 args that look like flags are passed after -c

stdout:
['--help', '-h']
stderr:
osh9 exit with explicit arg

stdout:
stderr: 
osh10 exit with no args

stdout:
stderr: 
osh11 --rcfile in non-interactive shell prints warnings

stdout:
rc
==> interactive.txt <==
Traceback (most recent call last):
  File "/home/uke/oil/bin/oils_for_unix.py", line 263, in <module>
    sys.exit(main(sys.argv))
  File "/home/uke/oil/bin/oils_for_unix.py", line 232, in main
    return AppBundleMain(argv)
  File "/home/uke/oil/bin/oils_for_unix.py", line 198, in AppBundleMain
    bash_compat=(applet == 'bash'))
  File "/home/uke/oil/core/shell.py", line 1212, in Main
    prompt_plugin, waiter, errfmt)
  File "/home/uke/oil/core/main_loop.py", line 221, in Interactive

==> non-interactive.txt <==
osh warning: --rcfile ignored in non-interactive shell
stderr:
warned=1
warned=0
osh12 accepts -l flag

stdout:
stderr: 
osh13 accepts --login flag (dash and mksh don't accept long flags)

stdout:
stderr: 
osh14 osh --eval

stdout:
one x y z
status=0 flag -c x y z

one x y z
fail x y z
status=42 flag -c x y z
status=0
stderr:
osh15 Set LC_ALL LC_CTYPE LC_COLLATE LANG - affects glob ?

stdout:
LC_ALL _x_
LC_ALL _x_ _μ_

LC_CTYPE _x_
LC_CTYPE _x_ _μ_

LC_COLLATE _x_
LC_COLLATE _x_

LANG _x_
LANG _x_ _μ_
stderr:
osh16 LC_CTYPE=invalid

stdout:
LC_CTYPE _x_
1 err.txt
stderr: