Results for ysh-bugs.test.sh

statusyshysh_ALT
pass 1111
FAIL 77
total1818
caseyshysh_ALTdescription
0pass pass fastlex: NUL byte not allowed inside char literal #' '
1pass pass fastlex: NUL byte inside shebang line
2pass pass Tea keywords don't interfere with YSH expressions
3pass pass Catch AttributeError
4FAIL FAIL Command sub paren parsing bug (#1387)
detailsdetails
5FAIL FAIL More Command sub paren parsing
detailsdetails
6FAIL FAIL don't execute empty command
detailsdetails
7FAIL FAIL Do && || with YSH constructs make sense/
detailsdetails
8pass pass shvar then replace - bug #1986 context manager crash
9pass pass Parsing crash - bug #2003
10pass pass proc with IFS= read -r line - dynamic scope - issue #2012
11FAIL FAIL func call inside proc call - error message attribution
detailsdetails
12pass pass Crash in parsing case on EOF condition - issue #2037
13pass pass Crash due to incorrect of context manager rooting - issue #1986
14pass pass crash due to arbitrary PNode limit - issue #2078
15pass pass bad assertion when pretty printing
16FAIL FAIL Another "stealing stdin" issue with spec tests
detailsdetails
17FAIL FAIL Long boolean flags can't have attached values
detailsdetails
22 passed, 0 OK, 0 not implemented, 0 BUG, 14 failed, 0 timeouts, 0 cases skipped
7 failed under osh

Details on runs that didn't PASS

ysh4 Command sub paren parsing bug (#1387)

[ysh stdout] Expected 'true\n3\n125\n13\n', got ''
[ysh status] Expected 0, got 1
[ysh 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 137, in AppBundleMain
    return shell.Main('ysh', 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 1811, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1054, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2479, in EvalWordSequence2
    allow_assign)
  File "/home/uke/oil/osh/word_eval.py", line 2440, in SimpleEvalWordSequence2
    self._EvalWordToParts(w, part_vals, 0)  # not quoted
  File "/home/uke/oil/osh/word_eval.py", line 1983, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  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
ysh_ALT4 Command sub paren parsing bug (#1387)

[ysh_ALT stdout] Expected 'true\n3\n125\n13\n', got ''
[ysh_ALT status] Expected 0, got 1
[ysh_ALT stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/uke/oil/bin/oil.py", line 34, in _cpython_main_hook
    sys.exit(oils_for_unix.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 137, in AppBundleMain
    return shell.Main('ysh', 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 2288, in ExecuteAndCatch
    raise  # 'eval break' and 'source return.sh', etc.
  File "/home/uke/oil/osh/cmd_eval.py", line 2137, in _Execute
    errexit_loc = process_sub_st.locs[i]
  File "/home/uke/oil/osh/cmd_eval.py", line 1822, in _Dispatch
    self._LeafTick()
  File "/home/uke/oil/osh/cmd_eval.py", line 1054, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2479, in EvalWordSequence2
    allow_assign)
  File "/home/uke/oil/osh/word_eval.py", line 2440, in SimpleEvalWordSequence2
    self._EvalWordToParts(w, part_vals, 0)  # not quoted
  File "/home/uke/oil/osh/word_eval.py", line 1983, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  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.
FATAL: couldn't import from app bundle '/home/uke/oil/_tmp/oil-tar-test/oil-0.28.0/_bin/ysh' (1)
Stripping the oil.ovm binary may cause this error.
See https://github.com/oilshell/oil/issues/47
ysh5 More Command sub paren parsing

[ysh stdout] Expected 'for\nwhile\nif\nelif\n', got ''
[ysh status] Expected 0, got 1
[ysh 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 137, in AppBundleMain
    return shell.Main('ysh', 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 1811, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1054, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2479, in EvalWordSequence2
    allow_assign)
  File "/home/uke/oil/osh/word_eval.py", line 2440, in SimpleEvalWordSequence2
    self._EvalWordToParts(w, part_vals, 0)  # not quoted
  File "/home/uke/oil/osh/word_eval.py", line 1983, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  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
ysh_ALT5 More Command sub paren parsing

[ysh_ALT stdout] Expected 'for\nwhile\nif\nelif\n', got ''
[ysh_ALT status] Expected 0, got 1
[ysh_ALT stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/uke/oil/bin/oil.py", line 34, in _cpython_main_hook
    sys.exit(oils_for_unix.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 137, in AppBundleMain
    return shell.Main('ysh', 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 2288, in ExecuteAndCatch
    raise  # 'eval break' and 'source return.sh', etc.
  File "/home/uke/oil/osh/cmd_eval.py", line 2137, in _Execute
    errexit_loc = process_sub_st.locs[i]
  File "/home/uke/oil/osh/cmd_eval.py", line 1822, in _Dispatch
    self._LeafTick()
  File "/home/uke/oil/osh/cmd_eval.py", line 1054, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2479, in EvalWordSequence2
    allow_assign)
  File "/home/uke/oil/osh/word_eval.py", line 2440, in SimpleEvalWordSequence2
    self._EvalWordToParts(w, part_vals, 0)  # not quoted
  File "/home/uke/oil/osh/word_eval.py", line 1983, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  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.
FATAL: couldn't import from app bundle '/home/uke/oil/_tmp/oil-tar-test/oil-0.28.0/_bin/ysh' (1)
Stripping the oil.ovm binary may cause this error.
See https://github.com/oilshell/oil/issues/47
ysh6 don't execute empty command

[ysh status] Expected 127, got 1
[ysh stderr] Found 'Traceback (most recent'

stdout:
type -a returned 1
stderr:
. builtin try
. builtin type -a ''
: not found
. builtin echo 'type -a returned 1'
| command sub 3033
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 137, in AppBundleMain
    return shell.Main('ysh', 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 1811, in _Dispatch
    status = self._DoSimple(node, cmd_st)
  File "/home/uke/oil/osh/cmd_eval.py", line 1054, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2479, in EvalWordSequence2
    allow_assign)
  File "/home/uke/oil/osh/word_eval.py", line 2415, in SimpleEvalWordSequence2
    strs0 = self._EvalWordToArgv(w)
  File "/home/uke/oil/osh/word_eval.py", line 2300, in _EvalWordToArgv
    self._EvalWordToParts(w, part_vals, 0)  # not double quoted
  File "/home/uke/oil/osh/word_eval.py", line 1983, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  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
ysh_ALT6 don't execute empty command

[ysh_ALT status] Expected 127, got 1
[ysh_ALT stderr] Found 'Traceback (most recent'

stdout:
type -a returned 1
stderr:
. builtin try
. builtin type -a ''
: not found
. builtin echo 'type -a returned 1'
| command sub 3035
Traceback (most recent call last):
  File "/home/uke/oil/bin/oil.py", line 34, in _cpython_main_hook
    sys.exit(oils_for_unix.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 137, in AppBundleMain
    return shell.Main('ysh', 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 2288, in ExecuteAndCatch
    raise  # 'eval break' and 'source return.sh', etc.
  File "/home/uke/oil/osh/cmd_eval.py", line 2137, in _Execute
    errexit_loc = process_sub_st.locs[i]
  File "/home/uke/oil/osh/cmd_eval.py", line 1822, in _Dispatch
    self._LeafTick()
  File "/home/uke/oil/osh/cmd_eval.py", line 1054, in _DoSimple
    allow_assign=True)
  File "/home/uke/oil/osh/word_eval.py", line 2479, in EvalWordSequence2
    allow_assign)
  File "/home/uke/oil/osh/word_eval.py", line 2415, in SimpleEvalWordSequence2
    strs0 = self._EvalWordToArgv(w)
  File "/home/uke/oil/osh/word_eval.py", line 2300, in _EvalWordToArgv
    self._EvalWordToParts(w, part_vals, 0)  # not double quoted
  File "/home/uke/oil/osh/word_eval.py", line 1983, in _EvalWordToParts
    self._EvalWordPart(p, word_part_vals, eval_flags)
  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.
FATAL: couldn't import from app bundle '/home/uke/oil/_tmp/oil-tar-test/oil-0.28.0/_bin/ysh' (1)
Stripping the oil.ovm binary may cause this error.
See https://github.com/oilshell/oil/issues/47
ysh7 Do && || with YSH constructs make sense/

[ysh stdout] Expected '', got '(List) [42]\n(Int) 42\n(Int) 42\n'

stdout:
(List)   [42]
(Int)   42
(Int)   42
stderr:
ysh_ALT7 Do && || with YSH constructs make sense/

[ysh_ALT stdout] Expected '', got '(List) [42]\n(Int) 42\n(Int) 42\n'

stdout:
(List)   [42]
(Int)   42
(Int)   42
stderr:
ysh11 func call inside proc call - error message attribution

[ysh stdout] Expected '', got " eval (ident([1,2,3]))\n ^\n[ -c flag ]:11: 'eval' got unexpected typed args\n eval (ident([1,2,3]))\n ^~~~\n[ -c flag ]:11: errexit PID 3067: command.Simple failed with status 2\n"

stdout:
  eval (ident([1,2,3]))
       ^
[ -c flag ]:11: 'eval' got unexpected typed args
  eval (ident([1,2,3]))
  ^~~~
[ -c flag ]:11: errexit PID 3067: command.Simple failed with status 2
stderr:
ysh_ALT11 func call inside proc call - error message attribution

[ysh_ALT stdout] Expected '', got " eval (ident([1,2,3]))\n ^\n[ -c flag ]:11: 'eval' got unexpected typed args\n eval (ident([1,2,3]))\n ^~~~\n[ -c flag ]:11: errexit PID 3072: command.Simple failed with status 2\n"

stdout:
  eval (ident([1,2,3]))
       ^
[ -c flag ]:11: 'eval' got unexpected typed args
  eval (ident([1,2,3]))
  ^~~~
[ -c flag ]:11: errexit PID 3072: command.Simple failed with status 2
stderr:
ysh16 Another "stealing stdin" issue with spec tests

[ysh stdout] Expected '(Str) "1"\n(Str) "2"\n(Str) "3"\n(Str) "4"\n(Str) "5"\n' Got '(Str) ""\n(Str) ""\n(Str) ""\n(Str) "1"\n(Str) "2"\n(Str) "3"\n(Str) "4"\n(Str) "5"\n'

stdout:
(Str)   ""
(Str)   ""
(Str)   ""
(Str)   "1"
(Str)   "2"
(Str)   "3"
(Str)   "4"
(Str)   "5"
stderr:
ysh_ALT16 Another "stealing stdin" issue with spec tests

[ysh_ALT stdout] Expected '(Str) "1"\n(Str) "2"\n(Str) "3"\n(Str) "4"\n(Str) "5"\n' Got '(Str) ""\n(Str) ""\n(Str) ""\n(Str) "1"\n(Str) "2"\n(Str) "3"\n(Str) "4"\n(Str) "5"\n'

stdout:
(Str)   ""
(Str)   ""
(Str)   ""
(Str)   "1"
(Str)   "2"
(Str)   "3"
(Str)   "4"
(Str)   "5"
stderr:
ysh17 Long boolean flags can't have attached values

[ysh stdout] Expected '', got 'hi\nhi\nhi\nhi\n\n"hi"\n"hi"\n"hi"\n"hi"\n'
[ysh status] Expected 1, got 2

stdout:
hi
hi
hi
hi

"hi"
"hi"
"hi"
"hi"
stderr:
  write --json=Talse hi
  ^~~~~
[ stdin ]:12: 'write' got invalid argument to boolean flag: 'Talse'
  write --json=Talse hi
  ^~~~~
[ stdin ]:12: errexit PID 3096: command.Simple failed with status 2
ysh_ALT17 Long boolean flags can't have attached values

[ysh_ALT stdout] Expected '', got 'hi\nhi\nhi\nhi\n\n"hi"\n"hi"\n"hi"\n"hi"\n'
[ysh_ALT status] Expected 1, got 2

stdout:
hi
hi
hi
hi

"hi"
"hi"
"hi"
"hi"
stderr:
  write --json=Talse hi
  ^~~~~
[ stdin ]:12: 'write' got invalid argument to boolean flag: 'Talse'
  write --json=Talse hi
  ^~~~~
[ stdin ]:12: errexit PID 3099: command.Simple failed with status 2