(List (= scope= flags=0 words=[] bindings=[('CURRENT_DIR', {[DQ [ComSub (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub BASH_SOURCE bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]]}) (Com {[LIT_CHARS pwd]}) )]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS source]} {[DQ [VarSub CURRENT_DIR][LIT_CHARS /../integration_test_setup.sh]]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "integration_test_setup.sh not found!"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS source]} {[DQ [VarSub CURRENT_DIR][LIT_CHARS /bazel_sandboxing_test_utils.sh]]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "bazel_sandboxing_test_utils.sh not found!"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=2 words=[] bindings=[('OUT_DIR', {[DQ [VarSub TEST_TMPDIR][LIT_CHARS /out]]})]) (= scope= flags=2 words=[] bindings=[('OUT', {[DQ [VarSub OUT_DIR][LIT_CHARS /outfile]]})]) (= scope= flags=2 words=[] bindings=[('ERR', {[DQ [VarSub OUT_DIR][LIT_CHARS /errfile]]})]) (= scope= flags=2 words=[] bindings=[('SANDBOX_DIR', {[DQ [VarSub OUT_DIR][LIT_CHARS /sandbox]]})]) (= scope= flags=0 words=[] bindings=[('SANDBOX_DEFAULT_OPTS', {[DQ [LIT_CHARS "-W "][VarSub SANDBOX_DIR]]})]) (FunctionDef set_up [] (List (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[VarSub OUT_DIR]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub SANDBOX_DIR]}) ) ) (FunctionDef test_basic_functionality [] (List (Fork (Com {[VarSub linux_sandbox]} {[VarSub SANDBOX_DEFAULT_OPTS]} {[LIT_CHARS --]} {[LIT_CHARS /bin/echo]} {[LIT_CHARS hi]} {[LIT_CHARS there]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "hi there"]]}) ) ) (FunctionDef test_execvp_error_message_contains_path [] (List (Fork (Com {[VarSub linux_sandbox]} {[VarSub SANDBOX_DEFAULT_OPTS]} {[LIT_CHARS --]} {[LIT_CHARS /does/not/exist]} {[LIT_CHARS --hello]} {[LIT_CHARS world]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('code', {[VarSub ?]})]) ) (Com {[LIT_CHARS expect_log]} {[DQ [\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "execvp(/does/not/exist, 0x[[:alnum:]]*)"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ": No such file or directory"]]}) ) ) (FunctionDef test_default_user_is_nobody [] (List (Fork (Com {[VarSub linux_sandbox]} {[VarSub SANDBOX_DEFAULT_OPTS]} {[LIT_CHARS --]} {[LIT_CHARS /usr/bin/id]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)"]]}) ) ) (FunctionDef test_user_switched_to_root [] (List (Fork (Com {[VarSub linux_sandbox]} {[VarSub SANDBOX_DEFAULT_OPTS]} {[LIT_CHARS -R]} {[LIT_CHARS --]} {[LIT_CHARS /usr/bin/id]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "uid=0(root) gid=0(root)"]]}) ) ) (FunctionDef test_network_namespace [] (List (Fork (Com {[VarSub linux_sandbox]} {[VarSub SANDBOX_DEFAULT_OPTS]} {[LIT_CHARS -N]} {[LIT_CHARS --]} {[LIT_CHARS /bin/ip]} {[LIT_CHARS link]} {[LIT_CHARS ls]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "LOOPBACK,UP"]]}) ) ) (FunctionDef test_ping_loopback [] (List (Fork (Com {[VarSub linux_sandbox]} {[VarSub SANDBOX_DEFAULT_OPTS]} {[LIT_CHARS -N]} {[LIT_CHARS -R]} {[LIT_CHARS --]} {[LIT_CHARS /bin/sh]} {[LIT_CHARS -c]} {[SQ ]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "1 received"]]}) ) ) (FunctionDef test_exit_code [] (List (Fork (Com {[VarSub linux_sandbox]} {[VarSub SANDBOX_DEFAULT_OPTS]} {[LIT_CHARS --]} {[LIT_CHARS /bin/bash]} {[LIT_CHARS -c]} {[DQ [LIT_CHARS "exit 71"]]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('code', {[VarSub ?]})]) ) (Com {[LIT_CHARS assert_equals]} {[LIT_CHARS 71]} {[DQ [VarSub code]]}) ) ) (FunctionDef test_signal_death [] (List (Fork (Com {[VarSub linux_sandbox]} {[VarSub SANDBOX_DEFAULT_OPTS]} {[LIT_CHARS --]} {[LIT_CHARS /bin/bash]} {[LIT_CHARS -c]} {[SQ ]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('code', {[VarSub ?]})]) ) (Com {[LIT_CHARS assert_equals]} {[LIT_CHARS 134]} {[DQ [VarSub code]]}) ) ) (FunctionDef test_signal_catcher [] (List (Fork (Com {[VarSub linux_sandbox]} {[VarSub SANDBOX_DEFAULT_OPTS]} {[LIT_CHARS -T]} {[LIT_CHARS 2]} {[LIT_CHARS -t]} {[LIT_CHARS 3]} {[LIT_CHARS --]} {[LIT_CHARS /bin/bash]} {[LIT_CHARS -c]} {[SQ ]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('code', {[VarSub ?]})]) ) (Com {[LIT_CHARS assert_equals]} {[LIT_CHARS 142]} {[DQ [VarSub code]]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "^later"][LIT_OTHER "$"]]}) ) ) (FunctionDef test_basic_timeout [] (List (Fork (Com {[VarSub linux_sandbox]} {[VarSub SANDBOX_DEFAULT_OPTS]} {[LIT_CHARS -T]} {[LIT_CHARS 3]} {[LIT_CHARS -t]} {[LIT_CHARS 3]} {[LIT_CHARS --]} {[LIT_CHARS /bin/bash]} {[LIT_CHARS -c]} {[DQ [LIT_CHARS "echo before; sleep 1000; echo after"]]}) ) (AndOr OP_AND_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "^before"][LIT_OTHER "$"]]} {[DQ ]}) ) ) (FunctionDef test_timeout_grace [] (List (Fork (Com {[VarSub linux_sandbox]} {[VarSub SANDBOX_DEFAULT_OPTS]} {[LIT_CHARS -T]} {[LIT_CHARS 2]} {[LIT_CHARS -t]} {[LIT_CHARS 3]} {[LIT_CHARS --]} {[LIT_CHARS /bin/bash]} {[LIT_CHARS -c]} {[SQ ]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('code', {[VarSub ?]})]) ) (Com {[LIT_CHARS assert_equals]} {[LIT_CHARS 142]} {[DQ [VarSub code]]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "^beforeafter"][LIT_OTHER "$"]]}) ) ) (FunctionDef test_timeout_kill [] (List (Fork (Com {[VarSub linux_sandbox]} {[VarSub SANDBOX_DEFAULT_OPTS]} {[LIT_CHARS -T]} {[LIT_CHARS 2]} {[LIT_CHARS -t]} {[LIT_CHARS 3]} {[LIT_CHARS --]} {[LIT_CHARS /bin/bash]} {[LIT_CHARS -c]} {[SQ ]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('code', {[VarSub ?]})]) ) (Com {[LIT_CHARS assert_equals]} {[LIT_CHARS 142]} {[DQ [VarSub code]]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "^before"][LIT_OTHER "$"]]}) ) ) (FunctionDef test_debug_logging [] (List (Com {[LIT_CHARS touch]} {[VarSub TEST_TMPDIR] [LIT_CHARS /testfile]}) (Fork (Com {[VarSub linux_sandbox]} {[VarSub SANDBOX_DEFAULT_OPTS]} {[LIT_CHARS -D]} {[LIT_CHARS --]} {[LIT_CHARS /bin/true]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('code', {[VarSub ?]})]) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "child exited normally with exitcode 0"]]}) ) ) (FunctionDef test_redirect_output [] (List (Fork (Com {[VarSub linux_sandbox]} {[VarSub SANDBOX_DEFAULT_OPTS]} {[LIT_CHARS -l]} {[VarSub OUT]} {[LIT_CHARS -L]} {[VarSub ERR]} {[LIT_CHARS --]} {[LIT_CHARS /bin/bash]} {[LIT_CHARS -c]} {[DQ [LIT_CHARS "echo out; echo err >&2"]]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('code', {[VarSub ?]})]) ) (Com {[LIT_CHARS assert_equals]} {[DQ [LIT_CHARS out]]} {[DQ [ComSub (Com {[LIT_CHARS cat]} {[VarSub OUT]})]]}) (Com {[LIT_CHARS assert_equals]} {[DQ [LIT_CHARS err]]} {[DQ [ComSub (Com {[LIT_CHARS cat]} {[VarSub ERR]})]]}) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS check_supported_platform]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS check_sandbox_allowed]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]}) ) (Com {[LIT_CHARS run_suite]} {[DQ [LIT_CHARS linux-sandbox]]}) )