(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]}) ) ) (FunctionDef test_sh_test [] (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 "package(default_visibility = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "//visibility:public"][RIGHT_D_QUOTE "\""][LIT_CHARS "])\n"][LIT_CHARS "sh_test(\n"][LIT_CHARS "name = 'success_test',\n"][LIT_CHARS "srcs = [ 'success_test.sh' ],\n"][LIT_CHARS ")\n"][LIT_CHARS "\n"][LIT_CHARS "sh_test(\n"][LIT_CHARS "name = 'fail_test',\n"][LIT_CHARS "srcs = [ 'fail_test.sh' ],\n"][LIT_CHARS ")\n"][LIT_CHARS "\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS a/success_test.sh]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/sh\n"][LIT_CHARS "echo success-marker\n"][LIT_CHARS "exit 0\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS a/fail_test.sh]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/sh\n"][LIT_CHARS "echo failure-message\n"][LIT_CHARS "exit 1\n"]]} 0), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS a/] [LIT_OTHER "*"] [LIT_CHARS .sh]}) (Com {[LIT_CHARS assert_test_ok]} {[LIT_CHARS //a] [LIT_OTHER ":"] [LIT_CHARS success_test]}) (Com {[LIT_CHARS assert_test_fails]} {[LIT_CHARS //a] [LIT_OTHER ":"] [LIT_CHARS fail_test]}) (Com {[LIT_CHARS expect_log]} {[SQ ]}) ) ) (FunctionDef test_extra_action [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS mypkg]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS mypkg/echoer.sh]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/bash\n"][LIT_CHARS "if [[ ! -e "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "0.runfiles/__main__/mypkg/runfile ]]; then\n"][LIT_CHARS " echo "][RIGHT_D_QUOTE "\""][LIT_CHARS "Runfile not found"][RIGHT_D_QUOTE "\""][LIT_CHARS " >&2\n"][LIT_CHARS " exit 1\n"][LIT_CHARS "fi\n"][LIT_CHARS "echo EXTRA ACTION FILE: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "1\n"]]} 0), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS mypkg/echoer.sh]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS mypkg/Hello.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "public class Hello {\n"][LIT_CHARS " public void sayHi() {\n"][LIT_CHARS " System.out.println("][RIGHT_D_QUOTE "\""][LIT_CHARS hi][RIGHT_D_QUOTE "\""][LIT_CHARS ");\n"][LIT_CHARS " }\n"][LIT_CHARS "}\n"]]} 0), > ) (Com {[LIT_CHARS touch]} {[LIT_CHARS mypkg/runfile]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS mypkg/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package(default_visibility = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "//visibility:public"][RIGHT_D_QUOTE "\""][LIT_CHARS "])\n"][LIT_CHARS "\n"][LIT_CHARS "extra_action(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS echo-filename][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " cmd = "][RIGHT_D_QUOTE "\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "(location :echoer) "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "(EXTRA_ACTION_FILE)"][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " tools = ["][RIGHT_D_QUOTE "\""][LIT_CHARS ":echoer"][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"][LIT_CHARS "\n"][LIT_CHARS "action_listener(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS al][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " extra_actions = ["][RIGHT_D_QUOTE "\""][LIT_CHARS ":echo-filename"][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " mnemonics = ["][RIGHT_D_QUOTE "\""][LIT_CHARS Javac][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"][LIT_CHARS "\n"][LIT_CHARS "sh_binary(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS echoer][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS echoer.sh][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " data = ["][RIGHT_D_QUOTE "\""][LIT_CHARS runfile][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"][LIT_CHARS "\n"][LIT_CHARS "java_library(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS hello][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS Hello.java][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS --experimental_action_listener] [LIT_OTHER "="] [LIT_CHARS //mypkg] [LIT_OTHER ":"] [LIT_CHARS al]} {[LIT_CHARS //mypkg] [LIT_OTHER ":"] [LIT_CHARS hello]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Building with action listener failed"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "EXTRA ACTION FILE"]]}) ) ) (FunctionDef test_with_arguments [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS mypkg]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS mypkg/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 expected_arg_test][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS check_expected_argument.sh][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " args = ["][RIGHT_D_QUOTE "\""][LIT_CHARS expected_value][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"][LIT_CHARS "\n"][LIT_CHARS "sh_test(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS unexpected_arg_test][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS check_expected_argument.sh][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " args = ["][RIGHT_D_QUOTE "\""][LIT_CHARS unexpected_value][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS mypkg/check_expected_argument.sh]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/sh\n"][LIT_CHARS "[ "][RIGHT_D_QUOTE "\""][LIT_CHARS expected_value][RIGHT_D_QUOTE "\""][LIT_CHARS " = "][RIGHT_D_QUOTE "\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS 1][RIGHT_D_QUOTE "\""][LIT_CHARS " ] || exit 1\n"]]} 0), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS mypkg/check_expected_argument.sh]}) (Com {[LIT_CHARS assert_test_ok]} {[LIT_CHARS //mypkg] [LIT_OTHER ":"] [LIT_CHARS expected_arg_test]}) (Com {[LIT_CHARS assert_test_fails]} {[LIT_CHARS //mypkg] [LIT_OTHER ":"] [LIT_CHARS unexpected_arg_test]}) ) ) (FunctionDef test_top_level_test [] (List (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS 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 trivial_test][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS true.sh][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS true.sh]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/sh\n"][LIT_CHARS "exit 0\n"]]} 0), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS true.sh]}) (Com {[LIT_CHARS assert_test_ok]} {[LIT_CHARS //] [LIT_OTHER ":"] [LIT_CHARS trivial_test]}) ) ) (FunctionDef test_cpp_libdeps [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS pkg]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "cc_library(\n"] [LIT_CHARS " name = \"a\",\n"] [LIT_CHARS " srcs = [\"a.cc\"],\n"] [LIT_CHARS ")\n"] [LIT_CHARS "\n"] [LIT_CHARS "cc_library(\n"] [LIT_CHARS " name = \"b\",\n"] [LIT_CHARS " srcs = [\"b.cc\"],\n"] [LIT_CHARS " deps = [\":a\"],\n"] [LIT_CHARS ")\n"] [LIT_CHARS "\n"] [LIT_CHARS "cc_binary(\n"] [LIT_CHARS " name = \"main\",\n"] [LIT_CHARS " srcs = [\"main.cc\"],\n"] [LIT_CHARS " deps = [\":b\"],\n"] [LIT_CHARS ")\n"]} 0), (FilenameRedirectNode filename={[LIT_CHARS pkg/BUILD]} "> 1), > ) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "#include \n"] [LIT_CHARS "\n"] [LIT_CHARS "std::string get_hello(std::string world) {\n"] [LIT_CHARS " return \"Hello, \" + world + \"!\";\n"] [LIT_CHARS "}\n"]} 0), (FilenameRedirectNode filename={[LIT_CHARS pkg/a.cc]} "> 1), > ) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "#include \n"] [LIT_CHARS "#include \n"] [LIT_CHARS "\n"] [LIT_CHARS "std::string get_hello(std::string);\n"] [LIT_CHARS "\n"] [LIT_CHARS "void print_hello(std::string world) {\n"] [LIT_CHARS " std::cout << get_hello(world) << std::endl;\n"] [LIT_CHARS "}\n"]} 0), (FilenameRedirectNode filename={[LIT_CHARS pkg/b.cc]} "> 1), > ) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "#include \n"] [LIT_CHARS "void print_hello(std::string);\n"] [LIT_CHARS "\n"] [LIT_CHARS "int main() {\n"] [LIT_CHARS " print_hello(std::string(\"World\"));\n"] [LIT_CHARS "}\n"]} 0), (FilenameRedirectNode filename={[LIT_CHARS pkg/main.cc]} "> 1), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //pkg] [LIT_OTHER ":"] [LIT_CHARS a]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build //pkg:a"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //pkg] [LIT_OTHER ":"] [LIT_CHARS b]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build //pkg:b"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //pkg] [LIT_OTHER ":"] [LIT_CHARS main]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to run //pkg:main"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Hello, World!"]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS ./bazel-bin/pkg/main]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to run //pkg:main"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Hello, World!"]]}) ) ) (FunctionDef test_genrule_default_env [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS pkg]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "genrule(\n"] [LIT_CHARS " name = \"test\",\n"] [LIT_CHARS " outs = [\"test.out\"],\n"] [LIT_CHARS " cmd = \"(echo \\\"PATH=$$PATH\\\"; echo \\\"TMPDIR=$$TMPDIR\\\") > $@\",\n"] [LIT_CHARS ")\n"]} 0), (FilenameRedirectNode filename={[LIT_CHARS pkg/BUILD]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('old_path', {[DQ [VarSub PATH]]})]) (= scope= flags=0 words=[] bindings=[('old_tmpdir', {[DQ [VarSub TMPDIR test_op=VS_TEST_HYPHEN {}]]})]) (= scope= flags=0 words=[] bindings=[('new_tmpdir', {[DQ [ComSub (Com {[LIT_CHARS mktemp]} {[LIT_CHARS -d]} {[DQ [VarSub TEST_TMPDIR][LIT_CHARS /newfancytmpdirXXXXXX]]})]]})]) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -d]} {[DQ [VarSub new_tmpdir]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Could not create new temporary directory "][VarSub new_tmpdir]]}) ) (= scope= flags=1 words=[] bindings=[('PATH', {[DQ [VarSub PATH_TO_BAZEL_WRAPPER][LIT_CHARS ":/bin:/usr/bin:/random/path"]]})]) (= scope= flags=1 words=[] bindings=[('TMPDIR', {[DQ [VarSub new_tmpdir]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS --batch]} {[LIT_CHARS build]} {[LIT_CHARS //pkg] [LIT_OTHER ":"] [LIT_CHARS test]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build //pkg:test"]]}) ) (Com {[LIT_CHARS assert_contains]} {[DQ [LIT_CHARS "PATH="][VarSub PATH_TO_BAZEL_WRAPPER][LIT_CHARS ":/bin:/usr/bin:/random/path"]]} {[LIT_CHARS bazel-genfiles/pkg/test.out]}) (Com {[LIT_CHARS assert_contains]} {[DQ [LIT_CHARS "TMPDIR=.*newfancytmpdir"]]} {[LIT_CHARS bazel-genfiles/pkg/test.out]}) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub old_tmpdir]]} {[LIT_OTHER "]"]}) (= scope= flags=1 words=[] bindings=[('TMPDIR', {[DQ [VarSub old_tmpdir]]})]) (ElseTrue) (Com {[LIT_CHARS unset]} {[LIT_CHARS TMPDIR]}) ) (= scope= flags=1 words=[] bindings=[('PATH', {[DQ [VarSub old_path]]})]) ) ) (FunctionDef test_genrule_remote [] (List (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "local_repository(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS r][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " path = __workspace_dir__,\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS package]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS package/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "genrule(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS abs_dep][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "//package:in"][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " outs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS abs_dep.out][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " cmd = "][RIGHT_D_QUOTE "\""][LIT_CHARS "echo '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "(locations //package:in)' > "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "@"][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS ")\n"][LIT_CHARS "\n"][LIT_CHARS "sh_binary(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS in][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS in.sh][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS package/in.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 Hi][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"]]} 0), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS package/in.sh]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS r//package] [LIT_OTHER ":"] [LIT_CHARS abs_dep]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Should build"]]}) ) ) ) (FunctionDef test_genrule_remote_d [] (List (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "local_repository(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS r][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " path = __workspace_dir__,\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS package]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS package/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "genrule(\n"] [LIT_CHARS " name = \"hi\",\n"] [LIT_CHARS " outs = [\n"] [LIT_CHARS " \"a/b\",\n"] [LIT_CHARS " \"c/d\"\n"] [LIT_CHARS " ],\n"] [LIT_CHARS " cmd = \"echo 'hi' | tee $(@D)/a/b $(@D)/c/d\",\n"] [LIT_CHARS ")\n"]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS r//package] [LIT_OTHER ":"] [LIT_CHARS hi]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Should build"]]}) ) (Com {[LIT_CHARS expect_log]} {[LIT_CHARS bazel-genfiles/external/r/package/a/b]}) (Com {[LIT_CHARS expect_log]} {[LIT_CHARS bazel-genfiles/external/r/package/c/d]}) ) ) (FunctionDef test_python_with_workspace_name [] (List (Com {[LIT_CHARS create_new_workspace]}) (Com {[LIT_CHARS cd]} {[VarSub new_workspace_dir]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_LBRACE "{"] [LIT_CHARS module_a] [LIT_COMMA ","] [LIT_CHARS module_b] [LIT_RBRACE "}"]}) (= scope= flags=0 words=[] bindings=[('remote_path', {[DQ [VarSub new_workspace_dir]]})]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS module_a/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package(default_visibility = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "//visibility:public"][RIGHT_D_QUOTE "\""][LIT_CHARS "])\n"][LIT_CHARS "py_library(name = "][RIGHT_D_QUOTE "\""][LIT_CHARS foo][RIGHT_D_QUOTE "\""][LIT_CHARS ", srcs=["][RIGHT_D_QUOTE "\""][LIT_CHARS foo.py][RIGHT_D_QUOTE "\""][LIT_CHARS "])\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS module_b/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package(default_visibility = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "//visibility:public"][RIGHT_D_QUOTE "\""][LIT_CHARS "])\n"][LIT_CHARS "py_library(name = "][RIGHT_D_QUOTE "\""][LIT_CHARS bar][RIGHT_D_QUOTE "\""][LIT_CHARS ", deps = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "//module_a:foo"][RIGHT_D_QUOTE "\""][LIT_CHARS "], srcs=["][RIGHT_D_QUOTE "\""][LIT_CHARS bar.py][RIGHT_D_QUOTE "\""][LIT_CHARS "],)\n"][LIT_CHARS "py_binary(name = "][RIGHT_D_QUOTE "\""][LIT_CHARS bar2][RIGHT_D_QUOTE "\""][LIT_CHARS ", deps = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "//module_a:foo"][RIGHT_D_QUOTE "\""][LIT_CHARS "], srcs=["][RIGHT_D_QUOTE "\""][LIT_CHARS bar2.py][RIGHT_D_QUOTE "\""][LIT_CHARS "],)\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS module_a/foo.py]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def GetNumber():\n"][LIT_CHARS " return 42\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS module_b/bar.py]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "from module_a import foo\n"][LIT_CHARS "def PrintNumber():\n"][LIT_CHARS " print "][RIGHT_D_QUOTE "\""][LIT_CHARS "Print the number %d"][RIGHT_D_QUOTE "\""][LIT_CHARS " % foo.GetNumber()\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS module_b/bar2.py]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "from module_a import foo\n"][LIT_CHARS "print "][RIGHT_D_QUOTE "\""][LIT_CHARS "The number is %d"][RIGHT_D_QUOTE "\""][LIT_CHARS " % foo.GetNumber()\n"]]} 0), > ) (Com {[LIT_CHARS cd]} {[VarSub WORKSPACE_DIR]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_LBRACE "{"] [LIT_CHARS module1] [LIT_COMMA ","] [LIT_CHARS module2] [LIT_RBRACE "}"]}) (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 foobar][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS "local_repository(name="][RIGHT_D_QUOTE "\""][LIT_CHARS remote][RIGHT_D_QUOTE "\""][LIT_CHARS ", path="][RIGHT_D_QUOTE "\""][VarSub remote_path][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS module1/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package(default_visibility = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "//visibility:public"][RIGHT_D_QUOTE "\""][LIT_CHARS "])\n"][LIT_CHARS "py_library(name = "][RIGHT_D_QUOTE "\""][LIT_CHARS fib][RIGHT_D_QUOTE "\""][LIT_CHARS ", srcs=["][RIGHT_D_QUOTE "\""][LIT_CHARS fib.py][RIGHT_D_QUOTE "\""][LIT_CHARS "],)\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS module2/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "py_binary(name = "][RIGHT_D_QUOTE "\""][LIT_CHARS bez][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " deps = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "@remote//module_a:foo"][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][LIT_CHARS "@remote//module_b:bar"][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][LIT_CHARS "//module1:fib"][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS bez.py][RIGHT_D_QUOTE "\""][LIT_CHARS "],)\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS module1/fib.py]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def Fib(n):\n"][LIT_CHARS " if n == 0 or n == 1:\n"][LIT_CHARS " return 1\n"][LIT_CHARS " else:\n"][LIT_CHARS " return Fib(n-1) + Fib(n-2)\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS module2/bez.py]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "from remote.module_a import foo\n"][LIT_CHARS "from remote.module_b import bar\n"][LIT_CHARS "from module1 import fib\n"][LIT_CHARS "\n"][LIT_CHARS "print "][RIGHT_D_QUOTE "\""][LIT_CHARS "The number is %d"][RIGHT_D_QUOTE "\""][LIT_CHARS " % foo.GetNumber()\n"][LIT_CHARS "bar.PrintNumber()\n"][LIT_CHARS "print "][RIGHT_D_QUOTE "\""][LIT_CHARS "Fib(10) is %d"][RIGHT_D_QUOTE "\""][LIT_CHARS " % fib.Fib(10)\n"]]} 0), > ) (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //module2] [LIT_OTHER ":"] [LIT_CHARS bez]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "The number is 42"]]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Print the number 42"]]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Fib(10) is 89"]]}) (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_OTHER "@"] [LIT_CHARS remote//module_b] [LIT_OTHER ":"] [LIT_CHARS bar2]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "The number is 42"]]}) ) ) (FunctionDef test_build_with_aliased_input_file [] (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 "exports_files(['f'])\n"][LIT_CHARS "alias(name='a', actual=':f')\n"]]} 0), > ) (Com {[LIT_CHARS touch]} {[LIT_CHARS a/f]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //a] [LIT_OTHER ":"] [LIT_CHARS a]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) ) ) (FunctionDef test_visibility [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS visibility]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS visibility/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "cc_library(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS foo][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " visibility = [\n"][LIT_CHARS " "][RIGHT_D_QUOTE "\""][LIT_CHARS "//foo/bar:__pkg__"][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " "][RIGHT_D_QUOTE "\""][LIT_CHARS "//visibility:public"][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " ],\n"][LIT_CHARS ")\n"]]} 0), > ) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //visibility] [LIT_OTHER ":"] [LIT_CHARS foo]}) ) (AndOr OP_AND_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected failure"]]}) (Com {[LIT_CHARS true]}) ) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Public or private visibility labels (e.g. //visibility:public or //visibility:private) cannot be used in combination with other labels"]]}) ) ) (Com {[LIT_CHARS run_suite]} {[DQ [LIT_CHARS "rules test"]]}) )