(List (= scope= flags=0 words=[] bindings=[('PLATFORM', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS uname]} {[LIT_CHARS -s]}) (Com {[LIT_CHARS tr]} {[SQ ]} {[SQ ]}) )]]})]) (FunctionDef is_windows [] (If (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub PLATFORM]]} {[LIT_CHARS msys_nt] [LIT_OTHER "*"]}}) (Com {[LIT_CHARS true]}) (ElseTrue) (Com {[LIT_CHARS false]}) ) ) (= scope= flags=0 words=[] bindings=[('PATH_TO_BAZEL_BIN', {[ComSub (Com {[LIT_CHARS rlocation]} {[LIT_CHARS io_bazel/src/bazel]})]})]) (= scope= flags=0 words=[] bindings=[('PATH_TO_BAZEL_WRAPPER', {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[ComSub (Com {[LIT_CHARS rlocation]} {[LIT_CHARS io_bazel/src/test/shell/bin/bazel]})]})]]})]) (If (Com {[LIT_CHARS is_windows]}) (= scope= flags=0 words=[] bindings=[('PATH_TO_BAZEL_WRAPPER', {[DQ [ComSub (Com {[LIT_CHARS cygpath]} {[LIT_CHARS -u]} {[DQ [VarSub PATH_TO_BAZEL_WRAPPER]]})]]})]) ) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[DQ [VarSub PATH_TO_BAZEL_WRAPPER][LIT_CHARS /bazel]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Unable to find the Bazel binary at "][VarSub PATH_TO_BAZEL_WRAPPER][LIT_CHARS /bazel]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=1 words=[] bindings=[('PATH', {[DQ [VarSub PATH_TO_BAZEL_WRAPPER][LIT_CHARS ":"][VarSub PATH]]})]) (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub TEST_SRCDIR]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "TEST_SRCDIR not set!"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('BAZEL_RUNFILES', {[DQ [VarSub TEST_SRCDIR][LIT_CHARS /io_bazel]]})]) (If (List (Fork (Pipeline! (Com {[LIT_CHARS type]} {[LIT_CHARS rlocation]}) ) ) (Com < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) (List (FunctionDef rlocation [] (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub 1]]} {[LIT_CHARS /] [LIT_OTHER "*"]}}) (Com {[LIT_CHARS echo]} {[VarSub 1]}) (ElseTrue) (Com {[LIT_CHARS echo]} {[DQ [VarSub TEST_SRCDIR][LIT_CHARS /][VarSub 1]]}) ) ) (= scope= flags=1 words=[{[LIT_CHARS -f]}, {[LIT_CHARS rlocation]}] bindings=[]) ) ) (= scope= flags=0 words=[] bindings=[('workspace_file', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /WORKSPACE]]})]) (= scope= flags=0 words=[] bindings=[('bazel_tree', {[DQ [ComSub (Com {[LIT_CHARS rlocation]} {[LIT_CHARS io_bazel/src/test/shell/bazel/doc-srcs.zip]})]]})]) (= scope= flags=0 words=[] bindings=[('bazel_data', {[DQ [VarSub BAZEL_RUNFILES]]})]) (If (Com {[LIT_CHARS is_windows]}) (= scope= flags=0 words=[] bindings=[('jdk_dir', {[DQ [ComSub (Com {[LIT_CHARS cygpath]} {[LIT_CHARS -m]} {[ComSub (List (Com {[LIT_CHARS cd]} {[ComSub (Com {[LIT_CHARS rlocation]} {[LIT_CHARS local_jdk/bin/java.exe]})] [LIT_CHARS /../..]}) (Com {[LIT_CHARS pwd]}) )]})]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('jdk_dir', {[DQ [VarSub TEST_SRCDIR][LIT_CHARS /local_jdk]]})]) ) (= scope= flags=0 words=[] bindings=[('langtools', {[DQ [ComSub (Com {[LIT_CHARS rlocation]} {[LIT_CHARS io_bazel/src/test/shell/bazel/langtools.jar]})]]})]) (= scope= flags=0 words=[] bindings=[('tools_dir', {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[ComSub (Com {[LIT_CHARS rlocation]} {[LIT_CHARS io_bazel/tools/BUILD]})]})]]})]) (= scope= flags=0 words=[] bindings=[('langtools_dir', {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[ComSub (Com {[LIT_CHARS rlocation]} {[LIT_CHARS io_bazel/third_party/java/jdk/langtools/BUILD]})]})]]})]) (= scope= flags=0 words=[] bindings=[('javabuilder_path', {[DQ [ComSub (Com {[LIT_CHARS find]} {[VarSub BAZEL_RUNFILES]} {[LIT_CHARS -name]} {[LIT_CHARS JavaBuilder_] [LIT_OTHER "*"] [LIT_CHARS .jar]})]]})]) (= scope= flags=0 words=[] bindings=[('langtools_path', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /third_party/java/jdk/langtools/javac.jar]]})]) (= scope= flags=0 words=[] bindings=[('singlejar_path', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /src/java_tools/singlejar/SingleJar_deploy.jar]]})]) (= scope= flags=0 words=[] bindings=[('genclass_path', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /src/java_tools/buildjar/java/com/google/devtools/build/buildjar/genclass/GenClass_deploy.jar]]})]) (= scope= flags=0 words=[] bindings=[('junitrunner_path', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /src/java_tools/junitrunner/java/com/google/testing/junit/runner/Runner_deploy.jar]]})]) (= scope= flags=0 words=[] bindings=[('ijar_path', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /third_party/ijar/ijar]]})]) (= scope= flags=0 words=[] bindings=[('process_wrapper', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /src/main/tools/process-wrapper]]})]) (= scope= flags=0 words=[] bindings=[('linux_sandbox', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /src/main/tools/linux-sandbox]]})]) (= scope= flags=0 words=[] bindings=[('actoolwrapper_path', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /src/tools/xcode/actoolwrapper/actoolwrapper.sh]]})]) (= scope= flags=0 words=[] bindings=[('ibtoolwrapper_path', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /src/tools/xcode/ibtoolwrapper/ibtoolwrapper.sh]]})]) (= scope= flags=0 words=[] bindings=[('swiftstdlibtoolwrapper_path', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /src/tools/xcode/swiftstdlibtoolwrapper/swiftstdlibtoolwrapper.sh]]})]) (= scope= flags=0 words=[] bindings=[('momcwrapper_path', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /src/tools/xcode/momcwrapper/momcwrapper.sh]]})]) (= scope= flags=0 words=[] bindings=[('bundlemerge_path', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /src/objc_tools/bundlemerge/bundlemerge_deploy.jar]]})]) (= scope= flags=0 words=[] bindings=[('plmerge_path', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /src/objc_tools/plmerge/plmerge_deploy.jar]]})]) (= scope= flags=0 words=[] bindings=[('xcodegen_path', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /src/objc_tools/xcodegen/xcodegen_deploy.jar]]})]) (= scope= flags=0 words=[] bindings=[('stdredirect_path', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /src/tools/xcode/stdredirect/StdRedirect.dylib]]})]) (= scope= flags=0 words=[] bindings=[('realpath_path', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /src/tools/xcode/realpath/realpath]]})]) (= scope= flags=0 words=[] bindings=[('environment_plist_path', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /src/tools/xcode/environment/environment_plist.sh]]})]) (= scope= flags=0 words=[] bindings=[('xcrunwrapper_path', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /src/tools/xcode/xcrunwrapper/xcrunwrapper.sh]]})]) (= scope= flags=0 words=[] bindings=[('testdata_path', {[VarSub BAZEL_RUNFILES] [LIT_CHARS /src/test/shell/bazel/testdata]})]) (= scope= flags=0 words=[] bindings=[('python_server', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /src/test/shell/bazel/testing_server.py]]})]) (= scope= flags=0 words=[] bindings=[('MACHINE_TYPE', {[DQ [ComSub (Com {[LIT_CHARS uname]} {[LIT_CHARS -m]})]]})]) (= scope= flags=0 words=[] bindings=[('MACHINE_IS_64BIT', {[SQ ]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub MACHINE_TYPE]]} {[LIT_OTHER "="]} {[SQ ]} {[LIT_CHARS -o]} {[DQ [VarSub MACHINE_TYPE]]} {[LIT_OTHER "="]} {[SQ ]} {[LIT_CHARS -o]} {[DQ [VarSub MACHINE_TYPE]]} {[LIT_OTHER "="]} {[SQ ]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('MACHINE_IS_64BIT', {[SQ ]})]) ) (= scope= flags=0 words=[] bindings=[('MACHINE_IS_Z', {[SQ ]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub MACHINE_TYPE]]} {[LIT_OTHER "="]} {[SQ ]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('MACHINE_IS_Z', {[SQ ]})]) ) (Case to_match={[DQ [VarSub PLATFORM]]}, pat_word_list=[[{[LIT_CHARS darwin]}], [{[LIT_OTHER "*"]}]] (If (Com {[LIT_OTHER "["]} {[DQ [VarSub MACHINE_IS_64BIT]]} {[LIT_OTHER "="]} {[SQ ]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('protoc_compiler', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /third_party/protobuf/protoc-osx-x86_64.exe]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('protoc_compiler', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /third_party/protobuf/protoc-osx-x86_32.exe]]})]) ) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub MACHINE_IS_64BIT]]} {[LIT_OTHER "="]} {[SQ ]} {[LIT_OTHER "]"]}) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub MACHINE_IS_Z]]} {[LIT_OTHER "="]} {[SQ ]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('protoc_compiler', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS //third_party/protobuf/protoc-linux-s390x_64.exe]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('protoc_compiler', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /third_party/protobuf/protoc-linux-x86_64.exe]]})]) ) (ElseTrue) (= scope= flags=0 words=[] bindings=[('protoc_compiler', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS /third_party/protobuf/protoc-linux-x86_32.exe]]})]) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[VarSub RUNFILES_MANIFEST_ONLY test_op=VS_TEST_PLUS {[LIT_CHARS x]}]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('protoc_jar', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS "/third_party/protobuf/protobuf-*.jar"]]})]) (= scope= flags=0 words=[] bindings=[('junit_jar', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS "/third_party/junit/junit-*.jar"]]})]) (= scope= flags=0 words=[] bindings=[('hamcrest_jar', {[DQ [VarSub BAZEL_RUNFILES][LIT_CHARS "/third_party/hamcrest/hamcrest-*.jar"]]})]) ) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('protoc_jar', {[ComSub (Com {[LIT_CHARS rlocation]} {[LIT_CHARS io_bazel/third_party/protobuf/protobuf-.] [LIT_OTHER "*"] [LIT_CHARS .jar]})]})]) (= scope= flags=0 words=[] bindings=[('junit_jar', {[ComSub (Com {[LIT_CHARS rlocation]} {[LIT_CHARS io_bazel/third_party/junit/junit-.] [LIT_OTHER "*"] [LIT_CHARS .jar]})]})]) (= scope= flags=0 words=[] bindings=[('hamcrest_jar', {[ComSub (Com {[LIT_CHARS rlocation]} {[LIT_CHARS io_bazel/third_party/hamcrest/hamcrest-.] [LIT_OTHER "*"] [LIT_CHARS .jar]})]})]) ) ) (FunctionDef copy_tools_directory [] (List (Com {[LIT_CHARS cp]} {[LIT_CHARS -RL]} {[VarSub tools_dir] [LIT_CHARS /] [LIT_OTHER "*"]} {[LIT_CHARS tools]}) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -f]} {[LIT_CHARS tools/jdk/BUILD.] [LIT_OTHER "*"]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS cp]} {[LIT_CHARS tools/jdk/BUILD.] [LIT_OTHER "*"]} {[LIT_CHARS tools/jdk/BUILD]}) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS w]} {[LIT_CHARS tools/jdk/BUILD]}) ) ) (Com {[LIT_CHARS cp]} {[VarSub langtools]} {[LIT_CHARS tools/jdk/langtools.jar]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS tools/jdk/BUILD]} >"> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "filegroup(name = \"test-langtools\", srcs = [\"langtools.jar\"])\n"]} 0), > ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS third_party/java/jdk/langtools]}) (Com {[LIT_CHARS cp]} {[LIT_CHARS -R]} {[VarSub langtools_dir] [LIT_CHARS /] [LIT_OTHER "*"]} {[LIT_CHARS third_party/java/jdk/langtools]}) (Com {[LIT_CHARS chmod]} {[LIT_CHARS -R]} {[LIT_OTHER "+"] [LIT_CHARS w]} {[LIT_CHARS .]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS tools/defaults]}) (Com {[LIT_CHARS touch]} {[LIT_CHARS tools/defaults/BUILD]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS third_party/py/gflags]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS third_party/py/gflags/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "licenses(["][RIGHT_D_QUOTE "\""][LIT_CHARS notice][RIGHT_D_QUOTE "\""][LIT_CHARS "])\n"][LIT_CHARS "package(default_visibility = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "//visibility:public"][RIGHT_D_QUOTE "\""][LIT_CHARS "])\n"][LIT_CHARS "\n"][LIT_CHARS "py_library(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS gflags][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS ")\n"]]} 0), > ) ) ) (FunctionDef is_tools_directory [] (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS third_party]}, {[LIT_CHARS tools]}, {[LIT_CHARS src]}], [{[LIT_OTHER "*"]}]] (Com {[LIT_CHARS true]}) (Com {[LIT_CHARS false]}) ) ) (FunctionDef copy_examples [] (List (= scope= flags=0 words=[] bindings=[('EXAMPLE', {[DQ [ComSub (List (Com {[LIT_CHARS cd]} {[ComSub (Com {[LIT_CHARS dirname]} {[ComSub (Com {[LIT_CHARS rlocation]} {[LIT_CHARS io_bazel/examples/cpp/BUILD]})]})] [LIT_CHARS /..]}) (Com {[LIT_CHARS pwd]}) )]]})]) (Com {[LIT_CHARS cp]} {[LIT_CHARS -RL]} {[VarSub EXAMPLE]} {[LIT_CHARS .]}) (Com {[LIT_CHARS chmod]} {[LIT_CHARS -R]} {[LIT_OTHER "+"] [LIT_CHARS w]} {[LIT_CHARS .]}) ) ) (FunctionDef pick_random_unused_tcp_port [] (Com {[LIT_CHARS perl]} {[LIT_CHARS -MSocket]} {[LIT_CHARS -e]} {[SQ ]}) ) (Case to_match={[DQ [VarSub PLATFORM]]}, pat_word_list=[[{[LIT_CHARS darwin]}], [{[LIT_OTHER "*"]}]] (FunctionDef sha256sum [] (Pipeline (Com {[LIT_CHARS cat]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS shasum]} {[LIT_CHARS -a]} {[LIT_CHARS 256]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -f]} {[LIT_CHARS 1]} {[LIT_CHARS -d]} {[DQ [LIT_CHARS " "]]}) ) ) (ElseTrue) ) (= scope= flags=0 words=[] bindings=[('bazel_root', {[DQ [VarSub TEST_TMPDIR][LIT_CHARS /root]]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub bazel_root]]}) (= scope= flags=0 words=[] bindings=[('bazel_javabase', {[DQ [VarSub jdk_dir]]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "bazel binary is at "][VarSub PATH_TO_BAZEL_WRAPPER]]}) (Com {[LIT_CHARS unset]} {[LIT_CHARS JAVA_RUNFILES]}) (FunctionDef setup_bazelrc [] (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub TEST_TMPDIR] [LIT_CHARS /bazelrc]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "# Set the user root properly for this test invocation.\n"][LIT_CHARS "startup --output_user_root="][VarSub bazel_root][LIT_CHARS "\n"][LIT_CHARS "# Set the correct javabase from the outer bazel invocation.\n"][LIT_CHARS "startup --host_javabase="][VarSub bazel_javabase][LIT_CHARS "\n"][LIT_CHARS "\n"][LIT_CHARS "# Print all progress messages because we regularly grep the output in tests.\n"][LIT_CHARS "common --show_progress_rate_limit=-1\n"][LIT_CHARS "\n"][LIT_CHARS "# Disable terminal-specific features.\n"][LIT_CHARS "common --color=no --curses=no\n"][LIT_CHARS "\n"][LIT_CHARS "build -j 8\n"][VarSub EXTRA_BAZELRC test_op=VS_TEST_COLON_HYPHEN {}][LIT_CHARS "\n"]]} 0), > ) ) (FunctionDef setup_android_support [] (List (= scope= flags=0 words=[] bindings=[('ANDROID_NDK', {[VarSub PWD] [LIT_CHARS /android_ndk]})]) (= scope= flags=0 words=[] bindings=[('ANDROID_SDK', {[VarSub PWD] [LIT_CHARS /android_sdk]})]) (= scope= flags=0 words=[] bindings=[('NDK_SRCDIR', {[VarSub TEST_SRCDIR] [LIT_CHARS /androidndk/ndk]})]) (= scope= flags=0 words=[] bindings=[('SDK_SRCDIR', {[VarSub TEST_SRCDIR] [LIT_CHARS /androidsdk]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub ANDROID_NDK]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub ANDROID_SDK]}) (For i [{[VarSub NDK_SRCDIR] [LIT_CHARS /] [LIT_OTHER "*"]}]) (If (DBracket {B2 BINARY_STRING_NOT_EQUAL {[DQ [ComSub (Com {[LIT_CHARS basename]} {[VarSub i]})]]} {[DQ [LIT_CHARS BUILD]]}}) (Com {[LIT_CHARS ln]} {[LIT_CHARS -s]} {[DQ [VarSub i]]} {[DQ [VarSub ANDROID_NDK][LIT_CHARS /][ComSub (Com {[LIT_CHARS basename]} {[VarSub i]})]]}) ) ) (For i [{[VarSub SDK_SRCDIR] [LIT_CHARS /] [LIT_OTHER "*"]}]) (Com {[LIT_CHARS ln]} {[LIT_CHARS -s]} {[DQ [VarSub i]]} {[DQ [VarSub ANDROID_SDK][LIT_CHARS /][ComSub (Com {[LIT_CHARS basename]} {[VarSub i]})]]}) ) (= scope= flags=0 words=[] bindings=[('ANDROID_SDK_API_LEVEL', {[ComSub (Pipeline (Com {[LIT_CHARS ls]} {[VarSub SDK_SRCDIR] [LIT_CHARS /platforms]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -d]} {[SQ ]} {[LIT_CHARS -f]} {[LIT_CHARS 2]}) (Com {[LIT_CHARS sort]} {[LIT_CHARS -n]}) (Com {[LIT_CHARS tail]} {[LIT_CHARS -1]}) )]})]) (= scope= flags=0 words=[] bindings=[('ANDROID_NDK_API_LEVEL', {[ComSub (Pipeline (Com {[LIT_CHARS ls]} {[VarSub NDK_SRCDIR] [LIT_CHARS /platforms]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -d]} {[SQ ]} {[LIT_CHARS -f]} {[LIT_CHARS 2]}) (Com {[LIT_CHARS sort]} {[LIT_CHARS -n]}) (Com {[LIT_CHARS tail]} {[LIT_CHARS -1]}) )]})]) (= scope= flags=0 words=[] bindings=[('ANDROID_SDK_TOOLS_VERSION', {[ComSub (Pipeline (Com {[LIT_CHARS ls]} {[VarSub SDK_SRCDIR] [LIT_CHARS /build-tools]}) (Com {[LIT_CHARS sort]} {[LIT_CHARS -n]}) (Com {[LIT_CHARS tail]} {[LIT_CHARS -1]}) )]})]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} >"> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "android_ndk_repository(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS androidndk][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " path = "][RIGHT_D_QUOTE "\""][VarSub ANDROID_NDK][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " api_level = "][VarSub ANDROID_NDK_API_LEVEL][LIT_CHARS ",\n"][LIT_CHARS ")\n"][LIT_CHARS "\n"][LIT_CHARS "android_sdk_repository(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS androidsdk][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " path = "][RIGHT_D_QUOTE "\""][VarSub ANDROID_SDK][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " build_tools_version = "][RIGHT_D_QUOTE "\""][VarSub ANDROID_SDK_TOOLS_VERSION][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " api_level = "][VarSub ANDROID_SDK_API_LEVEL][LIT_CHARS ",\n"][LIT_CHARS ")\n"]]} 0), > ) ) ) (FunctionDef setup_javatest_common [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS third_party]}) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[LIT_CHARS third_party/BUILD]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS cat]} < (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"]]} 0), (FilenameRedirectNode filename={[LIT_CHARS third_party/BUILD]} "> 1), > ) ) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -e]} {[LIT_CHARS third_party/junit.jar]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS ln]} {[LIT_CHARS -s]} {[VarSub junit_jar]} {[LIT_CHARS third_party/junit.jar]}) ) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -e]} {[LIT_CHARS third_party/hamcrest.jar]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS ln]} {[LIT_CHARS -s]} {[VarSub hamcrest_jar]} {[LIT_CHARS third_party/hamcrest.jar]}) ) ) ) (FunctionDef setup_javatest_support [] (List (Com {[LIT_CHARS setup_javatest_common]}) (AndOr OP_OR_IF (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[SQ ]} {[LIT_CHARS third_party/BUILD]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "java_import(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS junit4][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " jars = [\n"][LIT_CHARS " "][RIGHT_D_QUOTE "\""][LIT_CHARS junit.jar][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " "][RIGHT_D_QUOTE "\""][LIT_CHARS hamcrest.jar][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " ],\n"][LIT_CHARS ")\n"]]} 0), (FilenameRedirectNode filename={[LIT_CHARS third_party/BUILD]} >"> 1), > ) ) ) ) (FunctionDef setup_skylark_javatest_support [] (List (Com {[LIT_CHARS setup_javatest_common]}) (AndOr OP_OR_IF (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[DQ [LIT_CHARS "name = "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS junit4-jars][\ LIT_ESCAPED_CHAR "\\\""]]} {[LIT_CHARS third_party/BUILD]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "filegroup(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS junit4-jars][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = [\n"][LIT_CHARS " "][RIGHT_D_QUOTE "\""][LIT_CHARS junit.jar][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " "][RIGHT_D_QUOTE "\""][LIT_CHARS hamcrest.jar][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " ],\n"][LIT_CHARS ")\n"]]} 0), (FilenameRedirectNode filename={[LIT_CHARS third_party/BUILD]} >"> 1), > ) ) ) ) (FunctionDef setup_objc_test_support [] (= scope= flags=0 words=[] bindings=[('IOS_SDK_VERSION', {[ComSub (Com {[LIT_CHARS xcrun]} {[LIT_CHARS --sdk]} {[LIT_CHARS iphoneos]} {[LIT_CHARS --show-sdk-version]})]})]) ) (= scope= flags=0 words=[] bindings=[('workspaces', {[Array ]})]) (FunctionDef create_new_workspace [] (List (= scope= flags=0 words=[] bindings=[('new_workspace_dir', {[VarSub 1 test_op=VS_TEST_COLON_HYPHEN {[ComSub (Com {[LIT_CHARS mktemp]} {[LIT_CHARS -d]} {[VarSub TEST_TMPDIR] [LIT_CHARS /workspace.XXXXXXXX]})]}]})]) (Com {[LIT_CHARS rm]} {[LIT_CHARS -fr]} {[VarSub new_workspace_dir]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub new_workspace_dir]}) (= scope= flags=0 words=[] bindings=[('workspaces+', {[Array {[VarSub new_workspace_dir]}]})]) (Com {[LIT_CHARS cd]} {[VarSub new_workspace_dir]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS tools]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS third_party/java/jdk/langtools]}) (Com {[LIT_CHARS copy_tools_directory]}) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -e]} {[LIT_CHARS third_party/java/jdk/langtools/javac.jar]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS ln]} {[LIT_CHARS -s]} {[DQ [VarSub langtools_path]]} {[LIT_CHARS third_party/java/jdk/langtools/javac.jar]}) ) (Com {[LIT_CHARS touch]} {[LIT_CHARS WORKSPACE]}) ) ) (FunctionDef setup_clean_workspace [] (List (= scope= flags=1 words=[] bindings=[('WORKSPACE_DIR', {[VarSub TEST_TMPDIR] [LIT_CHARS /workspace]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "setting up client in "][VarSub WORKSPACE_DIR]]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -fr]} {[VarSub WORKSPACE_DIR]}) (Com {[LIT_CHARS create_new_workspace]} {[VarSub WORKSPACE_DIR]}) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[DQ [VarSub new_workspace_dir]]} {[LIT_OTHER "="]} {[DQ [VarSub WORKSPACE_DIR]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Failed to create workspace"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=1 words=[] bindings=[('BAZEL_INSTALL_BASE', {[ComSub (Com {[LIT_CHARS bazel]} {[LIT_CHARS info]} {[LIT_CHARS install_base]})]})]) (= scope= flags=1 words=[] bindings=[('BAZEL_GENFILES_DIR', {[ComSub (Com {[LIT_CHARS bazel]} {[LIT_CHARS info]} {[LIT_CHARS bazel-genfiles]})]})]) (= scope= flags=1 words=[] bindings=[('BAZEL_BIN_DIR', {[ComSub (Com {[LIT_CHARS bazel]} {[LIT_CHARS info]} {[LIT_CHARS bazel-bin]})]})]) (If (Com {[LIT_CHARS is_windows]}) (= scope= flags=1 words=[] bindings=[('BAZEL_SH', {[DQ [ComSub (Com {[LIT_CHARS cygpath]} {[LIT_CHARS --windows]} {[LIT_CHARS /bin/bash]})]]})]) ) ) ) (FunctionDef cleanup_workspace [] (List (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -d]} {[DQ [VarSub WORKSPACE_DIR test_op=VS_TEST_COLON_HYPHEN {}]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Cleaning up workspace"]]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS cd]} {[VarSub WORKSPACE_DIR]}) (Com {[LIT_CHARS bazel]} {[LIT_CHARS clean]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (For i [{[ComSub (Com {[LIT_CHARS ls]})]}]) (If (Pipeline! (Com {[LIT_CHARS is_tools_directory]} {[DQ [VarSub i]]}) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -fr]} {[DQ [VarSub i]]}) ) ) (Com {[LIT_CHARS touch]} {[LIT_CHARS WORKSPACE]}) ) ) (For i [{[VarSub workspaces]}]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub i]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [VarSub WORKSPACE_DIR test_op=VS_TEST_COLON_HYPHEN {}]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -fr]} {[VarSub i]}) ) ) (= scope= flags=0 words=[] bindings=[('workspaces', {[Array ]})]) ) ) (FunctionDef cleanup [] (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -d]} {[DQ [VarSub BAZEL_INSTALL_BASE test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS __does_not_exists__]}]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -fr]} {[DQ [VarSub BAZEL_INSTALL_BASE]]}) ) ) (FunctionDef tear_down [] (Com {[LIT_CHARS cleanup_workspace]}) ) (FunctionDef assert_build [] (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS -s]} {[LIT_CHARS --verbose_failures]} {[VarSub *]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build "][VarSub *]]}) ) ) (FunctionDef assert_build_output [] (List (= scope= flags=0 words=[] bindings=[('OUTPUT', {[VarSub 1]})]) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS assert_build]} {[DQ [VarSub *]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub OUTPUT]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Output "][VarSub OUTPUT][LIT_CHARS " not found for target "][VarSub *]]}) ) ) ) (FunctionDef assert_build_fails [] (List (AndOr OP_AND_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS -s]} {[VarSub 1]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Test "][VarSub 1][LIT_CHARS " succeed while expecting failure"]]}) (Com {[LIT_CHARS true]}) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub 2 test_op=VS_TEST_COLON_HYPHEN {}]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS expect_log]} {[DQ [VarSub 2]]}) ) ) ) (FunctionDef assert_test_ok [] (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS test]} {[LIT_CHARS --test_output] [LIT_OTHER "="] [LIT_CHARS errors]} {[VarSub *]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Test "][VarSub 1][LIT_CHARS " failed while expecting success"]]}) ) ) (FunctionDef assert_test_fails [] (List (AndOr OP_AND_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS test]} {[LIT_CHARS --test_output] [LIT_OTHER "="] [LIT_CHARS errors]} {[VarSub *]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Test "][VarSub *][LIT_CHARS " succeed while expecting failure"]]}) (Com {[LIT_CHARS true]}) ) ) (Com {[LIT_CHARS expect_log]} {[DQ [VarSub 1][LIT_CHARS ".*FAILED"]]}) ) ) (FunctionDef assert_binary_run [] (List (AndOr OP_OR_IF (Com {[VarSub 1]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to run "][VarSub 1]]}) ) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub 2 test_op=VS_TEST_COLON_HYPHEN {}]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS expect_log]} {[DQ [VarSub 2]]}) ) ) ) (FunctionDef assert_bazel_run [] (List (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[VarSub 1]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to run "][VarSub 1]]}) ) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub 2 test_op=VS_TEST_COLON_HYPHEN {}]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS expect_log]} {[DQ [VarSub 2]]}) ) (Com {[LIT_CHARS assert_binary_run]} {[DQ [LIT_CHARS ./bazel-bin/][ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS sed]} {[SQ ]}) (Com {[LIT_CHARS sed]} {[SQ ]}) )]]} {[DQ [VarSub 2 test_op=VS_TEST_COLON_HYPHEN {}]]}) ) ) (Com {[LIT_CHARS setup_bazelrc]}) (Com {[LIT_CHARS setup_clean_workspace]}) (= scope= flags=0 words=[] bindings=[('PRODUCT_NAME', {[LIT_CHARS bazel]})]) (= scope= flags=0 words=[] bindings=[('WORKSPACE_NAME', {[LIT_CHARS main]})]) (= scope= flags=0 words=[] bindings=[('bazelrc', {[VarSub TEST_TMPDIR] [LIT_CHARS /bazelrc]})]) (FunctionDef put_bazel_on_path [] (Com {[LIT_CHARS true]}) ) (FunctionDef write_default_bazelrc [] (Com {[LIT_CHARS setup_bazelrc]}) ) (FunctionDef add_to_bazelrc [] (Com {[LIT_CHARS echo]} {[DQ [VarSub @]]} < (FilenameRedirectNode filename={[VarSub bazelrc]} >"> 1), > ) ) (FunctionDef create_and_cd_client [] (List (Com {[LIT_CHARS setup_clean_workspace]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "workspace(name = '"][VarSub WORKSPACE_NAME][LIT_CHARS "')"]]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), > ) (Com {[LIT_CHARS touch]} {[LIT_CHARS .bazelrc]}) ) ) (Com {[LIT_CHARS create_and_cd_client]}) )