spec test index / oilshell.org
status | osh | osh_.py | osh_.cc | |
pass | 4 | 0 | 0 | |
FAIL | 0 | 4 | 4 | |
total | 4 | 4 | 4 | |
case | osh | osh_.py | osh_.cc | description |
0 | pass | FAIL | FAIL | --debug-file |
details | details | |||
1 | pass | FAIL | FAIL | crash dump |
details | details | |||
2 | pass | FAIL | FAIL | crash dump with source |
details | details | |||
3 | pass | FAIL | FAIL | help index |
details | details |
4 passed, 0 OK, 0 not implemented, 0 BUG, 8 failed, 0 timeouts, 0 cases skipped
osh_.py | 0 --debug-file [osh_.py stdout] Expected 'yes\n', got "(cmd_value.Argv argv:[--debug-file '/debug.txt' -c true] arg_spids:[2 4 7 9])\n(cmd_value.Argv argv:[grep 'OSH started with' '/debug.txt'] arg_spids:[13 15 19])\nyes\n" stdout: (cmd_value.Argv argv:[--debug-file '/debug.txt' -c true] arg_spids:[2 4 7 9]) (cmd_value.Argv argv:[grep 'OSH started with' '/debug.txt'] arg_spids:[13 15 19]) yesstderr: Unhandled SimpleCommand Unhandled SimpleCommand |
osh_.cc | 0 --debug-file [osh_.cc stdout] Expected 'yes\n', got "(cmd_value.Argv argv:[--debug-file '/debug.txt' -c true] arg_spids:[2 4 7 9])\n(cmd_value.Argv argv:[grep 'OSH started with' '/debug.txt'] arg_spids:[13 15 19])\nyes\n" stdout: (cmd_value.Argv argv:[--debug-file '/debug.txt' -c true] arg_spids:[2 4 7 9]) (cmd_value.Argv argv:[grep 'OSH started with' '/debug.txt'] arg_spids:[13 15 19]) yesstderr: Unhandled SimpleCommand Unhandled SimpleCommand |
osh_.py | 1 crash dump [osh_.py stdout] Expected 'status=1\nstatus=0\n', got '(cmd_value.Argv argv:[rm -f \'/*.json\'] arg_spids:[0 2 4])\n(cmd_value.Argv\n argv: [\n -c\n\'\\ng() {\\n local glocal="glocal"\\n echo $(( 1 / 0 ))\\n}\\nf() {\\n local flocal="flocal"\\n shift\\n FOO=bar g\\n}\\nreadonly array=(A B C)\\nf "${array[@]}"\\n\'\n dummy\n a\n b\n c\n ]\n arg_spids: [14 16 31 33 35 37]\n)\nstatus=0\n(cmd_value.Argv argv:[python2 -m json.tool \'/*.json\'] arg_spids:[44 46 48 50])\nstatus=0\n' stdout: (cmd_value.Argv argv:[rm -f '/*.json'] arg_spids:[0 2 4]) (cmd_value.Argv argv: [ -c '\ng() {\n local glocal="glocal"\n echo $(( 1 / 0 ))\n}\nf() {\n local flocal="flocal"\n shift\n FOO=bar g\n}\nreadonly array=(A B C)\nf "${array[@]}"\n' dummy a b c ] arg_spids: [14 16 31 33 35 37] ) status=0 (cmd_value.Argv argv:[python2 -m json.tool '/*.json'] arg_spids:[44 46 48 50]) status=0stderr: Unhandled SimpleCommand Unhandled SimpleCommand Unhandled SimpleCommand |
osh_.cc | 1 crash dump [osh_.cc stdout] Expected 'status=1\nstatus=0\n', got '(cmd_value.Argv argv:[rm -f \'/*.json\'] arg_spids:[0 2 4])\n(cmd_value.Argv\n argv: [\n -c\n\'\\ng() {\\n local glocal="glocal"\\n echo $(( 1 / 0 ))\\n}\\nf() {\\n local flocal="flocal"\\n shift\\n FOO=bar g\\n}\\nreadonly array=(A B C)\\nf "${array[@]}"\\n\'\n dummy\n a\n b\n c\n ]\n arg_spids: [14 16 31 33 35 37]\n)\nstatus=0\n(cmd_value.Argv argv:[python2 -m json.tool \'/*.json\'] arg_spids:[44 46 48 50])\nstatus=0\n' stdout: (cmd_value.Argv argv:[rm -f '/*.json'] arg_spids:[0 2 4]) (cmd_value.Argv argv: [ -c '\ng() {\n local glocal="glocal"\n echo $(( 1 / 0 ))\n}\nf() {\n local flocal="flocal"\n shift\n FOO=bar g\n}\nreadonly array=(A B C)\nf "${array[@]}"\n' dummy a b c ] arg_spids: [14 16 31 33 35 37] ) status=0 (cmd_value.Argv argv:[python2 -m json.tool '/*.json'] arg_spids:[44 46 48 50]) status=0stderr: Unhandled SimpleCommand Unhandled SimpleCommand Unhandled SimpleCommand |
osh_.py | 2 crash dump with source [osh_.py stdout] Expected 'status=1\nOK\n', got "(cmd_value.Argv argv:[-c '\\nset -o errexit\\nsource spec/testdata/crash.sh\\n'] arg_spids:[5 7])\nstatus=0\n" stdout: (cmd_value.Argv argv:[-c '\nset -o errexit\nsource spec/testdata/crash.sh\n'] arg_spids:[5 7]) status=0stderr: Unhandled SimpleCommand + set -o errexit + (lvalue.Named name:ok spids:[32]) = (value.Str s:0) + test -s '/*.json' + test 0 -ge 1 |
osh_.cc | 2 crash dump with source [osh_.cc stdout] Expected 'status=1\nOK\n', got "(cmd_value.Argv argv:[-c '\\nset -o errexit\\nsource spec/testdata/crash.sh\\n'] arg_spids:[5 7])\nstatus=0\n" stdout: (cmd_value.Argv argv:[-c '\nset -o errexit\nsource spec/testdata/crash.sh\n'] arg_spids:[5 7]) status=0stderr: Unhandled SimpleCommand + set -o errexit |
osh_.py | 3 help index [osh_.py stdout] Expected 'index 0\nindex groups 0\nindex ZZZ 1\n', got '\x1b[7m Overview \x1b[0;0m\n\n [Usage] bundle-usage osh-usage oil-usage config startup\n line-editing prompt\n [Lexing] comment # line-continuation \\\n [Oil Lexing] X single-command %%% X docstring ###\n\n\x1b[7m Command Language \x1b[0;0m\n\n [Commands] simple-command semicolon ;\n [Conditional] case if true false colon :\n bang ! and && or || dbracket [[\n [Iteration] while until for for-expr-sh ((\n [Control Flow] break continue return exit\n [Grouping] function block { subshell (\n [Concurrency] pipe | X |&\n ampersand &\n [Redirects] redir-file > >> >| < <> X &>\n redir-desc >& <&\n here-doc << <<- <<<\n [Other Command] dparen (( time X coproc X select\n [Oil Keywords] proc return equal =\n\n\x1b[7m Variable Assignments \x1b[0;0m\n\n [Operators] assign str=\'xyz\'\n append str+=\'abc\'\n [Compound Data] array array=(a b c) array[1]=B "${a[@]}"\n assoc assoc=([\'a\']=1 [\'b\']=2) assoc[\'x\']=b\n [Builtins] local readonly export unset shift\n declare typeset X let\n [Oil Keywords] const var setvar set setlocal setglobal setref\n\n\x1b[7m Oil Expression Language \x1b[0;0m\n\n [Functions] proc-decl proc p (x, y, @rest, &block) { echo hi }\n func-call f(x, y)\n [Literals] oil-string c\'line\\n\' r\'[a-z]\\n\'\n oil-array @(a b c)\n [Regexes] re-literal /d+/\n re-compound ~ (group) <capture> sequence\n re-primitive %zero Subpattern @subpattern\n \'sq\' "dq" $x ${x}\n named-classes dot digit space word d s w\n class-literal [c a-z \'abc\' \\\\ \\xFF \\u0100]\n re-flags ignorecase etc.\n re-multiline ///\n re-glob-ops ~ !~\n\n\x1b[7m Word Language \x1b[0;0m\n\n [Quotes] quotes \'abc\' $\'\\n\' "$var"\n [Substitutions] com-sub $(command) `command`\n var-sub ${var} $0 $9 \n arith-sub $((1 + 2))\n tilde-sub ~/src\n proc-sub diff <(sort L.txt) <(sort R.txt)\n [Var Ops] op-test ${x:-default} \n op-unary ${x%%suffix} etc.\n op-str ${x//y/z}\n op-slice ${a[@]:0:1}\n op-format ${x@P}\n [Oil Word] inline-call $strfunc(x, y) @arrayfunc(z)\n splice @array @ARGV\n X oil-printf ${x %.3f}\n X oil-format ${x|html}\n\n\x1b[7m Other Shell Sublanguages \x1b[0;0m\n\n [Arithmetic] arith-context Where legacy arithmetic is allowed\n num-literals 0xFF 0755 etc.\n math 1 + 2*3\n arith-logical !a && b\n bitwise ~a ^ b\n arith-assign a *= 2\n [Boolean] dbracket [[ vs. the test builtin\n bool-expr [[ ! $x && $y || $z ]]\n test ! $x -a $y -o $z\n bool-infix [[ $a -nt $b ]] [[ $x == $y ]]\n bool-path [[ -d /etc ]]\n bool-str [[ -z \'\' ]]\n bool-other [[ -o errexit ]]\n [Patterns] glob *.py\n extglob @(*.py|*.sh)\n regex [[ foo =~ [a-z]+ ]]\n [Brace Expand] braces {alice,bob}@example.com\n [History] histsub !$ !! !n\n\n\x1b[7m Builtin Commands \x1b[0;0m\n\n [I/O] read echo \n X readarray X mapfile\n [Run Code] source . eval trap\n [Set Options] set shopt\n [Working Dir] cd pwd pushd popd dirs\n [Completion] complete compgen compopt compadjust\n [Shell Process] exec X logout \n umask X ulimit X times\n [Child Process] jobs wait ampersand &\n fg X bg X disown \n [External] test [ printf getopts X kill\n [Introspection] help hash type X caller\n [Word Lookup] command builtin\n [Interactive] alias unalias history X fc X bind\nX [Unsupported] enable\n [Oil Builtins] cd X shopt X env compatible, and takes a block\n X fork X wait replaces & and (), takes a block\n X fopen Many open streams, takes a block\n X use source with namespace, file-relative \n X opts getopts replacement\n push add elements to end of array\n repr Show debug representation of vars\n getline Instead of read -raw :name\n write like echo, but with --, -sep, -end\n X log X die common functions (polyfill)\n [Data Formats] json X tsv2 X html X struct/binary\nX [External Lang] BEGIN END when (awk)\n rule (make) each (xargs) fs (find)\nX [Testing] check\n\n\x1b[7m Shell Options \x1b[0;0m\n\n [Errors] nounset pipefail errexit inherit_errexit\n [Globbing] noglob nullglob X failglob dashglob\n [Debugging] xtrace X verbose X extdebug\n [Interactive] emacs vi\n [Other Option] X noclobber\n [strict:all] * All options starting with \'strict_\'\n strict_argv No empty argv\n strict_arith Fatal parse errors (on by default)\n strict_array Arrays don\'t decay to strings\n strict_control_flow trap misplaced break/continue\n strict_echo echo takes 0 or 1 arguments\n strict_errexit Disallow code that ignores failure\n strict_eval_builtin eval takes exactly 1 argument\n strict_nameref trap invalid variable names\n strict_word_eval Expose unicode and slicing errors\n strict_tilde Tilde subst can result in error\n X strict_backslash Parse the sublanguage more strictly\n X strict_glob Parse the sublanguage more strictly\n X strict_trap Function name only\n parse_ignored Parse and silently ignore?\n [oil:basic] * Enable Oil functionality\n parse_at echo @array @arrayfunc(x, y)\n parse_brace if true { ... }; cd ~/src { ... }\n parse_paren if (x > 0) ...\n X parse_redir_expr >> var x << \'here string\'\n X longopts test -file, read -delim, etc.\n more_errexit More errexit checks -- at command sub\n simple_word_eval No splitting, static globbing\n dashglob Disabled to avoid files like -rf\n [oil:nice] * The full Oil language\n parse_equals x = \'s\' (for cleaner config blocks)\n parse_set instead of setvar\n X parse_amp echo hi &2 > /dev/null\n X parse_dollar_slash egrep $/ d+ / *.txt\n X parse_dparen remove ((\n X parse_rawc r\'\\\' c\'\\n\' c"$x\\n"\n X simple_test_builtin Only file tests, remove [, status 2\n X no_old_builtins local/declare/etc. pushd/popd/dirs\n ... source unset printf [un]alias\n ... getopts\n X no_old_syntax [[ $(( )) ${x%prefix} $$\n $\'\\n\' @(*.sh|*.py) `echo comsub`\n ${a[@]}\n [Compatibility] eval_unsafe_arith parse_dynamic_arith\n verbose_errexit\n\n\x1b[7m Environment Variables \x1b[0;0m\n\n [Shell Options] SHELLOPTS X BASHOPTS\n [Other Env] HOME PATH IFS\n [Oil Paths] ?builtins ?completion_plugins ?coprocesses\n\n\x1b[7m Special Variables \x1b[0;0m\n\n [POSIX Special] $@ $* $# $? $- $$ $! $0 $9\n [Other Special] BASH_REMATCH @PIPESTATUS\n [Oil Special] ARGV STATUS M\n [Platform] HOSTNAME OSTYPE OIL_VERSION\n [Call Stack] @BASH_SOURCE @FUNCNAME @BASH_LINENO \n X @BASH_ARGV X @BASH_ARGC\n [Tracing] LINENO SOURCE_NAME\n [Process State] X BASHPID X PPID UID EUID \nX [Process Stack] BASH_SUBSHELL SHLVL\nX [Shell State] BASH_CMDS @DIRSTACK\n [Completion] @COMP_WORDS COMP_CWORD COMP_LINE COMP_POINT\n COMP_WORDBREAKS @COMPREPLY X COMP_KEY\n X COMP_TYPE COMP_ARGV\n [cd] PWD OLDPWD X CDPATH\n [getopts] OPTIND OPTARG X OPTERR\n [read] REPLY IFS\n [Functions] X RANDOM X SECONDS\n\n\x1b[7m Plugins and Hooks \x1b[0;0m\n\n [Signals] SIGTERM X SIGINT X SIGABRT SIG...\n [Traps] EXIT X ERR X DEBUG X RETURN\n [Words] PS1 X PS2 X PS3 PS4\n [Completion] complete\n [Other Plugin] X command_not_found PROMPT_COMMAND\n\n\x1b[7m Oil Libraries \x1b[0;0m\n\n [Collections] len() copy()\n [Pattern] regmatch() fnmatch()\n [String] find() sub() join() \n split() $IFS, awk algorithm, regex\n [Word] glob() maybe()\n [Better Syntax] shquote()\n lstrip() rstrip() lstripglob() rstripglob()\n upper() lower()\n strftime()\n [Arrays] index()\n [Assoc Arrays] @names() @values()\n [Block] setvar() for procs to set in outer scope\n evalblock() procs evaluate block to namespace\nX [Hashing] sha1 sha256 (etc.)\n\nindex 0\n\x1b[7m Command Language \x1b[0;0m\n\n [Commands] simple-command semicolon ;\n [Conditional] case if true false colon :\n bang ! and && or || dbracket [[\n [Iteration] while until for for-expr-sh ((\n [Control Flow] break continue return exit\n [Grouping] function block { subshell (\n [Concurrency] pipe | X |&\n ampersand &\n [Redirects] redir-file > >> >| < <> X &>\n redir-desc >& <&\n here-doc << <<- <<<\n [Other Command] dparen (( time X coproc X select\n [Oil Keywords] proc return equal =\n\n\x1b[7m Variable Assignments \x1b[0;0m\n\n [Operators] assign str=\'xyz\'\n append str+=\'abc\'\n [Compound Data] array array=(a b c) array[1]=B "${a[@]}"\n assoc assoc=([\'a\']=1 [\'b\']=2) assoc[\'x\']=b\n [Builtins] local readonly export unset shift\n declare typeset X let\n [Oil Keywords] const var setvar set setlocal setglobal setref\n\nindex groups 0\nindex ZZZ 1\n' stdout: [7m Overview [0;0m [Usage] bundle-usage osh-usage oil-usage config startup line-editing prompt [Lexing] comment # line-continuation \ [Oil Lexing] X single-command %%% X docstring ### [7m Command Language [0;0m [Commands] simple-command semicolon ; [Conditional] case if true false colon : bang ! and && or || dbracket [[ [Iteration] while until for for-expr-sh (( [Control Flow] break continue return exit [Grouping] function block { subshell ( [Concurrency] pipe | X |& ampersand & [Redirects] redir-file > >> >| < <> X &> redir-desc >& <& here-doc << <<- <<< [Other Command] dparen (( time X coproc X select [Oil Keywords] proc return equal = [7m Variable Assignments [0;0m [Operators] assign str='xyz' append str+='abc' [Compound Data] array array=(a b c) array[1]=B "${a[@]}" assoc assoc=(['a']=1 ['b']=2) assoc['x']=b [Builtins] local readonly export unset shift declare typeset X let [Oil Keywords] const var setvar set setlocal setglobal setref [7m Oil Expression Language [0;0m [Functions] proc-decl proc p (x, y, @rest, &block) { echo hi } func-call f(x, y) [Literals] oil-string c'line\n' r'[a-z]\n' oil-array @(a b c) [Regexes] re-literal /d+/ re-compound ~ (group) <capture> sequence re-primitive %zero Subpattern @subpattern 'sq' "dq" $x ${x} named-classes dot digit space word d s w class-literal [c a-z 'abc' \\ \xFF \u0100] re-flags ignorecase etc. re-multiline /// re-glob-ops ~ !~ [7m Word Language [0;0m [Quotes] quotes 'abc' $'\n' "$var" [Substitutions] com-sub $(command) `command` var-sub ${var} $0 $9 arith-sub $((1 + 2)) tilde-sub ~/src proc-sub diff <(sort L.txt) <(sort R.txt) [Var Ops] op-test ${x:-default} op-unary ${x%%suffix} etc. op-str ${x//y/z} op-slice ${a[@]:0:1} op-format ${x@P} [Oil Word] inline-call $strfunc(x, y) @arrayfunc(z) splice @array @ARGV X oil-printf ${x %.3f} X oil-format ${x|html} [7m Other Shell Sublanguages [0;0m [Arithmetic] arith-context Where legacy arithmetic is allowed num-literals 0xFF 0755 etc. math 1 + 2*3 arith-logical !a && b bitwise ~a ^ b arith-assign a *= 2 [Boolean] dbracket [[ vs. the test builtin bool-expr [[ ! $x && $y || $z ]] test ! $x -a $y -o $z bool-infix [[ $a -nt $b ]] [[ $x == $y ]] bool-path [[ -d /etc ]] bool-str [[ -z '' ]] bool-other [[ -o errexit ]] [Patterns] glob *.py extglob @(*.py|*.sh) regex [[ foo =~ [a-z]+ ]] [Brace Expand] braces {alice,bob}@example.com [History] histsub !$ !! !n [7m Builtin Commands [0;0m [I/O] read echo X readarray X mapfile [Run Code] source . eval trap [Set Options] set shopt [Working Dir] cd pwd pushd popd dirs [Completion] complete compgen compopt compadjust [Shell Process] exec X logout umask X ulimit X times [Child Process] jobs wait ampersand & fg X bg X disown [External] test [ printf getopts X kill [Introspection] help hash type X caller [Word Lookup] command builtin [Interactive] alias unalias history X fc X bind X [Unsupported] enable [Oil Builtins] cd X shopt X env compatible, and takes a block X fork X wait replaces & and (), takes a block X fopen Many open streams, takes a block X use source with namespace, file-relative X opts getopts replacement push add elements to end of array repr Show debug representation of vars getline Instead of read -raw :name write like echo, but with --, -sep, -end X log X die common functions (polyfill) [Data Formats] json X tsv2 X html X struct/binary X [External Lang] BEGIN END when (awk) rule (make) each (xargs) fs (find) X [Testing] check [7m Shell Options [0;0m [Errors] nounset pipefail errexit inherit_errexit [Globbing] noglob nullglob X failglob dashglob [Debugging] xtrace X verbose X extdebug [Interactive] emacs vi [Other Option] X noclobber [strict:all] * All options starting with 'strict_' strict_argv No empty argv strict_arith Fatal parse errors (on by default) strict_array Arrays don't decay to strings strict_control_flow trap misplaced break/continue strict_echo echo takes 0 or 1 arguments strict_errexit Disallow code that ignores failure strict_eval_builtin eval takes exactly 1 argument strict_nameref trap invalid variable names strict_word_eval Expose unicode and slicing errors strict_tilde Tilde subst can result in error X strict_backslash Parse the sublanguage more strictly X strict_glob Parse the sublanguage more strictly X strict_trap Function name only parse_ignored Parse and silently ignore? [oil:basic] * Enable Oil functionality parse_at echo @array @arrayfunc(x, y) parse_brace if true { ... }; cd ~/src { ... } parse_paren if (x > 0) ... X parse_redir_expr >> var x << 'here string' X longopts test -file, read -delim, etc. more_errexit More errexit checks -- at command sub simple_word_eval No splitting, static globbing dashglob Disabled to avoid files like -rf [oil:nice] * The full Oil language parse_equals x = 's' (for cleaner config blocks) parse_set instead of setvar X parse_amp echo hi &2 > /dev/null X parse_dollar_slash egrep $/ d+ / *.txt X parse_dparen remove (( X parse_rawc r'\' c'\n' c"$x\n" X simple_test_builtin Only file tests, remove [, status 2 X no_old_builtins local/declare/etc. pushd/popd/dirs ... source unset printf [un]alias ... getopts X no_old_syntax [[ $(( )) ${x%prefix} $$ $'\n' @(*.sh|*.py) `echo comsub` ${a[@]} [Compatibility] eval_unsafe_arith parse_dynamic_arith verbose_errexit [7m Environment Variables [0;0m [Shell Options] SHELLOPTS X BASHOPTS [Other Env] HOME PATH IFS [Oil Paths] ?builtins ?completion_plugins ?coprocesses [7m Special Variables [0;0m [POSIX Special] $@ $* $# $? $- $$ $! $0 $9 [Other Special] BASH_REMATCH @PIPESTATUS [Oil Special] ARGV STATUS M [Platform] HOSTNAME OSTYPE OIL_VERSION [Call Stack] @BASH_SOURCE @FUNCNAME @BASH_LINENO X @BASH_ARGV X @BASH_ARGC [Tracing] LINENO SOURCE_NAME [Process State] X BASHPID X PPID UID EUID X [Process Stack] BASH_SUBSHELL SHLVL X [Shell State] BASH_CMDS @DIRSTACK [Completion] @COMP_WORDS COMP_CWORD COMP_LINE COMP_POINT COMP_WORDBREAKS @COMPREPLY X COMP_KEY X COMP_TYPE COMP_ARGV [cd] PWD OLDPWD X CDPATH [getopts] OPTIND OPTARG X OPTERR [read] REPLY IFS [Functions] X RANDOM X SECONDS [7m Plugins and Hooks [0;0m [Signals] SIGTERM X SIGINT X SIGABRT SIG... [Traps] EXIT X ERR X DEBUG X RETURN [Words] PS1 X PS2 X PS3 PS4 [Completion] complete [Other Plugin] X command_not_found PROMPT_COMMAND [7m Oil Libraries [0;0m [Collections] len() copy() [Pattern] regmatch() fnmatch() [String] find() sub() join() split() $IFS, awk algorithm, regex [Word] glob() maybe() [Better Syntax] shquote() lstrip() rstrip() lstripglob() rstripglob() upper() lower() strftime() [Arrays] index() [Assoc Arrays] @names() @values() [Block] setvar() for procs to set in outer scope evalblock() procs evaluate block to namespace X [Hashing] sha1 sha256 (etc.) index 0 [7m Command Language [0;0m [Commands] simple-command semicolon ; [Conditional] case if true false colon : bang ! and && or || dbracket [[ [Iteration] while until for for-expr-sh (( [Control Flow] break continue return exit [Grouping] function block { subshell ( [Concurrency] pipe | X |& ampersand & [Redirects] redir-file > >> >| < <> X &> redir-desc >& <& here-doc << <<- <<< [Other Command] dparen (( time X coproc X select [Oil Keywords] proc return equal = [7m Variable Assignments [0;0m [Operators] assign str='xyz' append str+='abc' [Compound Data] array array=(a b c) array[1]=B "${a[@]}" assoc assoc=(['a']=1 ['b']=2) assoc['x']=b [Builtins] local readonly export unset shift declare typeset X let [Oil Keywords] const var setvar set setlocal setglobal setref index groups 0 index ZZZ 1stderr: [??? no location ???] Invalid help index group: 'ZZZ' |
osh_.cc | 3 help index [osh_.cc stdout] Expected 'index 0\nindex groups 0\nindex ZZZ 1\n', got '' [osh_.cc status] Expected 0, got -6 stdout: stderr: osh_eval.dbg: mycpp/mylib.cc:179: List<Str *> *Str::splitlines(bool): Assertion `keep == true' failed. |