Results for errexit-oil.test.sh

statusoshosh_.pyosh_.cc
pass 1945
FAIL 21716
total212121
caseoshosh_.pyosh_.ccdescription
0pass FAIL FAIL command sub: errexit is NOT inherited and outer shell keeps going
detailsdetails
1pass FAIL FAIL command sub with inherit_errexit only
detailsdetails
2FAIL FAIL pass strict_errexit with command sub stops program
detailsdetails
3FAIL FAIL pass {inherit,strict}_errexit: command sub with a single command
detailsdetails
4pass FAIL FAIL command sub with more_errexit only
detailsdetails
5pass FAIL FAIL command sub with inherit_errexit and more_errexit
detailsdetails
6pass FAIL FAIL command sub: last command fails but keeps going and exit code is 0
detailsdetails
7pass FAIL FAIL global assignment with command sub: middle command fails
detailsdetails
8pass FAIL FAIL global assignment with command sub: last command fails and it aborts
detailsdetails
9pass FAIL FAIL local: middle command fails and keeps going
detailsdetails
10pass FAIL FAIL local: last command fails and also keeps going
detailsdetails
11pass FAIL FAIL local and inherit_errexit / more_errexit
detailsdetails
12pass pass pass global assignment when last status is failure
13pass FAIL pass global assignment when last status is failure
details
14pass FAIL FAIL strict_errexit prevents errexit from being disabled in function
detailsdetails
15pass pass pass strict_errexit prevents errexit from being disabled in brace group
16pass FAIL FAIL strict_errexit prevents errexit from being disabled in subshell
detailsdetails
17pass pass FAIL strict_errexit and ! && || if while until
details
18pass FAIL FAIL if pipeline doesn't fail fatally
detailsdetails
19pass FAIL FAIL if pipeline DOES fail fatally with strict_errexit
detailsdetails
20pass pass FAIL errexit is silent (verbose_errexit for Oil)
details
28 passed, 0 OK, 0 not implemented, 0 BUG, 35 failed, 0 timeouts, 0 cases skipped
2 failed under osh

Details on runs that didn't PASS

osh_.py0 command sub: errexit is NOT inherited and outer shell keeps going

[osh_.py stdout] Expected 'one two\nparent status=0\n', got ''
[osh_.py status] Expected 0, got 1
[osh_.py stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 417, in <module>
    status = main(sys.argv)
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 309, in main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/andy/git/oilshell/oil/core/main_loop.py", line 168, in Batch
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags=cmd_flags)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1461, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 547, in _Dispatch
    cmd_val = self.word_ev.EvalWordSequence2(words, allow_assign=True)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1868, in EvalWordSequence2
    self._EvalWordToParts(w, False, part_vals)  # not double quoted
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1455, in _EvalWordToParts
    self._EvalWordPart(p, part_vals, quoted=quoted, is_subst=is_subst)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1332, in _EvalWordPart
    sv = self._EvalCommandSub(part.child, quoted) # type: part_value_t
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1959, in _EvalCommandSub
    stdout = self.shell_ex.RunCommandSub(node)
AttributeError: 'NoneType' object has no attribute 'RunCommandSub'
osh_.cc0 command sub: errexit is NOT inherited and outer shell keeps going

[osh_.cc stdout] Expected 'one two\nparent status=0\n', got '\nparent status=0\n'

stdout:
parent status=0
stderr:
osh_.py1 command sub with inherit_errexit only

[osh_.py stdout] Expected 'zero\none\nparent status=0\n', got 'zero\n'
[osh_.py status] Expected 0, got 1
[osh_.py stderr] Found 'Traceback (most recent'

stdout:
zero
stderr:
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 417, in <module>
    status = main(sys.argv)
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 309, in main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/andy/git/oilshell/oil/core/main_loop.py", line 168, in Batch
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags=cmd_flags)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1461, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 547, in _Dispatch
    cmd_val = self.word_ev.EvalWordSequence2(words, allow_assign=True)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1868, in EvalWordSequence2
    self._EvalWordToParts(w, False, part_vals)  # not double quoted
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1455, in _EvalWordToParts
    self._EvalWordPart(p, part_vals, quoted=quoted, is_subst=is_subst)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1332, in _EvalWordPart
    sv = self._EvalCommandSub(part.child, quoted) # type: part_value_t
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1959, in _EvalCommandSub
    stdout = self.shell_ex.RunCommandSub(node)
AttributeError: 'NoneType' object has no attribute 'RunCommandSub'
osh_.cc1 command sub with inherit_errexit only

[osh_.cc stdout] Expected 'zero\none\nparent status=0\n', got 'zero\n\nparent status=0\n'

stdout:
zero

parent status=0
stderr:
osh2 strict_errexit with command sub stops program

[osh stdout] Expected u'', got '\nA\ndone\n'
[osh status] Expected 1, got 0

stdout:
A
done
stderr:
  if echo $( echo 1; false; echo 2); then
  ^~
[ stdin ]:4: fatal: errexit is disabled here, but strict_errexit disallows it with a compound command (command.CommandList)
osh_.py2 strict_errexit with command sub stops program

[osh_.py stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 417, in <module>
    status = main(sys.argv)
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 309, in main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/andy/git/oilshell/oil/core/main_loop.py", line 168, in Batch
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags=cmd_flags)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1461, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1218, in _Dispatch
    status = self._ExecuteList(if_arm.cond)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1364, in _ExecuteList
    status = self._Execute(child)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 604, in _Dispatch
    status = self._Execute(node.child)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 547, in _Dispatch
    cmd_val = self.word_ev.EvalWordSequence2(words, allow_assign=True)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1868, in EvalWordSequence2
    self._EvalWordToParts(w, False, part_vals)  # not double quoted
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1455, in _EvalWordToParts
    self._EvalWordPart(p, part_vals, quoted=quoted, is_subst=is_subst)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1332, in _EvalWordPart
    sv = self._EvalCommandSub(part.child, quoted) # type: part_value_t
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1959, in _EvalCommandSub
    stdout = self.shell_ex.RunCommandSub(node)
AttributeError: 'NoneType' object has no attribute 'RunCommandSub'
osh3 {inherit,strict}_errexit: command sub with a single command

[osh stdout] Expected u'', got '\nA\ndone\n'
[osh status] Expected 1, got 0

stdout:
A
done
stderr:
osh_.py3 {inherit,strict}_errexit: command sub with a single command

[osh_.py stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 417, in <module>
    status = main(sys.argv)
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 309, in main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/andy/git/oilshell/oil/core/main_loop.py", line 168, in Batch
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags=cmd_flags)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1461, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1218, in _Dispatch
    status = self._ExecuteList(if_arm.cond)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1364, in _ExecuteList
    status = self._Execute(child)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 604, in _Dispatch
    status = self._Execute(node.child)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 547, in _Dispatch
    cmd_val = self.word_ev.EvalWordSequence2(words, allow_assign=True)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1868, in EvalWordSequence2
    self._EvalWordToParts(w, False, part_vals)  # not double quoted
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1455, in _EvalWordToParts
    self._EvalWordPart(p, part_vals, quoted=quoted, is_subst=is_subst)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1332, in _EvalWordPart
    sv = self._EvalCommandSub(part.child, quoted) # type: part_value_t
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1959, in _EvalCommandSub
    stdout = self.shell_ex.RunCommandSub(node)
AttributeError: 'NoneType' object has no attribute 'RunCommandSub'
osh_.py4 command sub with more_errexit only

[osh_.py stdout] Expected 'zero\none two\nparent status=0\n', got 'zero\n'
[osh_.py status] Expected 0, got 1
[osh_.py stderr] Found 'Traceback (most recent'

stdout:
zero
stderr:
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 417, in <module>
    status = main(sys.argv)
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 309, in main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/andy/git/oilshell/oil/core/main_loop.py", line 168, in Batch
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags=cmd_flags)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1461, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 547, in _Dispatch
    cmd_val = self.word_ev.EvalWordSequence2(words, allow_assign=True)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1868, in EvalWordSequence2
    self._EvalWordToParts(w, False, part_vals)  # not double quoted
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1455, in _EvalWordToParts
    self._EvalWordPart(p, part_vals, quoted=quoted, is_subst=is_subst)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1332, in _EvalWordPart
    sv = self._EvalCommandSub(part.child, quoted) # type: part_value_t
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1959, in _EvalCommandSub
    stdout = self.shell_ex.RunCommandSub(node)
AttributeError: 'NoneType' object has no attribute 'RunCommandSub'
osh_.cc4 command sub with more_errexit only

[osh_.cc stdout] Expected 'zero\none two\nparent status=0\n', got 'zero\n\nparent status=0\n'

stdout:
zero

parent status=0
stderr:
osh_.py5 command sub with inherit_errexit and more_errexit

[osh_.py stderr] Found 'Traceback (most recent'

stdout:
zero
stderr:
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 417, in <module>
    status = main(sys.argv)
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 309, in main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/andy/git/oilshell/oil/core/main_loop.py", line 168, in Batch
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags=cmd_flags)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1461, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 547, in _Dispatch
    cmd_val = self.word_ev.EvalWordSequence2(words, allow_assign=True)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1868, in EvalWordSequence2
    self._EvalWordToParts(w, False, part_vals)  # not double quoted
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1455, in _EvalWordToParts
    self._EvalWordPart(p, part_vals, quoted=quoted, is_subst=is_subst)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1332, in _EvalWordPart
    sv = self._EvalCommandSub(part.child, quoted) # type: part_value_t
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1959, in _EvalCommandSub
    stdout = self.shell_ex.RunCommandSub(node)
AttributeError: 'NoneType' object has no attribute 'RunCommandSub'
osh_.cc5 command sub with inherit_errexit and more_errexit

[osh_.cc stdout] Expected 'zero\n', got 'zero\n\nparent status=0\n'
[osh_.cc status] Expected 1, got 0

stdout:
zero

parent status=0
stderr:
osh_.py6 command sub: last command fails but keeps going and exit code is 0

[osh_.py stdout] Expected 'one\nstatus=0\n', got ''
[osh_.py status] Expected 0, got 1
[osh_.py stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 417, in <module>
    status = main(sys.argv)
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 309, in main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/andy/git/oilshell/oil/core/main_loop.py", line 168, in Batch
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags=cmd_flags)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1461, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 547, in _Dispatch
    cmd_val = self.word_ev.EvalWordSequence2(words, allow_assign=True)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1868, in EvalWordSequence2
    self._EvalWordToParts(w, False, part_vals)  # not double quoted
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1455, in _EvalWordToParts
    self._EvalWordPart(p, part_vals, quoted=quoted, is_subst=is_subst)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1332, in _EvalWordPart
    sv = self._EvalCommandSub(part.child, quoted) # type: part_value_t
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1959, in _EvalCommandSub
    stdout = self.shell_ex.RunCommandSub(node)
AttributeError: 'NoneType' object has no attribute 'RunCommandSub'
osh_.cc6 command sub: last command fails but keeps going and exit code is 0

[osh_.cc stdout] Expected 'one\nstatus=0\n', got '\nstatus=0\n'

stdout:
status=0
stderr:
osh_.py7 global assignment with command sub: middle command fails

[osh_.py stdout] Expected 'one\ntwo\n', got ''
[osh_.py status] Expected 0, got 1
[osh_.py stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 417, in <module>
    status = main(sys.argv)
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 309, in main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/andy/git/oilshell/oil/core/main_loop.py", line 168, in Batch
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags=cmd_flags)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1461, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 837, in _Dispatch
    val = self.word_ev.EvalRhsWord(pair.rhs)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1602, in EvalRhsWord
    return self.EvalWordToString(w)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1498, in EvalWordToString
    self._EvalWordPart(p, part_vals, quoted=False)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1332, in _EvalWordPart
    sv = self._EvalCommandSub(part.child, quoted) # type: part_value_t
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1959, in _EvalCommandSub
    stdout = self.shell_ex.RunCommandSub(node)
AttributeError: 'NoneType' object has no attribute 'RunCommandSub'
osh_.cc7 global assignment with command sub: middle command fails

[osh_.cc stdout] Expected 'one\ntwo\n', got ''
[osh_.cc status] Expected 0, got -11

stdout:
stderr: 
osh_.py8 global assignment with command sub: last command fails and it aborts

[osh_.py stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 417, in <module>
    status = main(sys.argv)
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 309, in main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/andy/git/oilshell/oil/core/main_loop.py", line 168, in Batch
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags=cmd_flags)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1461, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 837, in _Dispatch
    val = self.word_ev.EvalRhsWord(pair.rhs)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1602, in EvalRhsWord
    return self.EvalWordToString(w)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1498, in EvalWordToString
    self._EvalWordPart(p, part_vals, quoted=False)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1332, in _EvalWordPart
    sv = self._EvalCommandSub(part.child, quoted) # type: part_value_t
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1959, in _EvalCommandSub
    stdout = self.shell_ex.RunCommandSub(node)
AttributeError: 'NoneType' object has no attribute 'RunCommandSub'
osh_.cc8 global assignment with command sub: last command fails and it aborts

[osh_.cc stdout] Expected u'', got 'status=0\n'
[osh_.cc status] Expected 1, got 0

stdout:
status=0
stderr:
osh_.py9 local: middle command fails and keeps going

[osh_.py stdout] Expected 'good\nstatus=0\none two\n', got 'good\n'
[osh_.py status] Expected 0, got 1
[osh_.py stderr] Found 'Traceback (most recent'

stdout:
good
stderr:
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 417, in <module>
    status = main(sys.argv)
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 309, in main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/andy/git/oilshell/oil/core/main_loop.py", line 168, in Batch
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags=cmd_flags)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1461, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 580, in _Dispatch
    status = self._RunSimpleCommand(cmd_val, node.do_fork)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 488, in _RunSimpleCommand
    return self.shell_ex.RunSimpleCommand(cmd_val, do_fork)
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 383, in RunSimpleCommand
    status = self.cmd_ev.RunProc(func_node, argv[1:])
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1539, in RunProc
    status = self._Execute(func_node.body)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 968, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1364, in _ExecuteList
    status = self._Execute(child)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 547, in _Dispatch
    cmd_val = self.word_ev.EvalWordSequence2(words, allow_assign=True)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1888, in EvalWordSequence2
    return self._EvalAssignBuiltin(builtin_id, val0.s, words)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1739, in _EvalAssignBuiltin
    right = self.EvalRhsWord(rhs_word)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1602, in EvalRhsWord
    return self.EvalWordToString(w)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1498, in EvalWordToString
    self._EvalWordPart(p, part_vals, quoted=False)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1332, in _EvalWordPart
    sv = self._EvalCommandSub(part.child, quoted) # type: part_value_t
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1959, in _EvalCommandSub
    stdout = self.shell_ex.RunCommandSub(node)
AttributeError: 'NoneType' object has no attribute 'RunCommandSub'
osh_.cc9 local: middle command fails and keeps going

[osh_.cc stdout] Expected 'good\nstatus=0\none two\n', got 'good\nstatus=0\n\n'

stdout:
good
status=0

stderr:
osh_.py10 local: last command fails and also keeps going

[osh_.py stdout] Expected 'good\nstatus=0\none\n', got 'good\n'
[osh_.py status] Expected 0, got 1
[osh_.py stderr] Found 'Traceback (most recent'

stdout:
good
stderr:
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 417, in <module>
    status = main(sys.argv)
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 309, in main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/andy/git/oilshell/oil/core/main_loop.py", line 168, in Batch
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags=cmd_flags)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1461, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 580, in _Dispatch
    status = self._RunSimpleCommand(cmd_val, node.do_fork)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 488, in _RunSimpleCommand
    return self.shell_ex.RunSimpleCommand(cmd_val, do_fork)
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 383, in RunSimpleCommand
    status = self.cmd_ev.RunProc(func_node, argv[1:])
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1539, in RunProc
    status = self._Execute(func_node.body)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 968, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1364, in _ExecuteList
    status = self._Execute(child)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 547, in _Dispatch
    cmd_val = self.word_ev.EvalWordSequence2(words, allow_assign=True)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1888, in EvalWordSequence2
    return self._EvalAssignBuiltin(builtin_id, val0.s, words)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1739, in _EvalAssignBuiltin
    right = self.EvalRhsWord(rhs_word)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1602, in EvalRhsWord
    return self.EvalWordToString(w)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1498, in EvalWordToString
    self._EvalWordPart(p, part_vals, quoted=False)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1332, in _EvalWordPart
    sv = self._EvalCommandSub(part.child, quoted) # type: part_value_t
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1959, in _EvalCommandSub
    stdout = self.shell_ex.RunCommandSub(node)
AttributeError: 'NoneType' object has no attribute 'RunCommandSub'
osh_.cc10 local: last command fails and also keeps going

[osh_.cc stdout] Expected 'good\nstatus=0\none\n', got 'good\nstatus=0\n\n'

stdout:
good
status=0

stderr:
osh_.py11 local and inherit_errexit / more_errexit

[osh_.py stderr] Found 'Traceback (most recent'

stdout:
good
stderr:
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 417, in <module>
    status = main(sys.argv)
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 309, in main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/andy/git/oilshell/oil/core/main_loop.py", line 168, in Batch
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags=cmd_flags)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1461, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 580, in _Dispatch
    status = self._RunSimpleCommand(cmd_val, node.do_fork)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 488, in _RunSimpleCommand
    return self.shell_ex.RunSimpleCommand(cmd_val, do_fork)
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 383, in RunSimpleCommand
    status = self.cmd_ev.RunProc(func_node, argv[1:])
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1539, in RunProc
    status = self._Execute(func_node.body)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 968, in _Dispatch
    status = self._ExecuteList(node.children)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1364, in _ExecuteList
    status = self._Execute(child)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 547, in _Dispatch
    cmd_val = self.word_ev.EvalWordSequence2(words, allow_assign=True)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1888, in EvalWordSequence2
    return self._EvalAssignBuiltin(builtin_id, val0.s, words)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1739, in _EvalAssignBuiltin
    right = self.EvalRhsWord(rhs_word)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1602, in EvalRhsWord
    return self.EvalWordToString(w)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1498, in EvalWordToString
    self._EvalWordPart(p, part_vals, quoted=False)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1332, in _EvalWordPart
    sv = self._EvalCommandSub(part.child, quoted) # type: part_value_t
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1959, in _EvalCommandSub
    stdout = self.shell_ex.RunCommandSub(node)
AttributeError: 'NoneType' object has no attribute 'RunCommandSub'
osh_.cc11 local and inherit_errexit / more_errexit

[osh_.cc stdout] Expected 'good\n', got 'good\nstatus=0\n\n'
[osh_.cc status] Expected 1, got 0

stdout:
good
status=0

stderr:
osh_.py13 global assignment when last status is failure

[osh_.py stdout] Expected 'status=0\n', got ''
[osh_.py status] Expected 0, got 1
[osh_.py stderr] Found 'Traceback (most recent'

stdout:
stderr: 
Traceback (most recent call last):
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 417, in <module>
    status = main(sys.argv)
  File "/home/andy/git/oilshell/oil/bin/osh_eval.py", line 309, in main
    cmd_flags=cmd_eval.IsMainProgram)
  File "/home/andy/git/oilshell/oil/core/main_loop.py", line 168, in Batch
    is_return, is_fatal = cmd_ev.ExecuteAndCatch(node, cmd_flags=cmd_flags)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1461, in ExecuteAndCatch
    status = self._Execute(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 981, in _Dispatch
    status = self._Execute(left)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 1341, in _Execute
    status, check_errexit = self._Dispatch(node)
  File "/home/andy/git/oilshell/oil/osh/cmd_eval.py", line 837, in _Dispatch
    val = self.word_ev.EvalRhsWord(pair.rhs)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1602, in EvalRhsWord
    return self.EvalWordToString(w)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1498, in EvalWordToString
    self._EvalWordPart(p, part_vals, quoted=False)
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1332, in _EvalWordPart
    sv = self._EvalCommandSub(part.child, quoted) # type: part_value_t
  File "/home/andy/git/oilshell/oil/osh/word_eval.py", line 1959, in _EvalCommandSub
    stdout = self.shell_ex.RunCommandSub(node)
AttributeError: 'NoneType' object has no attribute 'RunCommandSub'
osh_.py14 strict_errexit prevents errexit from being disabled in function

[osh_.py stdout] Expected 'fun\nbuiltin ok\nexternal ok\n', got 'external ok\nfun\nbuiltin ok\n'

stdout:
external ok
fun
builtin ok
stderr:
  fun || true  # this fails
  ^~~
[ stdin ]:7: fatal: can't disable errexit running a function. Maybe wrap the function in a process with the at-splice pattern.
osh_.cc14 strict_errexit prevents errexit from being disabled in function

[osh_.cc stdout] Expected 'fun\nbuiltin ok\nexternal ok\n', got "fun\nbuiltin ok\n(cmd_value.Argv argv:[env echo 'external ok'] arg_spids:[48 50 52])\n"

stdout:
fun
builtin ok
(cmd_value.Argv argv:[env echo 'external ok'] arg_spids:[48 50 52])
stderr:
Unhandled SimpleCommand
  fun || true  # this fails
  ^~~
[ stdin ]:7: fatal: can't disable errexit running a function. Maybe wrap the function in a process with the at-splice pattern.
osh_.py16 strict_errexit prevents errexit from being disabled in subshell

[osh_.py stdout] Expected 'foo\nbar\n', got ''

stdout:
stderr: 
  ( echo foo; false; echo bar; ) || echo "failed"
                                 ^~
[ stdin ]:5: fatal: errexit is disabled here, but strict_errexit disallows it with a compound command (command.Subshell)
osh_.cc16 strict_errexit prevents errexit from being disabled in subshell

[osh_.cc stdout] Expected 'foo\nbar\n', got ''

stdout:
stderr: 
  shopt -s strict_errexit || true
  ^~~~~
[ stdin ]:4: fatal: errexit is disabled here, but strict_errexit disallows it with a compound command (command.Subshell)
osh_.cc17 strict_errexit and ! && || if while until

[osh_.cc stdout] Expected 'bang=1\n--\nor=1\n--\nand=1\n--\nif=1\n--\nwhile=1\n--\nuntil=1\n--\n', got "(cmd_value.Argv\n argv: [\n -c\n'set -o errexit\\nshopt -s strict_errexit || true\\nfun() { echo fun; }; ! fun; echo \\'should not get here\\''\n ]\n arg_spids: [9 11]\n)\nbang=0\n--\n(cmd_value.Argv\n argv: [-c 'set -o errexit\\nshopt -s strict_errexit || true\\nfun() { echo fun; }; fun || true']\n arg_spids: [27 29]\n)\nor=0\n--\n(cmd_value.Argv\n argv: [-c 'set -o errexit\\nshopt -s strict_errexit || true\\nfun() { echo fun; }; fun && true']\n arg_spids: [45 47]\n)\nand=0\n--\n(cmd_value.Argv\n argv: [\n -c\n'set -o errexit\\nshopt -s strict_errexit || true\\nfun() { echo fun; }; if fun; then true; fi'\n ]\n arg_spids: [63 65]\n)\nif=0\n--\n(cmd_value.Argv\n argv: [\n -c\n'set -o errexit\\nshopt -s strict_errexit || true\\nfun() { echo fun; }; while fun; do echo while; exit; done'\n ]\n arg_spids: [81 83]\n)\nwhile=0\n--\n(cmd_value.Argv\n argv: [\n -c\n'set -o errexit\\nshopt -s strict_errexit || true\\nfun() { echo fun; }; until fun; do echo until; exit; done'\n ]\n arg_spids: [99 101]\n)\nuntil=0\n--\n"

stdout:
(cmd_value.Argv
  argv: [
    -c
'set -o errexit\nshopt -s strict_errexit || true\nfun() { echo fun; }; ! fun; echo \'should not get here\''
  ]
  arg_spids: [9 11]
)
bang=0
--
(cmd_value.Argv
  argv: [-c 'set -o errexit\nshopt -s strict_errexit || true\nfun() { echo fun; }; fun || true']
  arg_spids: [27 29]
)
or=0
--
(cmd_value.Argv
  argv: [-c 'set -o errexit\nshopt -s strict_errexit || true\nfun() { echo fun; }; fun && true']
  arg_spids: [45 47]
)
and=0
--
(cmd_value.Argv
  argv: [
    -c
'set -o errexit\nshopt -s strict_errexit || true\nfun() { echo fun; }; if fun; then true; fi'
  ]
  arg_spids: [63 65]
)
if=0
--
(cmd_value.Argv
  argv: [
    -c
'set -o errexit\nshopt -s strict_errexit || true\nfun() { echo fun; }; while fun; do echo while; exit; done'
  ]
  arg_spids: [81 83]
)
while=0
--
(cmd_value.Argv
  argv: [
    -c
'set -o errexit\nshopt -s strict_errexit || true\nfun() { echo fun; }; until fun; do echo until; exit; done'
  ]
  arg_spids: [99 101]
)
until=0
--
stderr:
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
Unhandled SimpleCommand
osh_.py18 if pipeline doesn't fail fatally

[osh_.py stdout] Expected 'done\n', got ''
[osh_.py status] Expected 0, got 1

stdout:
stderr: 
rmdir: failed to remove '/_tmp': No such file or directory
rm: cannot remove '/alpine': Is a directory
rm: cannot remove '/bin': Is a directory
rm: cannot remove '/boot': Is a directory
rm: cannot remove '/cdrom': Is a directory
rm: cannot remove '/dev': Is a directory
rm: cannot remove '/etc': Is a directory
rm: cannot remove '/home': Is a directory
rm: cannot remove '/initrd.img': Permission denied
rm: cannot remove '/initrd.img.old': Permission denied
rm: cannot remove '/lib': Is a directory
rm: cannot remove '/lib32': Is a directory
rm: cannot remove '/lib64': Is a directory
rm: cannot remove '/libx32': Is a directory
rm: cannot remove '/lost+found': Is a directory
rm: cannot remove '/media': Is a directory
rm: cannot remove '/mnt': Is a directory
rm: cannot remove '/nix': Is a directory
rm: cannot remove '/opt': Is a directory
rm: cannot remove '/proc': Is a directory
rm: cannot remove '/root': Is a directory
rm: cannot remove '/run': Is a directory
rm: cannot remove '/sbin': Is a directory
rm: cannot remove '/snap': Is a directory
rm: cannot remove '/srv': Is a directory
rm: cannot remove '/sys': Is a directory
rm: cannot remove '/tmp': Is a directory
rm: cannot remove '/usr': Is a directory
rm: cannot remove '/var': Is a directory
rm: cannot remove '/vmlinuz': Permission denied
rm: cannot remove '/vmlinuz.old': Permission denied
  rm -f $TMP/*
  ^~
[ stdin ]:11: fatal: Exiting with status 1 (command in PID 26803)
osh_.cc18 if pipeline doesn't fail fatally

[osh_.cc stdout] Expected 'done\n', got ''
[osh_.cc status] Expected 0, got -11

stdout:
stderr: 
Unhandled SimpleCommand
Unhandled SimpleCommand
osh_.py19 if pipeline DOES fail fatally with strict_errexit

[osh_.py stdout] Expected '! false ok\n', got ''

stdout:
stderr: 
rmdir: failed to remove '/_tmp': No such file or directory
rm: cannot remove '/alpine': Is a directory
rm: cannot remove '/bin': Is a directory
rm: cannot remove '/boot': Is a directory
rm: cannot remove '/cdrom': Is a directory
rm: cannot remove '/dev': Is a directory
rm: cannot remove '/etc': Is a directory
rm: cannot remove '/home': Is a directory
rm: cannot remove '/initrd.img': Permission denied
rm: cannot remove '/initrd.img.old': Permission denied
rm: cannot remove '/lib': Is a directory
rm: cannot remove '/lib32': Is a directory
rm: cannot remove '/lib64': Is a directory
rm: cannot remove '/libx32': Is a directory
rm: cannot remove '/lost+found': Is a directory
rm: cannot remove '/media': Is a directory
rm: cannot remove '/mnt': Is a directory
rm: cannot remove '/nix': Is a directory
rm: cannot remove '/opt': Is a directory
rm: cannot remove '/proc': Is a directory
rm: cannot remove '/root': Is a directory
rm: cannot remove '/run': Is a directory
rm: cannot remove '/sbin': Is a directory
rm: cannot remove '/snap': Is a directory
rm: cannot remove '/srv': Is a directory
rm: cannot remove '/sys': Is a directory
rm: cannot remove '/tmp': Is a directory
rm: cannot remove '/usr': Is a directory
rm: cannot remove '/var': Is a directory
rm: cannot remove '/vmlinuz': Permission denied
rm: cannot remove '/vmlinuz.old': Permission denied
  rm -f $TMP/*
  ^~
[ stdin ]:14: fatal: Exiting with status 1 (command in PID 26939)
osh_.cc19 if pipeline DOES fail fatally with strict_errexit

[osh_.cc stdout] Expected '! false ok\n', got ''

stdout:
stderr: 
  shopt -s strict_errexit || true
  ^~~~~
[ stdin ]:3: fatal: errexit is disabled here, but strict_errexit disallows it with a compound command (command.If)
osh_.cc20 errexit is silent (verbose_errexit for Oil)

[osh_.cc stderr] Expected u'', got 'set 2\n'

stdout:
stderr: 
set 2