(List (Com {[LIT_CHARS set]} {[LIT_CHARS -eu]}) (= 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]}) ) ) (FunctionDef set_up_jobcount [] (List (= scope= flags=0 words=[] bindings=[('tmp', {[ComSub (Com {[LIT_CHARS mktemp]} {[LIT_CHARS -d]} {[VarSub TEST_TMPDIR] [LIT_CHARS /testjobs.XXXXXXXX]})]})]) (Com {[LIT_CHARS touch]} {[VarSub tmp] [LIT_CHARS /counter]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS dir]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/bash\n"][LIT_CHARS "# hard link\n"][LIT_CHARS "z="][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "(mktemp -u "][VarSub tmp][LIT_CHARS "/tmp.XXXXXXXX)\n"][LIT_CHARS "ln "][VarSub tmp][LIT_CHARS "/counter "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{z}\n"][LIT_CHARS "\n"][LIT_CHARS "# Make sure other test runs have started too.\n"][LIT_CHARS "sleep 1\n"][LIT_CHARS "nlink="][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "(ls -l "][VarSub tmp][LIT_CHARS "/counter | awk '{print "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "2}')\n"][LIT_CHARS "\n"][LIT_CHARS "# 4 links = 3 jobs + "][VarSub tmp][LIT_CHARS "/counter\n"][LIT_CHARS "if [[ "][RIGHT_D_QUOTE "\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS nlink][RIGHT_D_QUOTE "\""][LIT_CHARS " -gt 4 ]] ; then\n"][LIT_CHARS " echo found "][RIGHT_D_QUOTE "\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS nlink][RIGHT_D_QUOTE "\""][LIT_CHARS " hard links to file, want 4 max.\n"][LIT_CHARS " exit 1\n"][LIT_CHARS "fi\n"][LIT_CHARS "\n"][LIT_CHARS "# Ensure that we don't remove before other runs have inspected the file.\n"][LIT_CHARS "sleep 1\n"][LIT_CHARS "rm "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{z}\n"][LIT_CHARS "\n"]]} 0), (FilenameRedirectNode filename={[LIT_CHARS dir/test.sh]} "> 1), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS dir/test.sh]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "sh_test(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS test][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = [ "][RIGHT_D_QUOTE "\""][LIT_CHARS test.sh][RIGHT_D_QUOTE "\""][LIT_CHARS " ],\n"][LIT_CHARS " size = "][RIGHT_D_QUOTE "\""][LIT_CHARS small][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS ")\n"]]} 0), (FilenameRedirectNode filename={[LIT_CHARS dir/BUILD]} "> 1), > ) ) ) (FunctionDef test_3_cpus [] (List (Com {[LIT_CHARS set_up_jobcount]}) (Com {[LIT_CHARS bazel]} {[LIT_CHARS test]} {[LIT_CHARS --spawn_strategy] [LIT_OTHER "="] [LIT_CHARS standalone]} {[LIT_CHARS --test_output] [LIT_OTHER "="] [LIT_CHARS errors]} {[LIT_CHARS --local_resources] [LIT_OTHER "="] [LIT_CHARS 10000] [LIT_COMMA ","] [LIT_CHARS 3] [LIT_COMMA ","] [LIT_CHARS 100]} {[LIT_CHARS --runs_per_test] [LIT_OTHER "="] [LIT_CHARS 10]} {[LIT_CHARS //dir] [LIT_OTHER ":"] [LIT_CHARS test]}) ) ) (FunctionDef test_3_local_jobs [] (List (Com {[LIT_CHARS set_up_jobcount]}) (Com {[LIT_CHARS bazel]} {[LIT_CHARS test]} {[LIT_CHARS --spawn_strategy] [LIT_OTHER "="] [LIT_CHARS standalone]} {[LIT_CHARS --test_output] [LIT_OTHER "="] [LIT_CHARS errors]} {[LIT_CHARS --local_test_jobs] [LIT_OTHER "="] [LIT_CHARS 3]} {[LIT_CHARS --local_resources] [LIT_OTHER "="] [LIT_CHARS 10000] [LIT_COMMA ","] [LIT_CHARS 10] [LIT_COMMA ","] [LIT_CHARS 100]} {[LIT_CHARS --runs_per_test] [LIT_OTHER "="] [LIT_CHARS 10]} {[LIT_CHARS //dir] [LIT_OTHER ":"] [LIT_CHARS test]}) ) ) (FunctionDef test_tmpdir [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS foo]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS foo/bar_test.sh]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "#!/bin/bash\n"] [LIT_CHARS "echo TEST_TMPDIR=$TEST_TMPDIR\n"]} 0), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS foo/bar_test.sh]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS foo/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "sh_test(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS bar_test][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS bar_test.sh][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS test]} {[LIT_CHARS --test_output] [LIT_OTHER "="] [LIT_CHARS all]} {[LIT_CHARS //foo] [LIT_OTHER ":"] [LIT_CHARS bar_test]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Running sh_test failed"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "TEST_TMPDIR=/.*"]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS test]} {[LIT_CHARS --nocache_test_results]} {[LIT_CHARS --test_output] [LIT_OTHER "="] [LIT_CHARS all]} {[LIT_CHARS --test_tmpdir] [LIT_OTHER "="] [VarSub TEST_TMPDIR]} {[LIT_CHARS //foo] [LIT_OTHER ":"] [LIT_CHARS bar_test]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Running sh_test failed"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "TEST_TMPDIR="][VarSub TEST_TMPDIR]]}) (If (Com {[LIT_CHARS bazel]} {[LIT_CHARS test]} {[LIT_CHARS --nocache_test_results]} {[LIT_CHARS --test_output] [LIT_OTHER "="] [LIT_CHARS all]} {[LIT_CHARS --test_tmpdir] [LIT_OTHER "="] [LIT_CHARS /foo/bar]} {[LIT_CHARS //foo] [LIT_OTHER ":"] [LIT_CHARS bar_test]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "TEST_TMPDIR=/foo/bar"]]}) (ElseTrue) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Could not create TEST_TMPDIR"]]}) ) ) ) (FunctionDef test_env_vars [] (List (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "workspace(name = "][RIGHT_D_QUOTE "\""][LIT_CHARS bar][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS foo]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS foo/testenv.sh]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "#!/bin/bash\n"] [LIT_CHARS "echo \"pwd: $PWD\"\n"] [LIT_CHARS "echo \"src: $TEST_SRCDIR\"\n"] [LIT_CHARS "echo \"ws: $TEST_WORKSPACE\"\n"]} 0), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS foo/testenv.sh]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS foo/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "sh_test(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS foo][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS testenv.sh][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS test]} {[LIT_CHARS --test_output] [LIT_OTHER "="] [LIT_CHARS all]} {[LIT_CHARS //foo]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Test failed"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "pwd: .*/foo.runfiles/bar"][LIT_OTHER "$"]]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "src: .*/foo.runfiles"][LIT_OTHER "$"]]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "ws: bar"][LIT_OTHER "$"]]}) ) ) (FunctionDef test_run_under_label_with_options [] (List (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS testing]} {[LIT_CHARS run]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "mkdir testing run failed"]]}) ) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "sh_binary(\n"][LIT_CHARS " name='under', srcs=['under.sh'],\n"][LIT_CHARS " visibility=["][RIGHT_D_QUOTE "\""][LIT_CHARS "//visibility:public"][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), (FilenameRedirectNode filename={[LIT_CHARS run/BUILD]} "> 1), > ) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/sh\n"][LIT_CHARS "echo running under //run:under "][RIGHT_D_QUOTE "\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "*"][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"]]} 0), (FilenameRedirectNode filename={[LIT_CHARS run/under.sh]} "> 1), > ) (Com {[LIT_CHARS chmod]} {[LIT_CHARS u] [LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS run/under.sh]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/sh\n"][LIT_CHARS "exit 0\n"]]} 0), (FilenameRedirectNode filename={[LIT_CHARS testing/passing_test.sh]} "> 1), > ) (Com {[LIT_CHARS chmod]} {[LIT_CHARS u] [LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS testing/passing_test.sh]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "sh_test(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS passing_test][RIGHT_D_QUOTE "\""][LIT_CHARS " ,\n"][LIT_CHARS " srcs = [ "][RIGHT_D_QUOTE "\""][LIT_CHARS passing_test.sh][RIGHT_D_QUOTE "\""][LIT_CHARS " ])\n"]]} 0), (FilenameRedirectNode filename={[LIT_CHARS testing/BUILD]} "> 1), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS test]} {[LIT_CHARS //testing] [LIT_OTHER ":"] [LIT_CHARS passing_test]} {[LIT_CHARS --run_under] [LIT_OTHER "="] [SQ ]} {[LIT_CHARS --test_output] [LIT_OTHER "="] [LIT_CHARS all]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected success"]]}) ) (Com {[LIT_CHARS expect_log]} {[SQ ]}) (Com {[LIT_CHARS expect_log]} {[SQ ]}) (Com {[LIT_CHARS expect_log]} {[SQ ]}) ) ) (FunctionDef test_run_under_path [] (List (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS testing]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "mkdir testing failed"]]}) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "sh_test(name='t1', srcs=['t1.sh'])"]]} < (FilenameRedirectNode filename={[LIT_CHARS testing/BUILD]} "> 1), > ) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/sh\n"][LIT_CHARS "exit 0\n"]]} 0), (FilenameRedirectNode filename={[LIT_CHARS testing/t1.sh]} "> 1), > ) (Com {[LIT_CHARS chmod]} {[LIT_CHARS u] [LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS testing/t1.sh]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS scripts]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/sh\n"][LIT_CHARS "echo "][RIGHT_D_QUOTE "\""][LIT_CHARS "hello script!!!"][RIGHT_D_QUOTE "\""][LIT_CHARS " "][RIGHT_D_QUOTE "\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "@"][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"]]} 0), (FilenameRedirectNode filename={[LIT_CHARS scripts/hello]} "> 1), > ) (Com {[LIT_CHARS chmod]} {[LIT_CHARS u] [LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS scripts/hello]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS test]} {[LIT_CHARS //testing] [LIT_OTHER ":"] [LIT_CHARS t1]} {[LIT_CHARS -s]} {[LIT_CHARS --run_under] [LIT_OTHER "="] [LIT_CHARS hello]} {[LIT_CHARS --test_output] [LIT_OTHER "="] [LIT_CHARS all]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > more_env=[('PATH', {[VarSub PATH] [LIT_OTHER ":"] [VarSub PWD] [LIT_CHARS /scripts]})] ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected success"]]}) ) (Com {[LIT_CHARS expect_log]} {[SQ ]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS test]} {[LIT_CHARS //testing] [LIT_OTHER ":"] [LIT_CHARS t1]} {[LIT_CHARS -s]} {[LIT_CHARS --run_under] [LIT_OTHER "="] [SQ ]} {[LIT_CHARS --test_output] [LIT_OTHER "="] [LIT_CHARS all]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > more_env=[('PATH', {[VarSub PATH] [LIT_OTHER ":"] [VarSub PWD] [LIT_CHARS /scripts]})] ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected success"]]}) ) (Com {[LIT_CHARS expect_log]} {[SQ ]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS test]} {[LIT_CHARS //testing] [LIT_OTHER ":"] [LIT_CHARS t1]} {[LIT_CHARS --run_under] [LIT_OTHER "="] [VarSub PWD] [LIT_CHARS /scripts/hello]} {[LIT_CHARS -s]} {[LIT_CHARS --test_output] [LIT_OTHER "="] [LIT_CHARS all]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected success"]]}) ) (Com {[LIT_CHARS expect_log]} {[SQ ]}) ) ) (FunctionDef test_test_timeout [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS dir]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/sh\n"][LIT_CHARS "sleep 3\n"][LIT_CHARS "exit 0\n"][LIT_CHARS "\n"]]} 0), (FilenameRedirectNode filename={[LIT_CHARS dir/test.sh]} "> 1), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS dir/test.sh]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS " sh_test(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS test][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " timeout = "][RIGHT_D_QUOTE "\""][LIT_CHARS short][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = [ "][RIGHT_D_QUOTE "\""][LIT_CHARS test.sh][RIGHT_D_QUOTE "\""][LIT_CHARS " ],\n"][LIT_CHARS " size = "][RIGHT_D_QUOTE "\""][LIT_CHARS small][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " )\n"]]} 0), (FilenameRedirectNode filename={[LIT_CHARS dir/BUILD]} "> 1), > ) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS test]} {[LIT_CHARS --test_timeout] [LIT_OTHER "="] [LIT_CHARS 2]} {[LIT_CHARS //dir] [LIT_OTHER ":"] [LIT_CHARS test]}) ) (AndOr OP_AND_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "should have timed out"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS TIMEOUT]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS test]} {[LIT_CHARS --test_timeout] [LIT_OTHER "="] [LIT_CHARS 20]} {[LIT_CHARS //dir] [LIT_OTHER ":"] [LIT_CHARS test]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "expected success"]]}) ) ) ) (FunctionDef test_runs_per_test_detects_flakes [] (List (= scope= flags=0 words=[] bindings=[('COUNTER_DIR', {[DQ [VarSub TEST_TMPDIR][LIT_CHARS /counter_dir]]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub COUNTER_DIR]]}) (ForExpr {A2 AS_OP_EQUAL {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}} {A2 AS_OP_LE {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 5]}}} {A1 AS_OP_DPLUS {A Atom NODE_ARITH_WORD {[VarSub i]}} } (List (Com {[LIT_CHARS echo]} {[LIT_CHARS 1]} < (FilenameRedirectNode filename={[DQ [VarSub COUNTER_DIR][LIT_CHARS /][VarSub i]]} "> 1), > ) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/bash\n"][LIT_CHARS "i="][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "(< "][RIGHT_D_QUOTE "\""][VarSub COUNTER_DIR][LIT_CHARS /][VarSub i][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS "\n"][LIT_CHARS "# increment the hidden state\n"][LIT_CHARS "echo "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "((i + 1)) > "][RIGHT_D_QUOTE "\""][VarSub COUNTER_DIR][LIT_CHARS /][VarSub i][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"][LIT_CHARS "\n"][LIT_CHARS "# succeed exactly once.\n"][LIT_CHARS "exit "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "((i != "][VarSub i][LIT_CHARS "))\n"][LIT_CHARS "}\n"]]} 0), (FilenameRedirectNode filename={[LIT_CHARS test] [VarSub i] [LIT_CHARS .sh]} "> 1), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS test] [VarSub i] [LIT_CHARS .sh]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "sh_test(name = "][RIGHT_D_QUOTE "\""][LIT_CHARS test][VarSub i][RIGHT_D_QUOTE "\""][LIT_CHARS ", srcs = [ "][RIGHT_D_QUOTE "\""][LIT_CHARS test][VarSub i][LIT_CHARS .sh][RIGHT_D_QUOTE "\""][LIT_CHARS " ])\n"]]} 0), (FilenameRedirectNode filename={[LIT_CHARS BUILD]} "> 1), > ) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS test]} {[LIT_CHARS --spawn_strategy] [LIT_OTHER "="] [LIT_CHARS standalone]} {[LIT_CHARS --jobs] [LIT_OTHER "="] [LIT_CHARS 1]} {[LIT_CHARS --runs_per_test] [LIT_OTHER "="] [LIT_CHARS 5]} {[LIT_CHARS --runs_per_test_detects_flakes]} {[LIT_CHARS //] [LIT_OTHER ":"] [LIT_CHARS test] [VarSub i]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "should have succeeded"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS FLAKY]]}) ) ) ) ) (FunctionDef test_xml_is_present [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS dir]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "#!/bin/sh\n"] [LIT_CHARS "echo HELLO > $XML_OUTPUT_FILE\n"] [LIT_CHARS "exit 0\n"]} 0), (FilenameRedirectNode filename={[LIT_CHARS dir/test.sh]} "> 1), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS dir/test.sh]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS " sh_test(\n"] [LIT_CHARS " name = \"test\",\n"] [LIT_CHARS " srcs = [ \"test.sh\" ],\n"] [LIT_CHARS " )\n"]} 0), (FilenameRedirectNode filename={[LIT_CHARS dir/BUILD]} "> 1), > ) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS test]} {[LIT_CHARS -s]} {[LIT_CHARS --test_output] [LIT_OTHER "="] [LIT_CHARS streamed]} {[LIT_CHARS //dir] [LIT_OTHER ":"] [LIT_CHARS test]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "expected success"]]}) ) (= scope= flags=0 words=[] bindings=[('xml_log', {[LIT_CHARS bazel-testlogs/dir/test/test.xml]})]) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -s]} {[VarSub xml_log]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS fail]} {[DQ [VarSub xml_log][LIT_CHARS " was not present after test"]]}) ) ) ) (FunctionDef test_testonly_is_enforced [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS testonly]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "genrule(\n"] [LIT_CHARS " name = \"testonly\",\n"] [LIT_CHARS " srcs = [],\n"] [LIT_CHARS " cmd = \"echo testonly | tee $@\",\n"] [LIT_CHARS " outs = [\"testonly.txt\"],\n"] [LIT_CHARS " testonly = 1,\n"] [LIT_CHARS ")\n"] [LIT_CHARS "genrule(\n"] [LIT_CHARS " name = \"not-testonly\",\n"] [LIT_CHARS " srcs = [\":testonly\"],\n"] [LIT_CHARS " cmd = \"echo should fail | tee $@\",\n"] [LIT_CHARS " outs = [\"not-testonly.txt\"],\n"] [LIT_CHARS ")\n"]} 0), (FilenameRedirectNode filename={[LIT_CHARS testonly/BUILD]} "> 1), > ) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //testonly]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Building //testonly failed"]]}) ) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //testonly] [LIT_OTHER ":"] [LIT_CHARS not-testonly]}) ) (AndOr OP_AND_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Should have failed"]]}) (Com {[LIT_CHARS true]}) ) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "'//testonly:not-testonly' depends on testonly target '//testonly:testonly'"]]}) ) ) (FunctionDef test_always_xml_output [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS dir]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/sh\n"][LIT_CHARS "exit 0\n"]]} 0), (FilenameRedirectNode filename={[LIT_CHARS dir/success.sh]} "> 1), > ) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/sh\n"][LIT_CHARS "exit 1\n"]]} 0), (FilenameRedirectNode filename={[LIT_CHARS dir/fail.sh]} "> 1), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS dir/] [LIT_LBRACE "{"] [LIT_CHARS success] [LIT_COMMA ","] [LIT_CHARS fail] [LIT_RBRACE "}"] [LIT_CHARS .sh]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "sh_test(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS success][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = [ "][RIGHT_D_QUOTE "\""][LIT_CHARS success.sh][RIGHT_D_QUOTE "\""][LIT_CHARS " ],\n"][LIT_CHARS ")\n"][LIT_CHARS "sh_test(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS fail][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = [ "][RIGHT_D_QUOTE "\""][LIT_CHARS fail.sh][RIGHT_D_QUOTE "\""][LIT_CHARS " ],\n"][LIT_CHARS ")\n"]]} 0), (FilenameRedirectNode filename={[LIT_CHARS dir/BUILD]} "> 1), > ) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS test]} {[LIT_CHARS //dir] [LIT_OTHER ":"] [LIT_CHARS all]}) ) (AndOr OP_AND_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "should have failed"]]}) (Com {[LIT_CHARS true]}) ) ) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -f]} {[DQ [LIT_CHARS bazel-testlogs/dir/success/test.xml]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "No xml file for //dir:success"]]}) ) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -f]} {[DQ [LIT_CHARS bazel-testlogs/dir/fail/test.xml]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "No xml file for //dir:fail"]]}) ) (Com {[LIT_CHARS cat]} {[LIT_CHARS bazel-testlogs/dir/success/test.xml]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "errors="][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS 0][\ LIT_ESCAPED_CHAR "\\\""]]}) (Com {[LIT_CHARS expect_log_once]} {[DQ [LIT_CHARS testcase]]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "name="][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS dir/success][\ LIT_ESCAPED_CHAR "\\\""]]}) (Com {[LIT_CHARS cat]} {[LIT_CHARS bazel-testlogs/dir/fail/test.xml]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "errors="][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS 1][\ LIT_ESCAPED_CHAR "\\\""]]}) (Com {[LIT_CHARS expect_log_once]} {[DQ [LIT_CHARS testcase]]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "name="][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS dir/fail][\ LIT_ESCAPED_CHAR "\\\""]]}) ) ) (FunctionDef test_detailed_test_summary [] (List (Com {[LIT_CHARS copy_examples]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "workspace(name = "][RIGHT_D_QUOTE "\""][LIT_CHARS io_bazel][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS setup_javatest_support]}) (= scope= flags=0 words=[] bindings=[('java_native_tests', {[LIT_CHARS //examples/java-native/src/test/java/com/example/myproject]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS test]} {[LIT_CHARS --test_summary] [LIT_OTHER "="] [LIT_CHARS detailed]} {[DQ [VarSub java_native_tests][LIT_CHARS ":fail"]]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Test "][VarSub *][LIT_CHARS " succeed while expecting failure"]]}) (Com {[LIT_CHARS true]}) ) ) (Com {[LIT_CHARS expect_log]} {[SQ ]}) ) ) (Com {[LIT_CHARS run_suite]} {[DQ [LIT_CHARS "test tests"]]}) )