Results for errexit-oil.test.sh

statusoshosh_.pyosh_.cc
pass 28248
FAIL 0420
total282828
caseoshosh_.pyosh_.ccdescription
0pass pass FAIL command sub: errexit is NOT inherited and outer shell keeps going
details
1pass pass FAIL command sub with inherit_errexit only
details
2pass pass pass strict_errexit with command sub stops program
3pass pass pass strict_errexit and assignment builtins (local, export, readonly ...)
4pass FAIL FAIL strict_errexit and command sub in export / readonly
detailsdetails
5pass pass pass {inherit,strict}_errexit: command sub with a single command
6pass pass pass strict_errexit with command sub in weird place
7pass pass FAIL strict_errexit allows pipeline because you can set -o pipefail
details
8pass pass FAIL command sub with command_sub_errexit only
details
9pass pass FAIL command sub with inherit_errexit and command_sub_errexit
details
10pass pass FAIL command sub: last command fails but keeps going and exit code is 0
details
11pass pass FAIL global assignment with command sub: middle command fails
details
12pass pass FAIL global assignment with command sub: last command fails and it aborts
details
13pass pass FAIL local: middle command fails and keeps going
details
14pass pass FAIL local: last command fails and also keeps going
details
15pass pass FAIL local and inherit_errexit / command_sub_errexit
details
16pass pass FAIL global assignment when last status is failure
details
17pass FAIL FAIL strict_errexit prevents errexit from being disabled in function
detailsdetails
18pass pass pass strict_errexit prevents errexit from being disabled in brace group
19pass pass pass strict_errexit prevents errexit from being disabled in subshell
20pass FAIL FAIL strict_errexit and ! && || if while until
detailsdetails
21pass FAIL FAIL if pipeline doesn't fail fatally
detailsdetails
22pass pass FAIL errexit is silent (verbose_errexit for Oil)
details
23pass pass FAIL command sub errexit preserves exit code
details
24pass pass pass strict_errexit without errexit
25pass pass pass What's in strict:all?
26pass pass FAIL command_sub_errexit causes local d=$(date %x) to fail
details
27pass pass FAIL command_sub_errexit and command sub in array
details
60 passed, 0 OK, 0 not implemented, 0 BUG, 24 failed, 0 timeouts, 0 cases skipped

Details on runs that didn't PASS

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

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

stdout:
stderr: 
osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh_.cc1 command sub with inherit_errexit only

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

stdout:
zero
stderr:
osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh_.py4 strict_errexit and command sub in export / readonly

[osh_.py stdout] Expected 'a\nstatus=1\na\nstatus=1\na\nb\nstatus=0\n', got 'status=127\nstatus=127\nstatus=127\n'

stdout:
status=127
status=127
status=127
stderr:
  $SH -o errexit -O strict_errexit -c 'echo a; export x=$(might-fail); echo b'
      ^~
[ stdin ]:2: '-o' not found
  $SH -o errexit -O strict_errexit -c 'echo a; readonly x=$(might-fail); echo b'
      ^~
[ stdin ]:4: '-o' not found
  $SH -o errexit -O strict_errexit -c 'echo a; x=$(true); echo b'
      ^~
[ stdin ]:6: '-o' not found
osh_.cc4 strict_errexit and command sub in export / readonly

[osh_.cc stdout] Expected 'a\nstatus=1\na\nstatus=1\na\nb\nstatus=0\n', got 'status=127\nstatus=127\nstatus=127\n'

stdout:
status=127
status=127
status=127
stderr:
  $SH -o errexit -O strict_errexit -c 'echo a; export x=$(might-fail); echo b'
      ^~
[ stdin ]:2: '-o' not found
  $SH -o errexit -O strict_errexit -c 'echo a; readonly x=$(might-fail); echo b'
      ^~
[ stdin ]:4: '-o' not found
  $SH -o errexit -O strict_errexit -c 'echo a; x=$(true); echo b'
      ^~
[ stdin ]:6: '-o' not found
osh_.cc7 strict_errexit allows pipeline because you can set -o pipefail

[osh_.cc stdout] Expected '1\none\n5\nstatus 5 0\n', got ''
[osh_.cc status] Expected 0, got -6

stdout:
stderr: 
osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh_.cc8 command sub with command_sub_errexit only

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

stdout:
zero
stderr:
osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh_.cc9 command sub with inherit_errexit and command_sub_errexit

[osh_.cc status] Expected 1, got -6

stdout:
zero
stderr:
osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh_.cc10 command sub: last command fails but keeps going and exit code is 0

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

stdout:
stderr: 
osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh_.cc11 global assignment with command sub: middle command fails

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

stdout:
stderr: 
osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh_.cc12 global assignment with command sub: last command fails and it aborts

[osh_.cc status] Expected 1, got -6

stdout:
stderr: 
osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh_.cc13 local: middle command fails and keeps going

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

stdout:
good
stderr:
osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh_.cc14 local: last command fails and also keeps going

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

stdout:
good
stderr:
osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh_.cc15 local and inherit_errexit / command_sub_errexit

[osh_.cc status] Expected 1, got -6

stdout:
good
stderr:
osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh_.cc16 global assignment when last status is failure

[osh_.cc stdout] Expected 'status=0\n', got ''
[osh_.cc status] Expected 0, got -6

stdout:
stderr: 
osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh_.py17 strict_errexit prevents errexit from being disabled in function

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

stdout:
fun
builtin ok
stderr:
  env echo 'external ok' || true
  ^~~
[ stdin ]:6: 'env' not found
  fun || true  # this fails
      ^~
[ stdin ]:7: errexit was disabled for this construct

  fun || true  # this fails
  ^~~
[ stdin ]:7: fatal: Can't run a proc while errexit is disabled. Use 'run' or wrap it in a process with $0 myproc
osh_.cc17 strict_errexit prevents errexit from being disabled in function

[osh_.cc stdout] Expected 'fun\nbuiltin ok\nexternal ok\n', got 'fun\nbuiltin ok\n'

stdout:
fun
builtin ok
stderr:
  env echo 'external ok' || true
  ^~~
[ stdin ]:6: 'env' not found
  fun || true  # this fails
      ^~
[ stdin ]:7: errexit was disabled for this construct

  fun || true  # this fails
  ^~~
[ stdin ]:7: fatal: Can't run a proc while errexit is disabled. Use 'run' or wrap it in a process with $0 myproc
osh_.py20 strict_errexit and ! && || if while until

[osh_.py stdout] Expected 'bang=1\n--\nor=1\n--\nand=1\n--\nif=1\n--\nwhile=1\n--\nuntil=1\n--\n', got 'bang=127\n--\nor=127\n--\nand=127\n--\nif=127\n--\nwhile=127\n--\nuntil=127\n--\n'

stdout:
bang=127
--
or=127
--
and=127
--
if=127
--
while=127
--
until=127
--
stderr:
  $SH -c "$prelude; ! fun; echo 'should not get here'"
      ^~
[ stdin ]:4: '-c' not found
  $SH -c "$prelude; fun || true"
      ^~
[ stdin ]:7: '-c' not found
  $SH -c "$prelude; fun && true"
      ^~
[ stdin ]:10: '-c' not found
  $SH -c "$prelude; if fun; then true; fi"
      ^~
[ stdin ]:13: '-c' not found
  $SH -c "$prelude; while fun; do echo while; exit; done"
      ^~
[ stdin ]:16: '-c' not found
  $SH -c "$prelude; until fun; do echo until; exit; done"
      ^~
[ stdin ]:19: '-c' not found
osh_.cc20 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 'bang=127\n--\nor=127\n--\nand=127\n--\nif=127\n--\nwhile=127\n--\nuntil=127\n--\n'

stdout:
bang=127
--
or=127
--
and=127
--
if=127
--
while=127
--
until=127
--
stderr:
  $SH -c "$prelude; ! fun; echo 'should not get here'"
      ^~
[ stdin ]:4: '-c' not found
  $SH -c "$prelude; fun || true"
      ^~
[ stdin ]:7: '-c' not found
  $SH -c "$prelude; fun && true"
      ^~
[ stdin ]:10: '-c' not found
  $SH -c "$prelude; if fun; then true; fi"
      ^~
[ stdin ]:13: '-c' not found
  $SH -c "$prelude; while fun; do echo while; exit; done"
      ^~
[ stdin ]:16: '-c' not found
  $SH -c "$prelude; until fun; do echo until; exit; done"
      ^~
[ stdin ]:19: '-c' not found
osh_.py21 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 10437)
osh_.cc21 if pipeline doesn't fail fatally

[osh_.cc stdout] Expected 'done\n', got ''
[osh_.cc 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 10449)
osh_.cc22 errexit is silent (verbose_errexit for Oil)

[osh_.cc stderr] Expected u'', got "osh_eval.dbg: cpp/posix.h:139: void posix::dup2(int, int): Assertion `0' failed.\n"
[osh_.cc status] Expected 1, got -6

stdout:
stderr: 
osh_eval.dbg: cpp/posix.h:139: void posix::dup2(int, int): Assertion `0' failed.
osh_.cc23 command sub errexit preserves exit code

[osh_.cc status] Expected 42, got -6

stdout:
before
stderr:
osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh_.cc26 command_sub_errexit causes local d=$(date %x) to fail

[osh_.cc status] Expected 1, got -6

stdout:
stderr: 
osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.
osh_.cc27 command_sub_errexit and command sub in array

[osh_.cc status] Expected 1, got -6

stdout:
stderr: 
osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed.