(List (= scope= flags=0 words=[] bindings=[('NO_SIGNAL_OVERRIDE', {[LIT_CHARS 1]})]) (= 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]}) ) ) (Com {[LIT_CHARS add_to_bazelrc]} {[DQ [LIT_CHARS "test --notest_loasd"]]}) (FunctionDef write_py_files [] (List (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS py]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "mkdir py failed"]]}) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "py_binary(name = 'binary', srcs = ['binary.py'])"]]} < (FilenameRedirectNode filename={[LIT_CHARS py/BUILD]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "py_test(name = 'test', srcs = ['test.py'])"]]} < (FilenameRedirectNode filename={[LIT_CHARS py/BUILD]} >"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "print 'Hello, Python World!'"]]} < (FilenameRedirectNode filename={[LIT_CHARS py/py.py]} "> 1), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS py/py.py]}) (Com {[LIT_CHARS ln]} {[LIT_CHARS -sf]} {[LIT_CHARS py.py]} {[LIT_CHARS py/binary.py]}) (Com {[LIT_CHARS ln]} {[LIT_CHARS -sf]} {[LIT_CHARS py.py]} {[LIT_CHARS py/test.py]}) ) ) (FunctionDef write_cc_source_files [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS cc]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS cc/kitty.cc]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#include \n"][LIT_CHARS "\n"][LIT_CHARS "int main(void) {\n"][LIT_CHARS " FILE* f;\n"][LIT_CHARS " char buf[256];\n"][LIT_CHARS "\n"][LIT_CHARS " f = fopen("][RIGHT_D_QUOTE "\""][LIT_CHARS cc/hello_kitty.txt][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][LIT_CHARS r][RIGHT_D_QUOTE "\""][LIT_CHARS ");\n"][LIT_CHARS " if (f == NULL) {\n"][LIT_CHARS " f = fopen("][RIGHT_D_QUOTE "\""][LIT_CHARS cc/pussycat.txt][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][LIT_CHARS r][RIGHT_D_QUOTE "\""][LIT_CHARS ");\n"][LIT_CHARS " }\n"][LIT_CHARS " if (f == NULL) {\n"][LIT_CHARS " return 1;\n"][LIT_CHARS " }\n"][LIT_CHARS "\n"][LIT_CHARS " fgets(buf, 255, f);\n"][LIT_CHARS " fclose(f);\n"][LIT_CHARS " printf("][RIGHT_D_QUOTE "\""][LIT_CHARS "%s"][RIGHT_D_QUOTE "\""][LIT_CHARS ", buf);\n"][LIT_CHARS " return 0;\n"][LIT_CHARS "}\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS cc/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "cc_binary(name='kitty',\n"][LIT_CHARS " srcs=['kitty.cc'],\n"][LIT_CHARS " data=glob(['*.txt']))\n"]]} 0), > ) ) ) (FunctionDef test_run_py_binary [] (List (Com {[LIT_CHARS write_py_files]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //py] [LIT_OTHER ":"] [LIT_CHARS binary]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected success"]]}) ) (Com {[LIT_CHARS expect_log_once]} {[SQ ]}) ) ) (FunctionDef test_run_py_test [] (List (Com {[LIT_CHARS write_py_files]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //py] [LIT_OTHER ":"] [LIT_CHARS test]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected success"]]}) ) (Com {[LIT_CHARS expect_log_once]} {[SQ ]}) ) ) (FunctionDef test_runfiles_present_cc_binary [] (List (Com {[LIT_CHARS write_cc_source_files]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS cc/hello_kitty.txt]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "Hello, kitty.\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS --nobuild_runfile_links]} {[LIT_CHARS //cc] [LIT_OTHER ":"] [LIT_CHARS kitty]} < (FilenameRedirectNode filename={[LIT_CHARS output]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [VarSub PRODUCT_NAME][LIT_CHARS " run failed."]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS assert_contains]} {[DQ [LIT_CHARS "Hello, kitty"]]} {[LIT_CHARS output]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Output is not OK."]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS --nobuild_runfile_links]} {[LIT_CHARS //cc] [LIT_OTHER ":"] [LIT_CHARS kitty]} < (FilenameRedirectNode filename={[LIT_CHARS output2]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Second "][VarSub PRODUCT_NAME][LIT_CHARS " run failed."]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS assert_contains]} {[DQ [LIT_CHARS "Hello, kitty"]]} {[LIT_CHARS output2]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Output is not OK."]]}) ) ) ) (FunctionDef test_runfiles_updated_correctly_with_nobuild_runfile_links [] (List (Com {[LIT_CHARS write_cc_source_files]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS cc/hello_kitty.txt]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "Hello, kitty.\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS --nobuild_runfile_links]} {[LIT_CHARS //cc] [LIT_OTHER ":"] [LIT_CHARS kitty]} < (FilenameRedirectNode filename={[LIT_CHARS output]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [VarSub PRODUCT_NAME][LIT_CHARS " run failed."]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS assert_contains]} {[DQ [LIT_CHARS "Hello, kitty"]]} {[LIT_CHARS output]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Output is not OK."]]}) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS cc/hello_kitty.txt]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS cc/pussycat.txt]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "A pussycat.\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS --nobuild_runfile_links]} {[LIT_CHARS //cc] [LIT_OTHER ":"] [LIT_CHARS kitty]} < (FilenameRedirectNode filename={[LIT_CHARS output]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [VarSub PRODUCT_NAME][LIT_CHARS " run failed."]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS assert_contains]} {[DQ [LIT_CHARS pussycat]]} {[LIT_CHARS output]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Output is not OK."]]}) ) ) ) (FunctionDef test_script_file_generation [] (List (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS fubar]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "mkdir fubar failed"]]}) ) (Com {[LIT_CHARS echo]} {[SQ ]} < (FilenameRedirectNode filename={[LIT_CHARS fubar/BUILD]} "> 1), > ) (Com {[LIT_CHARS echo]} {[SQ ]} < (FilenameRedirectNode filename={[LIT_CHARS fubar/fubar.sh]} "> 1), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS fubar/fubar.sh]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS --script_path] [LIT_OTHER "="] [ComSub (Com {[LIT_CHARS pwd]})] [LIT_CHARS /fubar/output.sh]} {[LIT_CHARS //fubar]}) (Com {[LIT_CHARS fail]} {[DQ [VarSub PRODUCT_NAME][LIT_CHARS " run failed (--script_path)."]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS grep]} {[DQ [LIT_CHARS "fubar "][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][\ LIT_ESCAPED_CHAR "\\@"][\ LIT_ESCAPED_CHAR "\\\""]]} {[LIT_CHARS ./fubar/output.sh]}) (Com {[LIT_CHARS fail]} {[DQ [VarSub PRODUCT_NAME][LIT_CHARS " run --script_path output was incorrect."]]}) ) (AndOr OP_OR_IF (Com {[ComSub (Com {[LIT_CHARS pwd]})] [LIT_CHARS /fubar/output.sh]} {[LIT_CHARS a]} {[DQ [LIT_CHARS "b c"]]} {[LIT_CHARS d]} < (FilenameRedirectNode filename={[LIT_CHARS ./fubar/fubar.output]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Generated script exited with an error."]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS grep]} {[DQ [LIT_CHARS "arg: b c"]]} {[LIT_CHARS ./fubar/fubar.output]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Generated script did not handle arguments correctly."]]}) ) ) ) (FunctionDef test_consistent_command_line_encoding [] (List (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub PLATFORM]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [LIT_CHARS darwin]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS warn]} {[DQ [LIT_CHARS "test disabled on darwin, see Github issue 1766"]]}) ) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub PLATFORM]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [LIT_CHARS darwin]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) (= scope= flags=0 words=[] bindings=[('arg', {[ComSub (Com {[LIT_CHARS echo]} {[LIT_CHARS -e]} {[SQ ]})]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS foo]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "mkdir foo failed"]]}) ) (Com {[LIT_CHARS echo]} {[SQ ]} < (FilenameRedirectNode filename={[LIT_CHARS foo/BUILD]} "> 1), > ) (Com {[LIT_CHARS echo]} {[SQ ]} < (FilenameRedirectNode filename={[LIT_CHARS foo/BUILD]} >"> 1), > ) (Com {[LIT_CHARS echo]} {[SQ ] [DQ [VarSub arg]] [SQ ]} < (FilenameRedirectNode filename={[LIT_CHARS foo/foo.sh]} "> 1), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS foo/foo.sh]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //foo]} {[LIT_CHARS --]} {[DQ [VarSub arg]]} < (FilenameRedirectNode filename={[LIT_CHARS output]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [VarSub PRODUCT_NAME][LIT_CHARS " run failed."]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS test]} {[LIT_CHARS //foo] [LIT_OTHER ":"] [LIT_CHARS foo_test]} {[LIT_CHARS --test_arg] [LIT_OTHER "="] [DQ [VarSub arg]]}) (Com {[LIT_CHARS fail]} {[DQ [VarSub PRODUCT_NAME][LIT_CHARS " test failed"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS --batch]} {[LIT_CHARS run]} {[LIT_CHARS //foo]} {[LIT_CHARS --]} {[DQ [VarSub arg]]} < (FilenameRedirectNode filename={[LIT_CHARS output]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [VarSub PRODUCT_NAME][LIT_CHARS " run failed (--batch)."]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS --batch]} {[LIT_CHARS test]} {[LIT_CHARS //foo] [LIT_OTHER ":"] [LIT_CHARS foo_test]} {[LIT_CHARS --test_arg] [LIT_OTHER "="] [DQ [VarSub arg]]}) (Com {[LIT_CHARS fail]} {[DQ [VarSub PRODUCT_NAME][LIT_CHARS " test failed (--batch)"]]}) ) ) ) (FunctionDef test_interrupt_kills_child [] (List (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS foo]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "mkdir foo failed"]]}) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[LIT_CHARS /tmp/sleep-minute-pipe]}) (AndOr OP_OR_IF (Com {[LIT_CHARS mkfifo]} {[LIT_CHARS /tmp/sleep-minute-pipe]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "make pipe failed"]]}) ) (Com {[LIT_CHARS echo]} {[SQ ]} < (FilenameRedirectNode filename={[LIT_CHARS foo/BUILD]} "> 1), > ) (Com {[LIT_CHARS echo]} {[LIT_CHARS -e]} {[DQ [LIT_CHARS "#!/bin/bash"][\ LIT_ESCAPED_CHAR "\\n"]] [SQ /tmp/sleep-minute-pipe">] [DQ [\ LIT_ESCAPED_CHAR "\\n"]] [SQ ]} < (FilenameRedirectNode filename={[LIT_CHARS foo/sleep-minute.sh]} "> 1), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS foo/sleep-minute.sh]}) (= scope= flags=0 words=[] bindings=[('serverpid', {[ComSub (Com {[LIT_CHARS bazel]} {[LIT_CHARS info]} {[LIT_CHARS server_pid]})]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[VarSub serverpid]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Couldn't get "][VarSub PRODUCT_NAME][LIT_CHARS " server PID"]]}) ) (Fork (Subshell (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //foo] [LIT_OTHER ":"] [LIT_CHARS sleep-minute]}) (Com {[LIT_CHARS true]}) ) ) ) (= scope= flags=0 words=[{[LIT_CHARS sleeppid]}] bindings=[]) (Com {[LIT_CHARS read]} {[LIT_CHARS sleeppid]} < (FilenameRedirectNode filename={[LIT_CHARS /tmp/sleep-minute-pipe]} 0), > ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[VarSub sleeppid]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS fail]} {[DQ [VarSub PRODUCT_NAME][LIT_CHARS " run did not invoke shell script"]]}) ) (Com {[LIT_CHARS kill]} {[LIT_CHARS -SIGINT]} {[VarSub serverpid]}) (For i [{[LIT_CHARS 0.25]}, {[LIT_CHARS 0.5]}, {[LIT_CHARS 1]}, {[LIT_CHARS 2]}]) (List (Com {[LIT_CHARS sleep]} {[VarSub i]}) (AndOr OP_OR_IF (Com {[LIT_CHARS kill]} {[LIT_CHARS -0]} {[VarSub sleeppid]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) ) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Shell script still running after SIGINT sent to server"]]}) ) ) (FunctionDef test_no_color_on_failed_run [] (List (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS x]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "mkdir failed"]]}) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "cc_binary(name = 'x', srcs = ['x.cc'])"]]} < (FilenameRedirectNode filename={[LIT_CHARS x/BUILD]} "> 1), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS x/x.cc]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "int main(int, char**) {\n"][LIT_CHARS " // Missing semicolon\n"][LIT_CHARS " return 0\n"][LIT_CHARS "}\n"]]} 0), > ) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //x] [LIT_OTHER ":"] [LIT_CHARS x]}) ) (AndOr OP_AND_IF (Com {[LIT_CHARS --color] [LIT_OTHER "="] [LIT_CHARS no]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "expected failure"]]}) ) (Com {[LIT_CHARS cat]} {[VarSub TEST_log]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "expected ';'"]]}) (AndOr OP_AND_IF (Com {[LIT_CHARS grep]} {[ComSub (Com {[LIT_CHARS echo]} {[LIT_CHARS -e]} {[SQ ]})]} {[VarSub TEST_log]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected colorless output"]]}) ) (Com {[LIT_CHARS true]}) ) ) (FunctionDef test_no_ansi_stripping_in_stdout_or_stderr [] (List (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS x]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "mkdir failed"]]}) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "cc_binary(name = 'x', srcs = ['x.cc'])"]]} < (FilenameRedirectNode filename={[LIT_CHARS x/BUILD]} "> 1), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS x/x.cc]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#include \n"][LIT_CHARS "int main(int, char**) {\n"][LIT_CHARS " const char out[] = {'<', 0x1B, '[', 'a', ',', 0x1B, '[', '1', '>', 0x0A};\n"][LIT_CHARS " const char err[] = {'<', 0x1B, '[', 'b', ',', 0x1B, '[', '2', '>', 0x0A};\n"][LIT_CHARS " write(1, out, 10);\n"][LIT_CHARS " write(2, err, 10);\n"][LIT_CHARS " return 0;\n"][LIT_CHARS "}\n"]]} 0), > ) (= scope= flags=0 words=[] bindings=[('out1color', {[ComSub (Com {[LIT_CHARS mktemp]} {[LIT_CHARS x/XXXXXX]})]})]) (= scope= flags=0 words=[] bindings=[('out1nocolor', {[ComSub (Com {[LIT_CHARS mktemp]} {[LIT_CHARS x/XXXXXX]})]})]) (= scope= flags=0 words=[] bindings=[('out2', {[ComSub (Com {[LIT_CHARS mktemp]} {[LIT_CHARS x/XXXXXX]})]})]) (= scope= flags=0 words=[] bindings=[('err1raw_color', {[ComSub (Com {[LIT_CHARS mktemp]} {[LIT_CHARS x/XXXXXX]})]})]) (= scope= flags=0 words=[] bindings=[('err1raw_nocolor', {[ComSub (Com {[LIT_CHARS mktemp]} {[LIT_CHARS x/XXXXXX]})]})]) (= scope= flags=0 words=[] bindings=[('err1color', {[ComSub (Com {[LIT_CHARS mktemp]} {[LIT_CHARS x/XXXXXX]})]})]) (= scope= flags=0 words=[] bindings=[('err1nocolor', {[ComSub (Com {[LIT_CHARS mktemp]} {[LIT_CHARS x/XXXXXX]})]})]) (= scope= flags=0 words=[] bindings=[('err2', {[ComSub (Com {[LIT_CHARS mktemp]} {[LIT_CHARS x/XXXXXX]})]})]) (Com {[LIT_CHARS add_to_bazelrc]} {[LIT_CHARS common]} {[LIT_CHARS --show_progress_rate_limit] [LIT_OTHER "="] [LIT_CHARS 0.03]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //x] [LIT_OTHER ":"] [LIT_CHARS x]} {[LIT_CHARS --color] [LIT_OTHER "="] [LIT_CHARS yes]} < (FilenameRedirectNode filename={[VarSub out1color]} "> 1), (FilenameRedirectNode filename={[VarSub err1raw_color]} "> 2), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "expected success"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //x] [LIT_OTHER ":"] [LIT_CHARS x]} {[LIT_CHARS --color] [LIT_OTHER "="] [LIT_CHARS no]} < (FilenameRedirectNode filename={[VarSub out1nocolor]} "> 1), (FilenameRedirectNode filename={[VarSub err1raw_nocolor]} "> 2), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "expected success"]]}) ) (Com {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/x/x]} < (FilenameRedirectNode filename={[VarSub out2]} "> 1), (FilenameRedirectNode filename={[VarSub err2]} "> 2), > ) (= scope= flags=0 words=[] bindings=[('bazel_stderr_line_count_color', {[ComSub (Pipeline (Com {[LIT_CHARS cat]} {[VarSub err1raw_color]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -n]} {[DQ [LIT_CHARS "Running command line: .*/x/x"]]}) (Com {[LIT_CHARS awk]} {[LIT_CHARS -F]} {[SQ ]} {[SQ ]}) )]})]) (= scope= flags=0 words=[] bindings=[('start', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub bazel_stderr_line_count_color]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) (Pipeline (Com {[LIT_CHARS tail]} {[LIT_CHARS -n]} {[LIT_OTHER "+"] [VarSub start]} {[VarSub err1raw_color]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]} < (FilenameRedirectNode filename={[VarSub err1color]} "> 1), > ) ) (= scope= flags=0 words=[] bindings=[('bazel_stderr_line_count_nocolor', {[ComSub (Pipeline (Com {[LIT_CHARS cat]} {[VarSub err1raw_nocolor]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -n]} {[DQ [LIT_CHARS "Running command line: .*/x/x"]]}) (Com {[LIT_CHARS awk]} {[LIT_CHARS -F]} {[SQ ]} {[SQ ]}) )]})]) (= scope= flags=0 words=[] bindings=[('start', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub bazel_stderr_line_count_nocolor]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) (Com {[LIT_CHARS tail]} {[LIT_CHARS -n]} {[LIT_OTHER "+"] [VarSub start]} {[VarSub err1raw_nocolor]} < (FilenameRedirectNode filename={[VarSub err1nocolor]} "> 1), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS diff]} {[VarSub out1color]} {[VarSub out2]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "stdout with --color=yes differs"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS diff]} {[VarSub out1nocolor]} {[VarSub out2]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "stdout with --color=no differs"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS diff]} {[VarSub err1color]} {[VarSub err2]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "stderr with --color=yes differs"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS diff]} {[VarSub err1nocolor]} {[VarSub err2]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "stderr with --color=no differs"]]}) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[LIT_CHARS x]}) ) ) (FunctionDef test_location_in_args [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS some/testing]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS some/testing/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "genrule(\n"] [LIT_CHARS " name = \"generated\",\n"] [LIT_CHARS " cmd = \"echo 2 > $@\",\n"] [LIT_CHARS " outs = [\"generated.txt\"],\n"] [LIT_CHARS ")\n"] [LIT_CHARS "\n"] [LIT_CHARS "sh_binary(\n"] [LIT_CHARS " name = \"testing\",\n"] [LIT_CHARS " srcs = [\"test.sh\"],\n"] [LIT_CHARS " data = [\"data\", \":generated\"],\n"] [LIT_CHARS " args = [\"$(location :data)\", \"$(location :generated)\"],\n"] [LIT_CHARS ")\n"]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS some/testing/test.sh]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "#!/bin/bash\n"] [LIT_CHARS "set -ex\n"] [LIT_CHARS "echo \"Got $@\"\n"] [LIT_CHARS "i=1\n"] [LIT_CHARS "for arg in $@; do\n"] [LIT_CHARS " [[ $((i++)) = $(cat $arg) ]]\n"] [LIT_CHARS "done\n"]} 0), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS some/testing/test.sh]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS 1]]} < (FilenameRedirectNode filename={[LIT_CHARS some/testing/data]} "> 1), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //some/testing]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected success"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Got .*some/testing/data.*some/testing/generated.txt"]]}) ) ) (FunctionDef test_run_for_alias [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS a]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS a/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "sh_binary(name='a', srcs=['a.sh'])\n"][LIT_CHARS "alias(name='b', actual='a')\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS a/a.sh]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/bash\n"][LIT_CHARS "echo "][RIGHT_D_QUOTE "\""][LIT_CHARS "Dancing with wolves"][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"][LIT_CHARS "exit 0\n"]]} 0), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS a/a.sh]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //a] [LIT_OTHER ":"] [LIT_CHARS b]} < (FilenameRedirectNode filename={[DQ [VarSub TEST_log]]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected success"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Dancing with wolves"]]}) ) ) (Com {[LIT_CHARS run_suite]} {[DQ [LIT_CHARS "'"][VarSub PRODUCT_NAME][LIT_CHARS " run' integration tests"]]}) )