(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 /../shell_utils.sh]]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "shell_utils.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 /../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 set]} {[LIT_CHARS -eu]}) (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('runfiles_relative_javabase', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS add_to_bazelrc]} {[DQ [LIT_CHARS "build --package_path=%workspace%"]]}) (FunctionDef setup_local_jdk [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('dest', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('src', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /][VarSub runfiles_relative_javabase]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub dest]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "mkdir -p "][VarSub dest]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS cp]} {[LIT_CHARS -LR]} {[DQ [VarSub src]] [LIT_CHARS /] [LIT_OTHER "*"]} {[DQ [VarSub dest]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "cp -LR "][\ LIT_ESCAPED_CHAR "\\\""][VarSub src][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "/* "][\ LIT_ESCAPED_CHAR "\\\""][VarSub dest][\ LIT_ESCAPED_CHAR "\\\""]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS chmod]} {[LIT_CHARS -R]} {[LIT_CHARS ug] [LIT_OTHER "+"] [LIT_CHARS rwX]} {[DQ [VarSub dest]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "chmod -R ug+rwX "][\ LIT_ESCAPED_CHAR "\\\""][VarSub dest][\ LIT_ESCAPED_CHAR "\\\""]]}) ) ) ) (FunctionDef write_hello_world_files [] (List (= scope= flags=0 words=[] bindings=[('pkg', {[DQ [VarSub 1]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub pkg] [LIT_CHARS /java/hello]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS mkdir]]}) ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/hello/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "java_binary(name = 'hello',\n"][LIT_CHARS " srcs = ['Hello.java'],\n"][LIT_CHARS " main_class = 'hello.Hello')\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/hello/Hello.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package hello;\n"][LIT_CHARS "public class Hello {\n"][LIT_CHARS " public static void main(String[] args) {\n"][LIT_CHARS " System.out.println("][RIGHT_D_QUOTE "\""][LIT_CHARS "Hello, World!"][RIGHT_D_QUOTE "\""][LIT_CHARS ");\n"][LIT_CHARS " }\n"][LIT_CHARS "}\n"]]} 0), > ) ) ) (FunctionDef write_hello_world_files_for_singlejar [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub 1]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub pkg] [LIT_CHARS /java/hello]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS mkdir]]}) ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/hello/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "java_binary(name = 'hello',\n"][LIT_CHARS " srcs = ['Hello.java'],\n"][LIT_CHARS " main_class = 'hello.Hello')\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/hello/Hello.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package hello;\n"][LIT_CHARS "import java.util.Properties;\n"][LIT_CHARS "public class Hello {\n"][LIT_CHARS " private static void printMap(Properties p) {\n"][LIT_CHARS " System.err.println("][RIGHT_D_QUOTE "\""][LIT_CHARS "Available keys and values are:"][RIGHT_D_QUOTE "\""][LIT_CHARS ");\n"][LIT_CHARS " for (Object key : p.keySet()) {\n"][LIT_CHARS " System.err.printf("][RIGHT_D_QUOTE "\""][LIT_CHARS " '%s': '%s'%n"][RIGHT_D_QUOTE "\""][LIT_CHARS ", key, p.get(key));\n"][LIT_CHARS " }\n"][LIT_CHARS " }\n"][LIT_CHARS "\n"][LIT_CHARS " public static void main(String[] args) throws Exception {\n"][LIT_CHARS " Properties properties = new Properties();\n"][LIT_CHARS " properties.load(Hello.class.getResourceAsStream("][RIGHT_D_QUOTE "\""][LIT_CHARS /build-data.properties][RIGHT_D_QUOTE "\""][LIT_CHARS "));\n"][LIT_CHARS " for (String arg : args) {\n"][LIT_CHARS " String[] keyValue = arg.split("][RIGHT_D_QUOTE "\""][LIT_CHARS "="][RIGHT_D_QUOTE "\""][LIT_CHARS ", 2);\n"][LIT_CHARS " Object value = properties.get(keyValue[0]);\n"][LIT_CHARS " if (value == null) {\n"][LIT_CHARS " System.err.println("][RIGHT_D_QUOTE "\""][LIT_CHARS "Key '"][RIGHT_D_QUOTE "\""][LIT_CHARS " + keyValue[0] + "][RIGHT_D_QUOTE "\""][LIT_CHARS "' not found"][RIGHT_D_QUOTE "\""][LIT_CHARS ");\n"][LIT_CHARS " printMap(properties);\n"][LIT_CHARS " return;\n"][LIT_CHARS " }\n"][LIT_CHARS " if (keyValue.length > 1 && !keyValue[1].equals(value)) {\n"][LIT_CHARS " System.err.println("][RIGHT_D_QUOTE "\""][LIT_CHARS "Value for key '"][RIGHT_D_QUOTE "\""][LIT_CHARS " + keyValue[0] + "][RIGHT_D_QUOTE "\""][LIT_CHARS "' is '"][RIGHT_D_QUOTE "\""][LIT_CHARS " + value\n"][LIT_CHARS " + "][RIGHT_D_QUOTE "\""][LIT_CHARS "' while it should be '"][RIGHT_D_QUOTE "\""][LIT_CHARS " + keyValue[1] + "][RIGHT_D_QUOTE "\""][LIT_CHARS "'"][RIGHT_D_QUOTE "\""][LIT_CHARS ");\n"][LIT_CHARS " printMap(properties);\n"][LIT_CHARS " return;\n"][LIT_CHARS " }\n"][LIT_CHARS " }\n"][LIT_CHARS " System.out.println("][RIGHT_D_QUOTE "\""][LIT_CHARS "Hello, World!"][RIGHT_D_QUOTE "\""][LIT_CHARS ");\n"][LIT_CHARS " }\n"][LIT_CHARS "}\n"]]} 0), > ) ) ) (FunctionDef write_hello_library_files [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub 1]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub pkg] [LIT_CHARS /java/main]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS mkdir]]}) ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/main/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "java_binary(\n"][LIT_CHARS " name = 'main',\n"][LIT_CHARS " deps = ['//"][VarSub pkg][LIT_CHARS "/java/hello_library'],\n"][LIT_CHARS " srcs = ['Main.java'],\n"][LIT_CHARS " main_class = 'main.Main',\n"][LIT_CHARS " deploy_manifest_lines = ['k1: v1', 'k2: v2'])\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/main/Main.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package main;\n"][LIT_CHARS "import hello_library.HelloLibrary;\n"][LIT_CHARS "public class Main {\n"][LIT_CHARS " public static void main(String[] args) {\n"][LIT_CHARS " HelloLibrary.funcHelloLibrary();\n"][LIT_CHARS " System.out.println("][RIGHT_D_QUOTE "\""][LIT_CHARS "Hello, World!"][RIGHT_D_QUOTE "\""][LIT_CHARS ");\n"][LIT_CHARS " }\n"][LIT_CHARS "}\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub pkg] [LIT_CHARS /java/hello_library]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS mkdir]]}) ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/hello_library/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package(default_visibility=['//visibility:public'])\n"][LIT_CHARS "java_library(name = 'hello_library',\n"][LIT_CHARS " srcs = ['HelloLibrary.java']);\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/hello_library/HelloLibrary.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package hello_library;\n"][LIT_CHARS "public class HelloLibrary {\n"][LIT_CHARS " public static void funcHelloLibrary() {\n"][LIT_CHARS " System.out.print("][RIGHT_D_QUOTE "\""][LIT_CHARS "Hello, Library!;"][RIGHT_D_QUOTE "\""][LIT_CHARS ");\n"][LIT_CHARS " }\n"][LIT_CHARS "}\n"]]} 0), > ) ) ) (FunctionDef write_hello_sailor_files [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub 1]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub pkg] [LIT_CHARS /java/hellosailor]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS mkdir]]}) ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/hellosailor/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "java_binary(name = 'hellosailor',\n"][LIT_CHARS " srcs = ['HelloSailor.java'],\n"][LIT_CHARS " create_executable = 0)\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/hellosailor/HelloSailor.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package hellosailor;\n"][LIT_CHARS "public class HelloSailor {\n"][LIT_CHARS " public static int addtwoNumbers(int a, int b) {\n"][LIT_CHARS " return a + b;\n"][LIT_CHARS " }\n"][LIT_CHARS "}\n"]]} 0), > ) ) ) (FunctionDef test_compiles_hello_world [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[DQ [VarSub pkg]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "mkdir "][VarSub pkg]]}) ) (Com {[LIT_CHARS write_hello_world_files]} {[DQ [VarSub pkg]]}) (Com {[LIT_CHARS bazel]} {[LIT_CHARS clean]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/hello] [LIT_OTHER ":"] [LIT_CHARS hello]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) (AndOr OP_OR_IF (Pipeline (Com {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/hello/hello]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[SQ ]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "comparison failed"]]}) ) (FunctionDef check_deploy_jar_should_not_exist [] (List (AndOr OP_AND_IF (Com {[DQ [VarSub @]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "deploy jar should not exist"]]}) ) (Com {[LIT_CHARS true]}) ) ) (FunctionDef check_arglists [] (List (Com {[LIT_CHARS check_deploy_jar_should_not_exist]} {[DQ [VarSub @]]} {[LIT_CHARS --singlejar]}) (Com {[LIT_CHARS check_deploy_jar_should_not_exist]} {[DQ [VarSub @]]} {[LIT_CHARS --wrapper_script_flag] [LIT_OTHER "="] [LIT_CHARS --singlejar]}) (Com {[LIT_CHARS check_deploy_jar_should_not_exist]} {[DQ [VarSub @]]} {[LIT_CHARS REGULAR_ARG]} {[LIT_CHARS --wrapper_script_flag] [LIT_OTHER "="] [LIT_CHARS --singlejar]}) ) ) (Com {[LIT_CHARS check_arglists]} {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/hello] [LIT_OTHER ":"] [LIT_CHARS hello]} {[LIT_CHARS --]}) (Com {[LIT_CHARS check_arglists]} {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/hello/hello]}) ) ) (FunctionDef test_compiles_hello_world_from_deploy_jar [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[DQ [VarSub pkg]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "mkdir "][VarSub pkg]]}) ) (Com {[LIT_CHARS write_hello_world_files]} {[DQ [VarSub pkg]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/hello] [LIT_OTHER ":"] [LIT_CHARS hello_deploy.jar]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) (AndOr OP_OR_IF (Pipeline (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/hello] [LIT_OTHER ":"] [LIT_CHARS hello]} {[LIT_CHARS --]} {[LIT_CHARS --singlejar]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[SQ ]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "comparison failed"]]}) ) (AndOr OP_OR_IF (Pipeline (Com {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/hello/hello]} {[LIT_CHARS --]} {[LIT_CHARS --singlejar]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[SQ ]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "comparison failed"]]}) ) (AndOr OP_OR_IF (Pipeline (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/hello] [LIT_OTHER ":"] [LIT_CHARS hello]} {[LIT_CHARS --]} {[LIT_CHARS --wrapper_script_flag] [LIT_OTHER "="] [LIT_CHARS --singlejar]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[SQ ]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "comparison failed"]]}) ) (AndOr OP_OR_IF (Pipeline (Com {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/hello/hello]} {[LIT_CHARS --]} {[LIT_CHARS --wrapper_script_flag] [LIT_OTHER "="] [LIT_CHARS --singlejar]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[SQ ]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "comparison failed"]]}) ) (AndOr OP_OR_IF (Pipeline (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/hello] [LIT_OTHER ":"] [LIT_CHARS hello]} {[LIT_CHARS --]} {[LIT_CHARS REGULAR_ARG]} {[LIT_CHARS --wrapper_script_flag] [LIT_OTHER "="] [LIT_CHARS --singlejar]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[SQ ]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "comparison failed"]]}) ) (AndOr OP_OR_IF (Pipeline (Com {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/hello/hello]} {[LIT_CHARS --]} {[LIT_CHARS REGULAR_ARG]} {[LIT_CHARS --wrapper_script_flag] [LIT_OTHER "="] [LIT_CHARS --singlejar]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[SQ ]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "comparison failed"]]}) ) ) ) (FunctionDef test_explicit_bogus_wrapper_args_are_rejected [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[DQ [VarSub pkg]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "mkdir "][VarSub pkg]]}) ) (Com {[LIT_CHARS write_hello_world_files]} {[DQ [VarSub pkg]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/hello] [LIT_OTHER ":"] [LIT_CHARS hello_deploy.jar]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) (FunctionDef check_arg_rejected [] (List (AndOr OP_AND_IF (Com {[DQ [VarSub @]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "bogus arg should be rejected"]]}) ) (Com {[LIT_CHARS true]}) ) ) (FunctionDef check_arglists [] (List (Com {[LIT_CHARS check_arg_rejected]} {[DQ [VarSub @]]} {[LIT_CHARS --wrapper_script_flag] [LIT_OTHER "="] [LIT_CHARS --bogus]}) (Com {[LIT_CHARS check_arg_rejected]} {[DQ [VarSub @]]} {[LIT_CHARS REGULAR_ARG]} {[LIT_CHARS --wrapper_script_flag] [LIT_OTHER "="] [LIT_CHARS --bogus]}) ) ) (Com {[LIT_CHARS check_arglists]} {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/hello] [LIT_OTHER ":"] [LIT_CHARS hello]} {[LIT_CHARS --]}) (Com {[LIT_CHARS check_arglists]} {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/hello/hello]}) ) ) (FunctionDef assert_singlejar_works [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('copy_jdk', {[DQ [VarSub 2]]})]) (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('stamp_arg', {[DQ [VarSub 3]]})]) (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('embed_label', {[DQ [VarSub 4]]})]) (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('expected_build_data', {[DQ [VarSub 5]]})]) (Com {[LIT_CHARS write_hello_world_files_for_singlejar]} {[DQ [VarSub pkg]]}) (If (Com {[DQ [VarSub copy_jdk]]}) (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('local_jdk', {[DQ [VarSub pkg][LIT_CHARS /my_jdk]]})]) (Com {[LIT_CHARS setup_local_jdk]} {[DQ [VarSub local_jdk]]}) (Com {[LIT_CHARS ln]} {[LIT_CHARS -s]} {[DQ [LIT_CHARS my_jdk]]} {[DQ [VarSub pkg][LIT_CHARS /my_jdk.symlink]]}) (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('javabase', {[DQ [ComSub (Com {[LIT_CHARS get_real_path]} {[DQ [VarSub pkg][LIT_CHARS /my_jdk.symlink]]})]]})]) ) (ElseTrue) (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('javabase', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /][VarSub runfiles_relative_javabase]]})]) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/hello] [LIT_OTHER ":"] [LIT_CHARS hello]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/hello] [LIT_OTHER ":"] [LIT_CHARS hello_deploy.jar]} {[DQ [VarSub stamp_arg]]} {[LIT_CHARS --javabase] [LIT_OTHER "="] [DQ [VarSub javabase]]} {[DQ [VarSub embed_label]]} < (DescriptorRedirectNode target={[DQ [VarSub TEST_log]]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Build failed"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[VarSub pkg] [LIT_CHARS /ugly/]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "mkdir failed"]]}) ) (Com {[LIT_CHARS cp]} {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/hello/hello]} {[VarSub pkg] [LIT_CHARS /ugly/]}) (Com {[LIT_CHARS cp]} {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/hello/hello_deploy.jar]} {[VarSub pkg] [LIT_CHARS /ugly/]}) (Com {[VarSub pkg] [LIT_CHARS /ugly/hello]} {[LIT_CHARS build.target]} {[LIT_CHARS build.time]} {[LIT_CHARS build.timestamp]} {[LIT_CHARS main.class] [LIT_OTHER "="] [LIT_CHARS hello.Hello]} {[DQ [VarSub expected_build_data]]} < (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), (FilenameRedirectNode filename={[VarSub TEST_log]} >"> 1), > ) (Com {[LIT_CHARS expect_log]} {[SQ ]}) ) ) (FunctionDef test_singlejar_with_default_jdk_with_stamp [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (Com {[LIT_CHARS assert_singlejar_works]} {[DQ [VarSub pkg]]} {[LIT_CHARS true]} {[DQ [LIT_CHARS --stamp]]} {[DQ [LIT_CHARS "--embed_label=toto"]]} {[DQ [LIT_CHARS "build.label=toto"]]}) ) ) (FunctionDef test_singlejar_with_default_jdk_without_stamp [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (Com {[LIT_CHARS assert_singlejar_works]} {[DQ [VarSub pkg]]} {[LIT_CHARS true]} {[DQ [LIT_CHARS --nostamp]]} {[DQ [LIT_CHARS "--embed_label="]]} {[DQ [LIT_CHARS "build.timestamp.as.int=0"]]}) ) ) (FunctionDef test_singlejar_with_custom_jdk_with_stamp [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (Com {[LIT_CHARS assert_singlejar_works]} {[DQ [VarSub pkg]]} {[LIT_CHARS false]} {[DQ [LIT_CHARS --stamp]]} {[DQ [LIT_CHARS "--embed_label=toto"]]} {[DQ [LIT_CHARS "build.label=toto"]]}) ) ) (FunctionDef test_singlejar_with_custom_jdk_without_stamp [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (Com {[LIT_CHARS assert_singlejar_works]} {[DQ [VarSub pkg]]} {[LIT_CHARS false]} {[DQ [LIT_CHARS --nostamp]]} {[DQ [LIT_CHARS "--embed_label="]]} {[DQ [LIT_CHARS "build.timestamp.as.int=0"]]}) ) ) (FunctionDef test_deterministic_nostamp_build [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[DQ [VarSub pkg]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "mkdir "][VarSub pkg]]}) ) (Com {[LIT_CHARS write_hello_world_files]} {[DQ [VarSub pkg]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS clean]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Clean failed"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS --nostamp]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/hello] [LIT_OTHER ":"] [LIT_CHARS hello_deploy.jar]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Build failed"]]}) ) (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('first_run', {[DQ [ComSub (Com {[LIT_CHARS md5_file]} {[ComSub (Pipeline (Com {[LIT_CHARS find]} {[DQ [VarSub PRODUCT_NAME][LIT_CHARS -out/]]} {[LIT_CHARS -type]} {[LIT_CHARS f]} {[SQ ]} {[LIT_CHARS -name]} {[LIT_CHARS build-changelist.txt]} {[LIT_CHARS -a]} {[SQ ]} {[LIT_CHARS -name]} {[LIT_CHARS volatile-status.txt]}) (Com {[LIT_CHARS sort]} {[LIT_CHARS -u]}) )]})]]})]) (Com {[LIT_CHARS sleep]} {[LIT_CHARS 1]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS clean]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Clean failed"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS --nostamp]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/hello] [LIT_OTHER ":"] [LIT_CHARS hello_deploy.jar]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Build failed"]]}) ) (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('second_run', {[DQ [ComSub (Com {[LIT_CHARS md5_file]} {[ComSub (Pipeline (Com {[LIT_CHARS find]} {[DQ [VarSub PRODUCT_NAME][LIT_CHARS -out/]]} {[LIT_CHARS -type]} {[LIT_CHARS f]} {[SQ ]} {[LIT_CHARS -name]} {[LIT_CHARS build-changelist.txt]} {[LIT_CHARS -a]} {[SQ ]} {[LIT_CHARS -name]} {[LIT_CHARS volatile-status.txt]}) (Com {[LIT_CHARS sort]} {[LIT_CHARS -u]}) )]})]]})]) (Com {[LIT_CHARS assert_equals]} {[DQ [VarSub first_run]]} {[DQ [VarSub second_run]]}) ) ) (FunctionDef test_compiles_hello_library [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[DQ [VarSub pkg]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "mkdir "][VarSub pkg]]}) ) (Com {[LIT_CHARS write_hello_library_files]} {[DQ [VarSub pkg]]}) (Com {[LIT_CHARS bazel]} {[LIT_CHARS clean]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/main] [LIT_OTHER ":"] [LIT_CHARS main]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) (AndOr OP_OR_IF (Pipeline (Com {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/main/main]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[DQ [LIT_CHARS "Hello, Library!;Hello, World!"]]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "comparison failed"]]}) ) (AndOr OP_AND_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/main] [LIT_OTHER ":"] [LIT_CHARS main]} {[LIT_CHARS --]} {[LIT_CHARS --singlejar]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "deploy jar should not exist"]]}) ) (Com {[LIT_CHARS true]}) ) ) (FunctionDef test_compiles_hello_library_using_ijars [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[DQ [VarSub pkg]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "mkdir "][VarSub pkg]]}) ) (Com {[LIT_CHARS write_hello_library_files]} {[DQ [VarSub pkg]]}) (Com {[LIT_CHARS bazel]} {[LIT_CHARS clean]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS --use_ijars]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/main] [LIT_OTHER ":"] [LIT_CHARS main]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) (AndOr OP_OR_IF (Pipeline (Com {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/main/main]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[DQ [LIT_CHARS "Hello, Library!;Hello, World!"]]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "comparison failed"]]}) ) ) ) (FunctionDef test_compiles_hello_library_from_deploy_jar [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[DQ [VarSub pkg]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "mkdir "][VarSub pkg]]}) ) (Com {[LIT_CHARS write_hello_library_files]} {[DQ [VarSub pkg]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/main] [LIT_OTHER ":"] [LIT_CHARS main_deploy.jar]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) (AndOr OP_OR_IF (Pipeline (Com {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/main/main]} {[LIT_CHARS --singlejar]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[DQ [LIT_CHARS "Hello, Library!;Hello, World!"]]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "comparison failed"]]}) ) (AndOr OP_OR_IF (Pipeline (Com {[LIT_CHARS unzip]} {[LIT_CHARS -p]} {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/main/main_deploy.jar]} {[LIT_CHARS META-INF/MANIFEST.MF]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[DQ [LIT_CHARS "k1: v1"]]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "missing manifest lines"]]}) ) (AndOr OP_OR_IF (Pipeline (Com {[LIT_CHARS unzip]} {[LIT_CHARS -p]} {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/main/main_deploy.jar]} {[LIT_CHARS META-INF/MANIFEST.MF]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[DQ [LIT_CHARS "k2: v2"]]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "missing manifest lines"]]}) ) ) ) (FunctionDef test_building_deploy_jar_twice_does_not_rebuild [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[DQ [VarSub pkg]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "mkdir "][VarSub pkg]]}) ) (Com {[LIT_CHARS write_hello_library_files]} {[DQ [VarSub pkg]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/main] [LIT_OTHER ":"] [LIT_CHARS main_deploy.jar]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) (Com {[LIT_CHARS touch]} {[LIT_CHARS old]} {[LIT_CHARS -r]} {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/main/main_deploy.jar]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/main] [LIT_OTHER ":"] [LIT_CHARS main_deploy.jar]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) (AndOr OP_AND_IF (Pipeline (Com {[LIT_CHARS find]} {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/main/main_deploy.jar]} {[LIT_CHARS -newer]} {[LIT_CHARS old]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[LIT_CHARS .]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "file was rebuilt"]]}) ) (Com {[LIT_CHARS true]}) ) ) (FunctionDef test_does_not_create_executable_when_not_asked_for [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[DQ [VarSub pkg]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "mkdir "][VarSub pkg]]}) ) (Com {[LIT_CHARS write_hello_sailor_files]} {[DQ [VarSub pkg]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/hellosailor] [LIT_OTHER ":"] [LIT_CHARS hellosailor_deploy.jar]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) (If (DBracket {B! {B1 UNARY_FILE_e {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/hellosailor/hellosailor.jar]}}}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "output jar does not exist"]]}) ) (If (DBracket {B1 UNARY_FILE_e {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/hellosailor/hellosailor]}}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "output executable should not exist"]]}) ) (If (DBracket {B! {B1 UNARY_FILE_e {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/hellosailor/hellosailor_deploy.jar]}}}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "output deploy jar does not exist"]]}) ) ) ) (FunctionDef test_building_deploy_jar_dependent_on_deploy_jar [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub pkg] [LIT_CHARS /java/deploy]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS mkdir]]}) ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/deploy/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "java_binary(name = 'Hello',\n"][LIT_CHARS " srcs = ['Hello.java'],\n"][LIT_CHARS " deps = ['Other_deploy.jar'],\n"][LIT_CHARS " main_class = 'hello.Hello')\n"][LIT_CHARS "java_binary(name = 'Other',\n"][LIT_CHARS " resources = ['//"][VarSub pkg][LIT_CHARS "/hello:Test.txt'],\n"][LIT_CHARS " main_class = 'none')\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/deploy/Hello.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package deploy;\n"][LIT_CHARS "public class Hello {\n"][LIT_CHARS " public static void main(String[] args) {\n"][LIT_CHARS " System.out.println("][RIGHT_D_QUOTE "\""][LIT_CHARS "Hello, World!"][RIGHT_D_QUOTE "\""][LIT_CHARS ");\n"][LIT_CHARS " }\n"][LIT_CHARS "}\n"]]} 0), > ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub pkg] [LIT_CHARS /hello]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "exports_files(['Test.txt'])"]]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /hello/BUILD]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Some other File"]]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /hello/Test.txt]} "> 1), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/deploy] [LIT_OTHER ":"] [LIT_CHARS Hello_deploy.jar]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) (AndOr OP_OR_IF (Pipeline (Com {[LIT_CHARS unzip]} {[LIT_CHARS -p]} {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/deploy/Hello_deploy.jar]} {[VarSub pkg] [LIT_CHARS /hello/Test.txt]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[DQ [LIT_CHARS "Some other File"]]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "missing resource"]]}) ) ) ) (FunctionDef test_wrapper_script_arg_handling [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub pkg] [LIT_CHARS /java/hello/]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected success"]]}) ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/hello/Test.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package hello;\n"][LIT_CHARS "public class Test {\n"][LIT_CHARS " public static void main(String[] args) {\n"][LIT_CHARS " System.out.print("][RIGHT_D_QUOTE "\""][LIT_CHARS "Args:"][RIGHT_D_QUOTE "\""][LIT_CHARS ");\n"][LIT_CHARS " for (String arg : args) {\n"][LIT_CHARS " System.out.print("][RIGHT_D_QUOTE "\""][LIT_CHARS " '"][RIGHT_D_QUOTE "\""][LIT_CHARS " + arg + "][RIGHT_D_QUOTE "\""][LIT_CHARS "'"][RIGHT_D_QUOTE "\""][LIT_CHARS ");\n"][LIT_CHARS " }\n"][LIT_CHARS " System.out.println();\n"][LIT_CHARS " }\n"][LIT_CHARS "}\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/hello/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "java_binary(name='hello', srcs=['Test.java'], main_class='hello.Test')\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/hello] [LIT_OTHER ":"] [LIT_CHARS hello]} {[LIT_CHARS --]} {[SQ ]} {[LIT_CHARS foo]} {[SQ ]} {[SQ ]} {[SQ ]} {[SQ ]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Build failed"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Args: '' 'foo' '' '' 'bar quux' ''"]]}) ) ) (FunctionDef test_srcjar_compilation [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub pkg] [LIT_CHARS /java/hello/]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected success"]]}) ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/hello/Test.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package hello;\n"][LIT_CHARS "public class Test {\n"][LIT_CHARS " public static void main(String[] args) {\n"][LIT_CHARS " System.out.println("][RIGHT_D_QUOTE "\""][LIT_CHARS "Hello World!"][RIGHT_D_QUOTE "\""][LIT_CHARS ");\n"][LIT_CHARS " }\n"][LIT_CHARS "}\n"]]} 0), > ) (Com {[LIT_CHARS cd]} {[VarSub pkg]}) (AndOr OP_OR_IF (Com {[LIT_CHARS zip]} {[LIT_CHARS -q]} {[LIT_CHARS java/hello/test.srcjar]} {[LIT_CHARS java/hello/Test.java]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "zip failed"]]}) ) (Com {[LIT_CHARS cd]} {[LIT_CHARS ..]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/hello/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "java_binary(name='hello', srcs=['test.srcjar'], main_class='hello.Test')\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/hello] [LIT_OTHER ":"] [LIT_CHARS hello]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/hello] [LIT_OTHER ":"] [LIT_CHARS hello_deploy.jar]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected success"]]}) ) (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/hello] [LIT_OTHER ":"] [LIT_CHARS hello]} {[LIT_CHARS --]} {[LIT_CHARS --singlejar]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Hello World!"]]}) ) ) (FunctionDef test_private_initializers [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub pkg] [LIT_CHARS /java/hello/]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected success"]]}) ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/hello/A.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package hello;\n"][LIT_CHARS "public class A { private B b; }\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/hello/B.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package hello;\n"][LIT_CHARS "public class B { private C c; }\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/hello/C.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package hello;\n"][LIT_CHARS "public class C {}\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/hello/App.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package hello;\n"][LIT_CHARS "public class App { }\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/hello/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "java_library(name = 'app',\n"][LIT_CHARS " srcs = ['App.java'],\n"][LIT_CHARS " deps = [':a'])\n"][LIT_CHARS "\n"][LIT_CHARS "java_library(name = 'a',\n"][LIT_CHARS " srcs = ['A.java'],\n"][LIT_CHARS " deps = [':b'])\n"][LIT_CHARS "\n"][LIT_CHARS "java_library(name = 'b',\n"][LIT_CHARS " srcs = ['B.java'],\n"][LIT_CHARS " deps = [':c'])\n"][LIT_CHARS "\n"][LIT_CHARS "java_library(name = 'c',\n"][LIT_CHARS " srcs = ['C.java'])\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/hello] [LIT_OTHER ":"] [LIT_CHARS app]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected success"]]}) ) ) ) (FunctionDef test_java_plugin [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub pkg] [LIT_CHARS /java/test/processor]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS mkdir]]}) ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/test/processor/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package(default_visibility=['//visibility:public'])\n"][LIT_CHARS "\n"][LIT_CHARS "java_library(name = 'annotation',\n"][LIT_CHARS " srcs = [ 'TestAnnotation.java' ])\n"][LIT_CHARS "\n"][LIT_CHARS "java_library(name = 'processor_dep',\n"][LIT_CHARS " srcs = [ 'ProcessorDep.java' ])\n"][LIT_CHARS "\n"][LIT_CHARS "java_plugin(name = 'processor',\n"][LIT_CHARS " processor_class = 'test.processor.Processor',\n"][LIT_CHARS " deps = [ ':annotation', ':processor_dep' ],\n"][LIT_CHARS " srcs = [ 'Processor.java' ])\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/test/processor/TestAnnotation.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package test.processor;\n"][LIT_CHARS "import java.lang.annotation.*;\n"][LIT_CHARS "@Target(value = {ElementType.TYPE})\n"][LIT_CHARS "\n"][LIT_CHARS "public @interface TestAnnotation {\n"][LIT_CHARS "}\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/test/processor/ProcessorDep.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package test.processor;\n"][LIT_CHARS "\n"][LIT_CHARS "class ProcessorDep {\n"][LIT_CHARS " static String value = "][RIGHT_D_QUOTE "\""][LIT_CHARS DependencyValue][RIGHT_D_QUOTE "\""][LIT_CHARS ";\n"][LIT_CHARS "}\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/test/processor/Processor.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package test.processor;\n"][LIT_CHARS "import java.util.*;\n"][LIT_CHARS "import java.io.*;\n"][LIT_CHARS "import javax.annotation.processing.*;\n"][LIT_CHARS "import javax.tools.*;\n"][LIT_CHARS "import javax.lang.model.*;\n"][LIT_CHARS "import javax.lang.model.element.*;\n"][LIT_CHARS "@SupportedAnnotationTypes(value= {"][RIGHT_D_QUOTE "\""][LIT_CHARS test.processor.TestAnnotation][RIGHT_D_QUOTE "\""][LIT_CHARS "})\n"][LIT_CHARS "public class Processor extends AbstractProcessor {\n"][LIT_CHARS " private static final String OUTFILE_CONTENT = "][RIGHT_D_QUOTE "\""][LIT_CHARS "package test;"][\ LIT_ESCAPED_CHAR "\\n"][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"][LIT_CHARS " + "][RIGHT_D_QUOTE "\""][LIT_CHARS "public class Generated {"][\ LIT_ESCAPED_CHAR "\\n"][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"][LIT_CHARS " + "][RIGHT_D_QUOTE "\""][LIT_CHARS " public static String value = "][\ LIT_ESCAPED_CHAR "\\\""][RIGHT_D_QUOTE "\""][LIT_CHARS " + ProcessorDep.value + "][RIGHT_D_QUOTE "\""][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ";"][\ LIT_ESCAPED_CHAR "\\n"][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"][LIT_CHARS " + "][RIGHT_D_QUOTE "\""][LIT_CHARS "}"][RIGHT_D_QUOTE "\""][LIT_CHARS ";\n"][LIT_CHARS " private ProcessingEnvironment mainEnvironment;\n"][LIT_CHARS " public void init(ProcessingEnvironment environment) {\n"][LIT_CHARS " mainEnvironment = environment;\n"][LIT_CHARS " }\n"][LIT_CHARS " public boolean process(Set annotations,\n"][LIT_CHARS " RoundEnvironment roundEnv) {\n"][LIT_CHARS " Filer filer = mainEnvironment.getFiler();\n"][LIT_CHARS " try {\n"][LIT_CHARS " FileObject output = filer.createSourceFile("][RIGHT_D_QUOTE "\""][LIT_CHARS test.Generated][RIGHT_D_QUOTE "\""][LIT_CHARS ");\n"][LIT_CHARS " Writer writer = output.openWriter();\n"][LIT_CHARS " writer.append(OUTFILE_CONTENT);\n"][LIT_CHARS " writer.close();\n"][LIT_CHARS " } catch (IOException ex) {\n"][LIT_CHARS " return false;\n"][LIT_CHARS " }\n"][LIT_CHARS " return true;\n"][LIT_CHARS " }\n"][LIT_CHARS "}\n"]]} 0), > ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub pkg] [LIT_CHARS /java/test/client]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/test/client/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "java_library(name = 'client',\n"][LIT_CHARS " srcs = [ 'ProcessorClient.java' ],\n"][LIT_CHARS " deps = [ '//"][VarSub pkg][LIT_CHARS "/java/test/processor:annotation' ],\n"][LIT_CHARS " plugins = [ '//"][VarSub pkg][LIT_CHARS "/java/test/processor:processor' ])\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/test/client/ProcessorClient.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package test.client;\n"][LIT_CHARS "import test.processor.TestAnnotation;\n"][LIT_CHARS "@TestAnnotation()\n"][LIT_CHARS "class ProcessorClient { }\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/test/client] [LIT_OTHER ":"] [LIT_CHARS client]} {[LIT_CHARS --use_ijars]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) (Com {[LIT_CHARS unzip]} {[LIT_CHARS -l]} {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/test/client/libclient.jar]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS " test/Generated.class"]]} {[DQ [LIT_CHARS "missing class file from annotation processing"]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/test/client] [LIT_OTHER ":"] [LIT_CHARS libclient-src.jar]} {[LIT_CHARS --use_ijars]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) (Com {[LIT_CHARS unzip]} {[LIT_CHARS -l]} {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/test/client/libclient-src.jar]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS " test/Generated.java"]]} {[DQ [LIT_CHARS "missing source file from annotation processing"]]}) ) ) (FunctionDef test_jvm_flags_are_passed_verbatim [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub pkg] [LIT_CHARS /java/com/google/jvmflags]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS mkdir]]}) ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/com/google/jvmflags/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "java_binary(\n"] [LIT_CHARS " name = 'foo',\n"] [LIT_CHARS " srcs = ['Foo.java'],\n"] [LIT_CHARS " main_class = 'com.google.jvmflags.Foo',\n"] [LIT_CHARS " jvm_flags = [\n"] [LIT_CHARS " # test quoting\n"] [LIT_CHARS " '--a=\\'single_single\\'',\n"] [LIT_CHARS " '--b=\"single_double\"',\n"] [LIT_CHARS " \"--c='double_single'\",\n"] [LIT_CHARS " \"--d=\\\"double_double\\\"\",\n"] [LIT_CHARS " '--e=no_quotes',\n"] [LIT_CHARS " # no escaping expected\n"] [LIT_CHARS " '--f=stuff$$to\"escape\\\\',\n"] [LIT_CHARS " # test make variable expansion\n"] [LIT_CHARS " '--g=$(JAVABASE)',\n"] [LIT_CHARS " ],\n"] [LIT_CHARS ")\n"]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/com/google/jvmflags/Foo.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package com.google.jvmflags;\n"][LIT_CHARS "public class Foo { public static void main(String[] args) {} }\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/com/google/jvmflags] [LIT_OTHER ":"] [LIT_CHARS foo]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) (= scope= flags=0 words=[] bindings=[('STUBSCRIPT', {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/com/google/jvmflags/foo]})]) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -e]} {[VarSub STUBSCRIPT]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS fail]} {[DQ [VarSub STUBSCRIPT][LIT_CHARS " not found"]]}) ) (For flag [{[DQ [LIT_CHARS " --a='single_single' "]]}, {[DQ [LIT_CHARS " --b="][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS single_double][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " "]]}, {[DQ [LIT_CHARS " --c='double_single' "]]}, {[DQ [LIT_CHARS " --d="][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS double_double][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " "]]}, {[SQ ]}, {[SQ ]}, {[DQ [LIT_CHARS " --g="][VarSub runfiles_relative_javabase]]}]) (Com {[LIT_CHARS assert_contains]} {[VarSub flag]} {[VarSub STUBSCRIPT]}) ) ) ) (FunctionDef test_classpath_fiddling [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[DQ [VarSub pkg]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "mkdir "][VarSub pkg]]}) ) (Com {[LIT_CHARS write_hello_library_files]} {[DQ [VarSub pkg]]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub pkg] [LIT_CHARS /java/classpath]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/classpath/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "java_binary(name = 'classpath',\n"][LIT_CHARS " deps = ['//"][VarSub pkg][LIT_CHARS "/java/hello_library'],\n"][LIT_CHARS " srcs = ['Classpath.java'],\n"][LIT_CHARS " main_class = 'classpath.Classpath')\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/classpath/Classpath.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "package classpath;\n"] [LIT_CHARS "public class Classpath {\n"] [LIT_CHARS " public static void main(String[] args) {\n"] [LIT_CHARS " String cp = System.getProperty(\"java.class.path\");\n"] [LIT_CHARS " String[] jars = cp.split(\":\"); // TODO(bazel-team): this is \";\" on Windows\n"] [LIT_CHARS " boolean singlejar\n"] [LIT_CHARS " = (args.length > 1 && args[1].equals(\"SINGLEJAR\"));\n"] [LIT_CHARS " System.out.printf(\"CLASSPATH=%s%n\", cp);\n"] [LIT_CHARS " if (jars.length != 2 && !singlejar) {\n"] [LIT_CHARS " throw new Error(\"Unexpected class path length\");\n"] [LIT_CHARS " }\n"] [LIT_CHARS " String jarRegex = args[0];\n"] [LIT_CHARS " for (String jar : jars) {\n"] [LIT_CHARS " if (!jar.matches(jarRegex)) {\n"] [LIT_CHARS " throw new Error(\"No match for regex: \" + jarRegex);\n"] [LIT_CHARS " }\n"] [LIT_CHARS " if (!new java.io.File(jar).exists()) {\n"] [LIT_CHARS " throw new Error(\"No such file: \" + jar);\n"] [LIT_CHARS " }\n"] [LIT_CHARS " }\n"] [LIT_CHARS " }\n"] [LIT_CHARS "}\n"]} 0), > ) (Com {[LIT_CHARS bazel]} {[LIT_CHARS clean]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/classpath]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/classpath]} {[LIT_CHARS --]} {[DQ [LIT_CHARS "^"][VarSub pkg][LIT_CHARS "/java/(classpath|hello_library)/.*"][\ LIT_ESCAPED_CHAR "\\."][LIT_CHARS jar][\ LIT_ESCAPED_CHAR "\\$"]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "bazel run"]]}) ) (= scope= flags=0 words=[] bindings=[('PROG', {[DQ [VarSub PRODUCT_NAME][LIT_CHARS -bin/][VarSub pkg][LIT_CHARS /java/classpath/classpath]]})]) (FunctionDef check_classpath_invocations [] (List (AndOr OP_OR_IF (Com {[DQ [VarSub PROG]]} {[DQ [LIT_CHARS "^"][VarSub PRODUCT_NAME][LIT_CHARS "-bin/.*"][\ LIT_ESCAPED_CHAR "\\."][LIT_CHARS jar][\ LIT_ESCAPED_CHAR "\\$"]]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "direct run relative classpath "][VarSub *]]}) ) (AndOr OP_OR_IF (Com {[DQ [LIT_CHARS ./][VarSub PROG]]} {[DQ [LIT_CHARS "^"][\ LIT_ESCAPED_CHAR "\\."][LIT_CHARS /][VarSub PRODUCT_NAME][LIT_CHARS "-bin/.*"][\ LIT_ESCAPED_CHAR "\\."][LIT_CHARS jar][\ LIT_ESCAPED_CHAR "\\$"]]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "direct run '.'-relative classpath "][VarSub *]]}) ) (AndOr OP_OR_IF (Com {[DQ [VarSub PWD][LIT_CHARS /][VarSub PROG]]} {[DQ [LIT_CHARS "^"][VarSub PRODUCT_NAME][LIT_CHARS "-bin/.*"][\ LIT_ESCAPED_CHAR "\\."][LIT_CHARS jar][\ LIT_ESCAPED_CHAR "\\$"]]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "direct run absolute classpath "][VarSub *]]}) ) (AndOr OP_OR_IF (Subshell (List (= scope= flags=0 words=[] bindings=[('PROG', {[DQ [VarSub PWD][LIT_CHARS /][VarSub PROG]]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[LIT_CHARS /]}) (Com {[LIT_CHARS exec]} {[DQ [VarSub PROG]]} {[SQ ]} {[DQ [VarSub @]]}) ) ) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "direct run from / absolute classpath "][VarSub *]]}) ) ) ) (Com {[LIT_CHARS check_classpath_invocations]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/classpath] [LIT_OTHER ":"] [LIT_CHARS classpath_deploy.jar]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) (For prog [{[DQ [VarSub PROG]]}, {[DQ [LIT_CHARS ./][VarSub PROG]]}, {[DQ [VarSub PWD][LIT_CHARS /][VarSub PROG]]}]) (List (AndOr OP_OR_IF (Com {[DQ [VarSub prog]]} {[LIT_CHARS --singlejar]} {[SQ ]} {[DQ [LIT_CHARS SINGLEJAR]]}) (Com {[LIT_CHARS fail]} {[DQ [VarSub prog][LIT_CHARS " --singlejar"]]}) ) (AndOr OP_OR_IF (Com {[DQ [VarSub prog]]} {[SQ ]} {[DQ [LIT_CHARS SINGLEJAR]]} {[LIT_CHARS --wrapper_script_flag] [LIT_OTHER "="] [LIT_CHARS --singlejar]}) (Com {[LIT_CHARS fail]} {[DQ [VarSub prog][LIT_CHARS " --wrapper_script_flag=--singlejar"]]}) ) ) ) ) ) (FunctionDef test_java7 [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub pkg] [LIT_CHARS /java/foo/]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected success"]]}) ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/foo/Foo.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package foo;\n"][LIT_CHARS "import java.lang.invoke.MethodHandle; // In Java 7 class library only\n"][LIT_CHARS "import java.util.ArrayList;\n"][LIT_CHARS "public class Foo {\n"][LIT_CHARS " public static void main(String[] args) {\n"][LIT_CHARS " ArrayList list = new ArrayList<>(); // In Java 7 language only\n"][LIT_CHARS " System.out.println("][RIGHT_D_QUOTE "\""][LIT_CHARS "Success!"][RIGHT_D_QUOTE "\""][LIT_CHARS ");\n"][LIT_CHARS " }\n"][LIT_CHARS "}\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/foo/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "java_binary(name = 'foo',\n"][LIT_CHARS " srcs = ['Foo.java'],\n"][LIT_CHARS " main_class = 'foo.Foo')\n"]]} 0), > ) (AndOr OP_OR_IF (Pipeline (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/foo] [LIT_OTHER ":"] [LIT_CHARS foo]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[DQ [LIT_CHARS "Success!"]]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected success"]]}) ) ) ) (FunctionDef test_header_compilation [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[DQ [VarSub pkg]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "mkdir "][VarSub pkg]]}) ) (Com {[LIT_CHARS write_hello_library_files]} {[DQ [VarSub pkg]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS -s]} {[LIT_CHARS --java_header_compilation] [LIT_OTHER "="] [LIT_CHARS true]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/main] [LIT_OTHER ":"] [LIT_CHARS main]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "DEBUG["][VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})][LIT_CHARS "]: start"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS unzip]} {[LIT_CHARS -l]} {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/hello_library/libhello_library-hjar.jar]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "DEBUG["][VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})][LIT_CHARS "]: end"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (AndOr OP_OR_IF (Pipeline (Com {[LIT_CHARS unzip]} {[LIT_CHARS -l]} {[VarSub PRODUCT_NAME] [LIT_CHARS -bin/] [VarSub pkg] [LIT_CHARS /java/hello_library/libhello_library-hjar.jar]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[DQ [LIT_CHARS " hello_library/HelloLibrary.class"]]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "missing class file from header compilation"]]}) ) ) ) (FunctionDef test_header_compilation_errors [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub pkg] [LIT_CHARS /java/test/]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected success"]]}) ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/test/A.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package test;\n"][LIT_CHARS "public class A {}\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/test/B.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package test;\n"][LIT_CHARS "import missing.NoSuch;\n"][LIT_CHARS "@NoSuch\n"][LIT_CHARS "public class B {}\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/test/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "java_library(\n"][LIT_CHARS " name='a',\n"][LIT_CHARS " srcs=['A.java'],\n"][LIT_CHARS " deps=[':b'],\n"][LIT_CHARS ")\n"][LIT_CHARS "java_library(\n"][LIT_CHARS " name='b',\n"][LIT_CHARS " srcs=['B.java'],\n"][LIT_CHARS ")\n"]]} 0), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS --java_header_compilation] [LIT_OTHER "="] [LIT_CHARS true]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/test] [LIT_OTHER ":"] [LIT_CHARS a]} < (DescriptorRedirectNode target={[DQ [VarSub TEST_log]]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Unexpected success"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "package missing does not exist"]]}) ) ) (FunctionDef test_java_import_with_empty_jars_attribute [] (List (= scope= flags=0 words=[{[LIT_CHARS -r]}] bindings=[('pkg', {[DQ [VarSub FUNCNAME bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub pkg] [LIT_CHARS /java/hello/]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected success"]]}) ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/hello/Hello.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package hello;\n"][LIT_CHARS "public class Hello {\n"][LIT_CHARS " public static void main(String[] args) {\n"][LIT_CHARS " System.out.println("][RIGHT_D_QUOTE "\""][LIT_CHARS "Hello World!"][RIGHT_D_QUOTE "\""][LIT_CHARS ");\n"][LIT_CHARS " }\n"][LIT_CHARS "}\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg] [LIT_CHARS /java/hello/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "java_import(\n"][LIT_CHARS " name='empty_java_import',\n"][LIT_CHARS " jars=[]\n"][LIT_CHARS ")\n"][LIT_CHARS "java_binary(\n"][LIT_CHARS " name='hello',\n"][LIT_CHARS " srcs=['Hello.java'],\n"][LIT_CHARS " deps=[':empty_java_import'],\n"][LIT_CHARS " main_class = 'hello.Hello'\n"][LIT_CHARS ")\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/hello] [LIT_OTHER ":"] [LIT_CHARS hello]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/hello] [LIT_OTHER ":"] [LIT_CHARS hello_deploy.jar]} < (DescriptorRedirectNode target={[DQ [VarSub TEST_log]]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected success"]]}) ) (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //] [VarSub pkg] [LIT_CHARS /java/hello] [LIT_OTHER ":"] [LIT_CHARS hello]} {[LIT_CHARS --]} {[LIT_CHARS --singlejar]} < (DescriptorRedirectNode target={[DQ [VarSub TEST_log]]} &"> 1), > ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Hello World!"]]}) ) ) (Com {[LIT_CHARS run_suite]} {[DQ [LIT_CHARS "Java integration tests"]]}) )