spec test index / oilshell.org
41 passed, 0 OK, 0 not implemented, 0 BUG, 25 failed, 0 timeouts, 0 cases skipped 2 failed under osh
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 | 2 strict_errexit with command sub stops program [osh stdout] Expected u'', got '\nA\ndone\n' [osh status] Expected 1, got 0 stdout: A donestderr: 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_.py | 2 strict_errexit with command sub stops program [osh_.py stdout] Expected u'', got '\nA\ndone\n' [osh_.py status] Expected 1, got 0 stdout: A donestderr: 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_.cc | 2 strict_errexit with command sub stops program [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 | 3 {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 donestderr: |
osh_.py | 3 {inherit,strict}_errexit: command sub with a single command [osh_.py stdout] Expected u'', got '\nA\ndone\n' [osh_.py status] Expected 1, got 0 stdout: A donestderr: |
osh_.cc | 3 {inherit,strict}_errexit: command sub with a single command [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 | 4 command sub with more_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 | 5 command sub with inherit_errexit and more_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 | 6 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 | 7 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 | 8 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 | 9 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 | 10 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 | 11 local and inherit_errexit / more_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 | 13 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 | 14 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: fatal: can't disable errexit running a function. Maybe wrap the function in a process with the at-splice pattern. |
osh_.cc | 14 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: fatal: can't disable errexit running a function. Maybe wrap the function in a process with the at-splice pattern. |
osh_.py | 17 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 | 17 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 | 18 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 20910) |
osh_.cc | 18 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 20957) |
osh_.cc | 20 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 | 21 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. |