spec test index / oilshell.org
60 passed, 0 OK, 0 not implemented, 0 BUG, 24 failed, 0 timeouts, 0 cases skipped
osh_.cc | 0 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_.cc | 1 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: zerostderr: osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed. |
osh_.py | 4 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=127stderr: $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_.cc | 4 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=127stderr: $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_.cc | 7 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_.cc | 8 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: zerostderr: osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed. |
osh_.cc | 9 command sub with inherit_errexit and command_sub_errexit [osh_.cc status] Expected 1, got -6 stdout: zerostderr: osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed. |
osh_.cc | 10 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_.cc | 11 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_.cc | 12 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_.cc | 13 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: goodstderr: osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed. |
osh_.cc | 14 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: goodstderr: osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed. |
osh_.cc | 15 local and inherit_errexit / command_sub_errexit [osh_.cc status] Expected 1, got -6 stdout: goodstderr: osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed. |
osh_.cc | 16 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_.py | 17 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 okstderr: 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_.cc | 17 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 okstderr: 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_.py | 20 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_.cc | 20 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_.py | 21 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_.cc | 21 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_.cc | 22 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_.cc | 23 command sub errexit preserves exit code [osh_.cc status] Expected 42, got -6 stdout: beforestderr: osh_eval.dbg: cpp/posix.h:106: Tuple2<int, int> posix::pipe(): Assertion `0' failed. |
osh_.cc | 26 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_.cc | 27 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. |