(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]}) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS source]} {[DQ [VarSub CURRENT_DIR][LIT_CHARS /remote_helpers.sh]]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "remote_helpers.sh not found!"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (FunctionDef set_up [] (List (Com {[LIT_CHARS bazel]} {[LIT_CHARS clean]} {[LIT_CHARS --expunge]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS zoo]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS zoo/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "java_binary(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS ball-pit][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS BallPit.java][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " main_class = "][RIGHT_D_QUOTE "\""][LIT_CHARS BallPit][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " deps = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "//external:mongoose"][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS zoo/BallPit.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "import carnivore.Mongoose;\n"][LIT_CHARS "\n"][LIT_CHARS "public class BallPit {\n"][LIT_CHARS " public static void main(String args[]) {\n"][LIT_CHARS " Mongoose.frolic();\n"][LIT_CHARS " }\n"][LIT_CHARS "}\n"]]} 0), > ) ) ) (FunctionDef zip_up [] (List (= scope= flags=0 words=[] bindings=[('repo2_zip', {[VarSub TEST_TMPDIR] [LIT_CHARS /fox.zip]})]) (Com {[LIT_CHARS zip]} {[LIT_CHARS -0]} {[LIT_CHARS -ry]} {[VarSub repo2_zip]} {[LIT_CHARS WORKSPACE]} {[LIT_CHARS fox]}) ) ) (FunctionDef tar_gz_up [] (List (= scope= flags=0 words=[] bindings=[('repo2_zip', {[VarSub TEST_TMPDIR] [LIT_CHARS /fox.tar.gz]})]) (Com {[LIT_CHARS tar]} {[LIT_CHARS czf]} {[VarSub repo2_zip]} {[LIT_CHARS WORKSPACE]} {[LIT_CHARS fox]}) ) ) (FunctionDef tar_xz_up [] (List (= scope= flags=0 words=[] bindings=[('repo2_zip', {[VarSub TEST_TMPDIR] [LIT_CHARS /fox.tar.xz]})]) (Com {[LIT_CHARS tar]} {[LIT_CHARS cJf]} {[VarSub repo2_zip]} {[LIT_CHARS WORKSPACE]} {[LIT_CHARS fox]}) ) ) (FunctionDef http_archive_helper [] (List (= scope= flags=0 words=[] bindings=[('zipper', {[VarSub 1]})]) (= scope= flags=0 words=[{[LIT_CHARS write_workspace]}] bindings=[]) (AndOr OP_AND_IF (DBracket {B2 BINARY_INT_GT {[VarSub #]} {[LIT_CHARS 1]}}) (AndOr OP_AND_IF (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub 2]]} {[DQ [LIT_CHARS nowrite]]}}) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('write_workspace', {[LIT_CHARS 1]})]) (= scope= flags=0 words=[] bindings=[('write_workspace', {[LIT_CHARS 0]})]) ) ) ) (If (DBracket {B2 BINARY_INT_EQ {[VarSub write_workspace]} {[LIT_CHARS 0]}}) (List (= scope= flags=0 words=[] bindings=[('repo2', {[VarSub TEST_TMPDIR] [LIT_CHARS /repo2]})]) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[VarSub repo2]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub repo2] [LIT_CHARS /fox]}) (Com {[LIT_CHARS cd]} {[VarSub repo2]}) (Com {[LIT_CHARS touch]} {[LIT_CHARS WORKSPACE]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS fox/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "filegroup(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS fox][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS male][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " visibility = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "//visibility:public"][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (= scope= flags=0 words=[] bindings=[('what_does_the_fox_say', {[DQ [LIT_CHARS Fraka-kaka-kaka-kaka-kow]]})]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS fox/male]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/bash\n"][LIT_CHARS "echo "][VarSub what_does_the_fox_say][LIT_CHARS "\n"]]} 0), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS fox/male]}) (Com {[LIT_CHARS ln]} {[LIT_CHARS -s]} {[LIT_CHARS male]} {[LIT_CHARS fox/male_relative]}) (Com {[LIT_CHARS ln]} {[LIT_CHARS -s]} {[LIT_CHARS /fox/male]} {[LIT_CHARS fox/male_absolute]}) (Com {[LIT_CHARS dd]} {[LIT_VAR_LIKE "if="] [LIT_CHARS /dev/zero] =} {[LIT_VAR_LIKE "of="] [LIT_CHARS fox/padding] =} {[LIT_VAR_LIKE "bs="] [LIT_CHARS 1024] =} {[LIT_VAR_LIKE "count="] [LIT_CHARS 10240] =} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[VarSub zipper]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (= scope= flags=0 words=[] bindings=[('repo2_name', {[ComSub (Com {[LIT_CHARS basename]} {[VarSub repo2_zip]})]})]) (= scope= flags=0 words=[] bindings=[('sha256', {[ComSub (Pipeline (Com {[LIT_CHARS sha256sum]} {[VarSub repo2_zip]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -f]} {[LIT_CHARS 1]} {[LIT_CHARS -d]} {[SQ ]}) )]})]) ) ) (Com {[LIT_CHARS serve_file]} {[VarSub repo2_zip]}) (Com {[LIT_CHARS cd]} {[VarSub WORKSPACE_DIR]}) (If (DBracket {B2 BINARY_STRING_EQUAL {[VarSub write_workspace]} {[LIT_CHARS 0]}}) (List (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "http_archive(\n"][LIT_CHARS " name = 'endangered',\n"][LIT_CHARS " url = 'http://localhost:"][VarSub nc_port][LIT_CHARS /][VarSub repo2_name][LIT_CHARS "',\n"][LIT_CHARS " sha256 = '"][VarSub sha256][LIT_CHARS "'\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS zoo/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "sh_binary(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS breeding-program][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS female.sh][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " data = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "@endangered//fox"][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS zoo/female.sh]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/bash\n"][LIT_CHARS "../endangered/fox/male\n"]]} 0), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS zoo/female.sh]}) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //zoo] [LIT_OTHER ":"] [LIT_CHARS breeding-program]} {[LIT_CHARS --show_progress_rate_limit] [LIT_OTHER "="] [LIT_CHARS 0]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Expected build/run to succeed"]]}) ) (Com {[LIT_CHARS kill_nc]}) (Com {[LIT_CHARS expect_log]} {[VarSub what_does_the_fox_say]}) (= scope= flags=0 words=[] bindings=[('base_external_path', {[LIT_CHARS bazel-out/../external/endangered/fox]})]) (Com {[LIT_CHARS assert_files_same]} {[VarSub base_external_path] [LIT_CHARS /male]} {[VarSub base_external_path] [LIT_CHARS /male_relative]}) (Com {[LIT_CHARS assert_files_same]} {[VarSub base_external_path] [LIT_CHARS /male]} {[VarSub base_external_path] [LIT_CHARS /male_absolute]}) ) ) (FunctionDef assert_files_same [] (List (AndOr OP_AND_IF (Com {[LIT_CHARS assert_contains]} {[DQ [ComSub (Com {[LIT_CHARS cat]} {[VarSub 1]})]]} {[VarSub 2]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Expected these to be the same:"]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS ---------------------------]]}) (Com {[LIT_CHARS cat]} {[VarSub 1]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "==========================="]]}) (Com {[LIT_CHARS cat]} {[VarSub 2]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS ---------------------------]]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) (FunctionDef test_http_archive_zip [] (List (Com {[LIT_CHARS http_archive_helper]} {[LIT_CHARS zip_up]}) (Com {[LIT_CHARS serve_file]} {[VarSub repo2_zip]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "http_archive(\n"][LIT_CHARS " name = 'endangered',\n"][LIT_CHARS " url = 'http://localhost:"][VarSub nc_port][LIT_CHARS "/bleh',\n"][LIT_CHARS " sha256 = '"][VarSub sha256][LIT_CHARS "',\n"][LIT_CHARS " type = 'zip',\n"][LIT_CHARS ")\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //zoo] [LIT_OTHER ":"] [LIT_CHARS breeding-program]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Expected build/run to succeed"]]}) ) (Com {[LIT_CHARS kill_nc]}) (Com {[LIT_CHARS expect_log]} {[VarSub what_does_the_fox_say]}) ) ) (FunctionDef test_http_archive_tgz [] (List (Com {[LIT_CHARS http_archive_helper]} {[LIT_CHARS tar_gz_up]}) (Com {[LIT_CHARS bazel]} {[LIT_CHARS shutdown]}) (Com {[LIT_CHARS http_archive_helper]} {[LIT_CHARS tar_gz_up]}) ) ) (FunctionDef test_http_archive_tar_xz [] (Com {[LIT_CHARS http_archive_helper]} {[LIT_CHARS tar_xz_up]}) ) (FunctionDef test_http_archive_no_server [] (List (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('nc_port', {[ComSub (Com {[LIT_CHARS pick_random_unused_tcp_port]})]})]) (Com {[LIT_CHARS exit]} {[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 "http_archive(name = 'endangered', url = 'http://localhost:"][VarSub nc_port][LIT_CHARS "/repo.zip',\n"][LIT_CHARS " sha256 = 'dummy')\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS zoo/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "sh_binary(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS breeding-program][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS female.sh][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " data = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "@endangered//fox"][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS zoo/female.sh]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/bash\n"][LIT_CHARS "cat fox/male\n"]]} 0), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS zoo/female.sh]}) (AndOr OP_AND_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS fetch]} {[LIT_CHARS //zoo] [LIT_OTHER ":"] [LIT_CHARS breeding-program]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected fetch to fail"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Connection refused"]]}) ) ) (FunctionDef test_http_archive_mismatched_sha256 [] (List (= scope= flags=0 words=[] bindings=[('repo2', {[VarSub TEST_TMPDIR] [LIT_CHARS /repo2]})]) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[VarSub repo2]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub repo2]}) (Com {[LIT_CHARS cd]} {[VarSub repo2]}) (Com {[LIT_CHARS touch]} {[LIT_CHARS WORKSPACE]}) (= scope= flags=0 words=[] bindings=[('repo2_zip', {[VarSub TEST_TMPDIR] [LIT_CHARS /fox.zip]})]) (Com {[LIT_CHARS zip]} {[LIT_CHARS -r]} {[VarSub repo2_zip]} {[LIT_CHARS WORKSPACE]}) (Com {[LIT_CHARS serve_file]} {[VarSub repo2_zip]}) (= scope= flags=0 words=[] bindings=[('wrong_sha256', {[LIT_CHARS 0000000000000000000000000000000000000000]})]) (Com {[LIT_CHARS cd]} {[VarSub WORKSPACE_DIR]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "http_archive(name = 'endangered', url = 'http://localhost:"][VarSub nc_port][LIT_CHARS "/repo.zip',\n"][LIT_CHARS " sha256 = '"][VarSub wrong_sha256][LIT_CHARS "')\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS zoo/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "sh_binary(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS breeding-program][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS female.sh][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " data = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "@endangered//fox"][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS zoo/female.sh]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/bash\n"][LIT_CHARS "cat fox/male\n"]]} 0), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS zoo/female.sh]}) (AndOr OP_AND_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS fetch]} {[LIT_CHARS //zoo] [LIT_OTHER ":"] [LIT_CHARS breeding-program]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Expected fetch to fail"]]}) ) (Com {[LIT_CHARS kill_nc]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "does not match expected SHA-256"]]}) ) ) (FunctionDef test_sha256_caching [] (List (Com {[LIT_CHARS http_archive_helper]} {[LIT_CHARS zip_up]}) (= scope= flags=0 words=[] bindings=[('http_response', {[VarSub TEST_TMPDIR] [LIT_CHARS /http_response]})]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub http_response]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "HTTP/1.0 200 OK\n"][LIT_CHARS "\n"][LIT_CHARS "\n"][LIT_CHARS "\n"]]} 0), > ) (= scope= flags=0 words=[] bindings=[('nc_log', {[VarSub TEST_TMPDIR] [LIT_CHARS /nc.log]})]) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('nc_port', {[ComSub (Com {[LIT_CHARS pick_random_unused_tcp_port]})]})]) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) (Fork (Com {[LIT_CHARS nc_l]} {[VarSub nc_port]} < (FilenameRedirectNode filename={[VarSub http_response]} 0), (DescriptorRedirectNode target={[VarSub nc_log]} &"> 1), > ) ) (= scope= flags=0 words=[] bindings=[('pid', {[VarSub !]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS fetch]} {[LIT_CHARS //zoo] [LIT_OTHER ":"] [LIT_CHARS breeding-program]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Fetch failed"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //zoo] [LIT_OTHER ":"] [LIT_CHARS breeding-program]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Expected run to succeed"]]}) ) (Com {[LIT_CHARS kill_nc]}) (Com {[LIT_CHARS expect_log]} {[VarSub what_does_the_fox_say]}) ) ) (FunctionDef test_cached_across_server_restart [] (List (Com {[LIT_CHARS http_archive_helper]} {[LIT_CHARS zip_up]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS shutdown]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Couldn't shut down"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //zoo] [LIT_OTHER ":"] [LIT_CHARS breeding-program]} {[LIT_CHARS --show_progress_rate_limit] [LIT_OTHER "="] [LIT_CHARS 0]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Expected build/run to succeed"]]}) ) (Com {[LIT_CHARS expect_log]} {[VarSub what_does_the_fox_say]}) (Com {[LIT_CHARS expect_not_log]} {[DQ [LIT_CHARS "Downloading from"]]}) ) ) (FunctionDef test_jar_download [] (List (Com {[LIT_CHARS serve_jar]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "http_jar(name = 'endangered', url = 'http://localhost:"][VarSub nc_port][LIT_CHARS "/lib.jar')\n"]]} 0), > ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS zoo]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS zoo/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "java_binary(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS ball-pit][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS BallPit.java][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " main_class = "][RIGHT_D_QUOTE "\""][LIT_CHARS BallPit][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " deps = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "@endangered//jar"][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS zoo/BallPit.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "import carnivore.Mongoose;\n"][LIT_CHARS "\n"][LIT_CHARS "public class BallPit {\n"][LIT_CHARS " public static void main(String args[]) {\n"][LIT_CHARS " Mongoose.frolic();\n"][LIT_CHARS " }\n"][LIT_CHARS "}\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //zoo] [LIT_OTHER ":"] [LIT_CHARS ball-pit]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Expected run to succeed"]]}) ) (Com {[LIT_CHARS kill_nc]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Tra-la!"]]}) ) ) (FunctionDef test_http_to_https_redirect [] (List (= scope= flags=0 words=[] bindings=[('http_response', {[VarSub TEST_TMPDIR] [LIT_CHARS /http_response]})]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub http_response]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "HTTP/1.0 301 Moved Permantently\n"][LIT_CHARS "Location: https://localhost:123456789/bad-port-shouldnt-work\n"]]} 0), > ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('nc_port', {[ComSub (Com {[LIT_CHARS pick_random_unused_tcp_port]})]})]) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) (Fork (Com {[LIT_CHARS nc_l]} {[VarSub nc_port]} < (FilenameRedirectNode filename={[VarSub http_response]} 0), > ) ) (= scope= flags=0 words=[] bindings=[('nc_pid', {[VarSub !]})]) (Com {[LIT_CHARS cd]} {[VarSub WORKSPACE_DIR]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "http_file(\n"][LIT_CHARS " name = 'toto',\n"][LIT_CHARS " url = 'http://localhost:"][VarSub nc_port][LIT_CHARS "/toto',\n"][LIT_CHARS " sha256 = 'whatever'\n"][LIT_CHARS ")\n"]]} 0), > ) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS toto//file]}) ) (AndOr OP_AND_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected run to fail"]]}) ) (Com {[LIT_CHARS kill_nc]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Failed to connect.*port out of range"]]}) ) ) (FunctionDef test_http_404 [] (List (Com {[LIT_CHARS serve_not_found]} {[DQ [LIT_CHARS "Help, I'm lost!"]]}) (Com {[LIT_CHARS cd]} {[VarSub WORKSPACE_DIR]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "http_file(\n"][LIT_CHARS " name = 'toto',\n"][LIT_CHARS " url = 'http://localhost:"][VarSub nc_port][LIT_CHARS "/toto',\n"][LIT_CHARS " sha256 = 'whatever'\n"][LIT_CHARS ")\n"]]} 0), > ) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS toto//file]}) ) (AndOr OP_AND_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected run to fail"]]}) ) (Com {[LIT_CHARS kill_nc]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "404 Not Found: Help, I'm lost!"]]}) ) ) (FunctionDef test_http_download [] (List (= scope= flags=0 words=[] bindings=[('test_file', {[VarSub TEST_TMPDIR] [LIT_CHARS /toto]})]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub test_file]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/bash\n"][LIT_CHARS "echo "][RIGHT_D_QUOTE "\""][LIT_CHARS "Tra-la!"][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"]]} 0), > ) (= scope= flags=0 words=[] bindings=[('sha256', {[ComSub (Pipeline (Com {[LIT_CHARS sha256sum]} {[VarSub test_file]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -f]} {[LIT_CHARS 1]} {[LIT_CHARS -d]} {[SQ ]}) )]})]) (Com {[LIT_CHARS serve_file]} {[VarSub test_file]}) (Com {[LIT_CHARS cd]} {[VarSub WORKSPACE_DIR]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "http_file(name = 'toto', url = 'http://localhost:"][VarSub nc_port][LIT_CHARS "/toto',\n"][LIT_CHARS " sha256 = '"][VarSub sha256][LIT_CHARS "', executable = True)\n"]]} 0), > ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS test]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS test/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "sh_binary(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS test][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS test.sh][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " data = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "@toto//file"][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS test/test.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 "symlink:"][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"][LIT_CHARS "ls -l ../toto/file\n"][LIT_CHARS "echo "][RIGHT_D_QUOTE "\""][LIT_CHARS "dest:"][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"][LIT_CHARS "ls -l "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "(readlink -f ../toto/file/toto)\n"][LIT_CHARS "../toto/file/toto\n"]]} 0), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS test/test.sh]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //test]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Expected run to succeed"]]}) ) (Com {[LIT_CHARS kill_nc]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Tra-la!"]]}) ) ) (FunctionDef test_http_redirect [] (List (= scope= flags=0 words=[] bindings=[('test_file', {[VarSub TEST_TMPDIR] [LIT_CHARS /toto]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Tra-la!"]]} < (FilenameRedirectNode filename={[VarSub test_file]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('sha256', {[ComSub (Pipeline (Com {[LIT_CHARS sha256sum]} {[VarSub test_file]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -f]} {[LIT_CHARS 1]} {[LIT_CHARS -d]} {[SQ ]}) )]})]) (Com {[LIT_CHARS serve_file]} {[VarSub test_file]}) (Com {[LIT_CHARS cd]} {[VarSub WORKSPACE_DIR]}) (Com {[LIT_CHARS serve_redirect]} {[DQ [LIT_CHARS "http://localhost:"][VarSub nc_port][LIT_CHARS /toto]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "http_file(name = 'toto', url = 'http://localhost:"][VarSub redirect_port][LIT_CHARS "/toto',\n"][LIT_CHARS " sha256 = '"][VarSub sha256][LIT_CHARS "')\n"]]} 0), > ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS test]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS test/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "sh_binary(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS test][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS test.sh][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " data = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "@toto//file"][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS test/test.sh]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/bash\n"][LIT_CHARS "cat ../toto/file/toto\n"]]} 0), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS test/test.sh]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //test]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Expected run to succeed"]]}) ) (Com {[LIT_CHARS kill_nc]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Tra-la!"]]}) ) ) (FunctionDef test_empty_file [] (List (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[LIT_CHARS empty]}) (Com {[LIT_CHARS touch]} {[LIT_CHARS empty]}) (Com {[LIT_CHARS tar]} {[LIT_CHARS czf]} {[LIT_CHARS x.tar.gz]} {[LIT_CHARS empty]}) (= scope= flags=0 words=[] bindings=[('sha256', {[ComSub (Pipeline (Com {[LIT_CHARS sha256sum]} {[LIT_CHARS x.tar.gz]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -f]} {[LIT_CHARS 1]} {[LIT_CHARS -d]} {[SQ ]}) )]})]) (Com {[LIT_CHARS serve_file]} {[LIT_CHARS x.tar.gz]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "new_http_archive(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS x][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " url = "][RIGHT_D_QUOTE "\""][LIT_CHARS "http://localhost:"][VarSub nc_port][LIT_CHARS /x.tar.gz][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " sha256 = "][RIGHT_D_QUOTE "\""][VarSub sha256][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " build_file = "][RIGHT_D_QUOTE "\""][LIT_CHARS x.BUILD][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS x.BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "exports_files(["][RIGHT_D_QUOTE "\""][LIT_CHARS empty][RIGHT_D_QUOTE "\""][LIT_CHARS "])\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "genrule(\n"] [LIT_CHARS " name = \"rule\",\n"] [LIT_CHARS " srcs = [\"@x//:empty\"],\n"] [LIT_CHARS " outs = [\"timestamp\"],\n"] [LIT_CHARS " cmd = \"date > $@\",\n"] [LIT_CHARS ")\n"]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [LIT_OTHER ":"] [LIT_CHARS rule]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Build failed"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS shutdown]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Shutdown failed"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS cp]} {[LIT_CHARS bazel-genfiles/timestamp]} {[LIT_CHARS first_timestamp]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "No output"]]}) ) (Com {[LIT_CHARS sleep]} {[LIT_CHARS 1]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [LIT_OTHER ":"] [LIT_CHARS rule]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Build failed"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS diff]} {[LIT_CHARS bazel-genfiles/timestamp]} {[LIT_CHARS first_timestamp]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Output was built again"]]}) ) ) ) (FunctionDef test_invalid_rule [] (List (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "http_jar(name = 'endangered', sha256 = 'dummy')\n"]]} 0), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS fetch]} {[LIT_CHARS //external] [LIT_OTHER ":"] [LIT_CHARS endangered]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected fetch to fail"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "missing value for mandatory attribute 'url' in 'http_jar' rule"]]}) ) ) (FunctionDef test_new_remote_repo_with_build_file [] (Com {[LIT_CHARS do_new_remote_repo_test]} {[DQ [LIT_CHARS build_file]]}) ) (FunctionDef test_new_remote_repo_with_build_file_content [] (Com {[LIT_CHARS do_new_remote_repo_test]} {[DQ [LIT_CHARS build_file_content]]}) ) (FunctionDef do_new_remote_repo_test [] (List (= scope= flags=0 words=[] bindings=[('repo2', {[VarSub TEST_TMPDIR] [LIT_CHARS /repo2]})]) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[VarSub repo2]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub repo2] [LIT_CHARS /fox]}) (Com {[LIT_CHARS cd]} {[VarSub repo2]}) (= scope= flags=0 words=[] bindings=[('what_does_the_fox_say', {[DQ [LIT_CHARS Fraka-kaka-kaka-kaka-kow]]})]) (Com {[LIT_CHARS echo]} {[VarSub what_does_the_fox_say]} < (FilenameRedirectNode filename={[LIT_CHARS fox/male]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('repo2_zip', {[VarSub TEST_TMPDIR] [LIT_CHARS /fox.zip]})]) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[VarSub repo2_zip]}) (Com {[LIT_CHARS zip]} {[LIT_CHARS -r]} {[VarSub repo2_zip]} {[LIT_CHARS fox]}) (= scope= flags=0 words=[] bindings=[('sha256', {[ComSub (Pipeline (Com {[LIT_CHARS sha256sum]} {[VarSub repo2_zip]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -f]} {[LIT_CHARS 1]} {[LIT_CHARS -d]} {[SQ ]}) )]})]) (Com {[LIT_CHARS serve_file]} {[VarSub repo2_zip]}) (Com {[LIT_CHARS cd]} {[VarSub WORKSPACE_DIR]}) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub 1]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS build_file]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS fox.BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "filegroup(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS fox][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS fox/male][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " visibility = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "//visibility:public"][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "new_http_archive(\n"][LIT_CHARS " name = 'endangered',\n"][LIT_CHARS " url = 'http://localhost:"][VarSub nc_port][LIT_CHARS "/repo.zip',\n"][LIT_CHARS " sha256 = '"][VarSub sha256][LIT_CHARS "',\n"][LIT_CHARS " build_file = 'fox.BUILD'\n"][LIT_CHARS ")\n"]]} 0), > ) ) (ElseTrue) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "new_http_archive(\n"][LIT_CHARS " name = 'endangered',\n"][LIT_CHARS " url = 'http://localhost:"][VarSub nc_port][LIT_CHARS "/repo.zip',\n"][LIT_CHARS " sha256 = '"][VarSub sha256][LIT_CHARS "',\n"][LIT_CHARS " build_file_content = "][RIGHT_D_QUOTE "\""][RIGHT_D_QUOTE "\""][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"][LIT_CHARS "filegroup(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS fox][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS fox/male][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " visibility = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "//visibility:public"][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")"][RIGHT_D_QUOTE "\""][RIGHT_D_QUOTE "\""][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"][LIT_CHARS ")\n"]]} 0), > ) ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS zoo]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS zoo/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "sh_binary(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS breeding-program][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS female.sh][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " data = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "@endangered//:fox"][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS zoo/female.sh]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/bash\n"][LIT_CHARS "cat ../endangered/fox/male\n"]]} 0), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS zoo/female.sh]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_CHARS //zoo] [LIT_OTHER ":"] [LIT_CHARS breeding-program]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Expected build/run to succeed"]]}) ) (Com {[LIT_CHARS kill_nc]}) (Com {[LIT_CHARS expect_log]} {[VarSub what_does_the_fox_say]}) ) ) (FunctionDef test_fetch [] (List (Com {[LIT_CHARS serve_jar]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "maven_jar(\n"][LIT_CHARS " name = 'endangered',\n"][LIT_CHARS " artifact = "][RIGHT_D_QUOTE "\""][LIT_CHARS "com.example.carnivore:carnivore:1.23"][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " repository = 'http://localhost:"][VarSub nc_port][LIT_CHARS "/',\n"][LIT_CHARS " sha1 = '"][VarSub sha1][LIT_CHARS "',\n"][LIT_CHARS ")\n"][LIT_CHARS "bind(name = 'mongoose', actual = '@endangered//jar')\n"]]} 0), > ) (= scope= flags=0 words=[] bindings=[('output_base', {[ComSub (Com {[LIT_CHARS bazel]} {[LIT_CHARS info]} {[LIT_CHARS output_base]})]})]) (= scope= flags=0 words=[] bindings=[('external_dir', {[VarSub output_base] [LIT_CHARS /external]})]) (= scope= flags=0 words=[] bindings=[('needle', {[LIT_CHARS endangered]})]) (AndOr OP_AND_IF (DBracket {B1 UNARY_FILE_d {[VarSub external_dir] [LIT_CHARS /] [VarSub needle]}}) (AndOr OP_OR_IF (Com {[LIT_CHARS fail]} {[DQ [VarSub needle][LIT_CHARS " already exists in "][VarSub external_dir]]}) (Com {[LIT_CHARS true]}) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS fetch]} {[LIT_CHARS //zoo] [LIT_OTHER ":"] [LIT_CHARS ball-pit]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Fetch failed"]]}) ) (AndOr OP_OR_IF (DBracket {B1 UNARY_STRING_n {[ComSub (Pipeline (Com {[LIT_CHARS ls]} {[VarSub external_dir]}) (Com {[LIT_CHARS grep]} {[VarSub needle]}) )]}}) (Com {[LIT_CHARS fail]} {[DQ [VarSub needle][LIT_CHARS " not added to "][VarSub external_dir]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS fetch]} {[LIT_CHARS //zoo] [LIT_OTHER ":"] [LIT_CHARS ball-pit]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Incremental fetch failed"]]}) ) (Com {[LIT_CHARS bazel]} {[LIT_CHARS shutdown]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //zoo] [LIT_OTHER ":"] [LIT_CHARS ball-pit]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Fetch shouldn't be required"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS clean]} {[LIT_CHARS --expunge]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Clean failed"]]}) ) (AndOr OP_AND_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS --fetch] [LIT_OTHER "="] [LIT_CHARS false]} {[LIT_CHARS //zoo] [LIT_OTHER ":"] [LIT_CHARS ball-pit]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected build to fail"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "bazel fetch //..."]]}) ) ) (FunctionDef test_prefix_stripping_tar_gz [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS x/y/z]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS abc]]} < (FilenameRedirectNode filename={[LIT_CHARS x/y/z/w]} "> 1), > ) (Com {[LIT_CHARS tar]} {[LIT_CHARS czf]} {[LIT_CHARS x.tar.gz]} {[LIT_CHARS x]}) (= scope= flags=0 words=[] bindings=[('sha256', {[ComSub (Pipeline (Com {[LIT_CHARS sha256sum]} {[LIT_CHARS x.tar.gz]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -f]} {[LIT_CHARS 1]} {[LIT_CHARS -d]} {[SQ ]}) )]})]) (Com {[LIT_CHARS serve_file]} {[LIT_CHARS x.tar.gz]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "new_http_archive(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS x][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " url = "][RIGHT_D_QUOTE "\""][LIT_CHARS "http://localhost:"][VarSub nc_port][LIT_CHARS /x.tar.gz][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " sha256 = "][RIGHT_D_QUOTE "\""][VarSub sha256][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " strip_prefix = "][RIGHT_D_QUOTE "\""][LIT_CHARS x/y/z][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " build_file = "][RIGHT_D_QUOTE "\""][LIT_CHARS x.BUILD][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS x.BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "genrule(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS catter][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " cmd = "][RIGHT_D_QUOTE "\""][LIT_CHARS "cat "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "< > "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "@"][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " outs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS catter.out][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS w][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS x//] [LIT_OTHER ":"] [LIT_CHARS catter]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Build failed"]]}) ) (Com {[LIT_CHARS assert_contains]} {[DQ [LIT_CHARS abc]]} {[LIT_CHARS bazel-genfiles/external/x/catter.out]}) ) ) (FunctionDef test_prefix_stripping_zip [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS x/y/z]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS abc]]} < (FilenameRedirectNode filename={[LIT_CHARS x/y/z/w]} "> 1), > ) (Com {[LIT_CHARS zip]} {[LIT_CHARS -r]} {[LIT_CHARS x]} {[LIT_CHARS x]}) (= scope= flags=0 words=[] bindings=[('sha256', {[ComSub (Pipeline (Com {[LIT_CHARS sha256sum]} {[LIT_CHARS x.zip]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -f]} {[LIT_CHARS 1]} {[LIT_CHARS -d]} {[SQ ]}) )]})]) (Com {[LIT_CHARS serve_file]} {[LIT_CHARS x.zip]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "new_http_archive(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS x][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " url = "][RIGHT_D_QUOTE "\""][LIT_CHARS "http://localhost:"][VarSub nc_port][LIT_CHARS /x.zip][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " sha256 = "][RIGHT_D_QUOTE "\""][VarSub sha256][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " strip_prefix = "][RIGHT_D_QUOTE "\""][LIT_CHARS x/y/z][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " build_file = "][RIGHT_D_QUOTE "\""][LIT_CHARS x.BUILD][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS x.BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "genrule(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS catter][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " cmd = "][RIGHT_D_QUOTE "\""][LIT_CHARS "cat "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "< > "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "@"][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " outs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS catter.out][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS w][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS x//] [LIT_OTHER ":"] [LIT_CHARS catter]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Build failed"]]}) ) (Com {[LIT_CHARS assert_contains]} {[DQ [LIT_CHARS abc]]} {[LIT_CHARS bazel-genfiles/external/x/catter.out]}) ) ) (FunctionDef test_prefix_stripping_existing_repo [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS x/y/z]}) (Com {[LIT_CHARS touch]} {[LIT_CHARS x/y/z/WORKSPACE]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS abc]]} < (FilenameRedirectNode filename={[LIT_CHARS x/y/z/w]} "> 1), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS x/y/z/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "genrule(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS catter][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " cmd = "][RIGHT_D_QUOTE "\""][LIT_CHARS "cat "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "< > "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "@"][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " outs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS catter.out][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS w][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS zip]} {[LIT_CHARS -r]} {[LIT_CHARS x]} {[LIT_CHARS x]}) (= scope= flags=0 words=[] bindings=[('sha256', {[ComSub (Pipeline (Com {[LIT_CHARS sha256sum]} {[LIT_CHARS x.zip]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -f]} {[LIT_CHARS 1]} {[LIT_CHARS -d]} {[SQ ]}) )]})]) (Com {[LIT_CHARS serve_file]} {[LIT_CHARS x.zip]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "http_archive(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS x][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " url = "][RIGHT_D_QUOTE "\""][LIT_CHARS "http://localhost:"][VarSub nc_port][LIT_CHARS /x.zip][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " sha256 = "][RIGHT_D_QUOTE "\""][VarSub sha256][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " strip_prefix = "][RIGHT_D_QUOTE "\""][LIT_CHARS x/y/z][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS ")\n"]]} 0), > ) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS x//] [LIT_OTHER ":"] [LIT_CHARS catter]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Build failed"]]}) ) (Com {[LIT_CHARS assert_contains]} {[DQ [LIT_CHARS abc]]} {[LIT_CHARS bazel-genfiles/external/x/catter.out]}) ) ) (FunctionDef test_moving_build_file [] (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS abc]]} < (FilenameRedirectNode filename={[LIT_CHARS w]} "> 1), > ) (Com {[LIT_CHARS tar]} {[LIT_CHARS czf]} {[LIT_CHARS x.tar.gz]} {[LIT_CHARS w]}) (= scope= flags=0 words=[] bindings=[('sha256', {[ComSub (Pipeline (Com {[LIT_CHARS sha256sum]} {[LIT_CHARS x.tar.gz]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -f]} {[LIT_CHARS 1]} {[LIT_CHARS -d]} {[SQ ]}) )]})]) (Com {[LIT_CHARS serve_file]} {[LIT_CHARS x.tar.gz]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "new_http_archive(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS x][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " url = "][RIGHT_D_QUOTE "\""][LIT_CHARS "http://localhost:"][VarSub nc_port][LIT_CHARS /x.tar.gz][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " sha256 = "][RIGHT_D_QUOTE "\""][VarSub sha256][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " build_file = "][RIGHT_D_QUOTE "\""][LIT_CHARS x.BUILD][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS x.BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "genrule(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS catter][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " cmd = "][RIGHT_D_QUOTE "\""][LIT_CHARS "cat "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "< > "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "@"][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " outs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS catter.out][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS w][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS x//] [LIT_OTHER ":"] [LIT_CHARS catter]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Build 1 failed"]]}) ) (Com {[LIT_CHARS assert_contains]} {[DQ [LIT_CHARS abc]]} {[LIT_CHARS bazel-genfiles/external/x/catter.out]}) (AndOr OP_OR_IF (Com {[LIT_CHARS mv]} {[LIT_CHARS x.BUILD]} {[LIT_CHARS x.BUILD.new]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Moving x.BUILD failed"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS sed]} {[SQ ]} {[LIT_CHARS WORKSPACE]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE.tmp]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Editing WORKSPACE failed"]]}) ) (Com {[LIT_CHARS mv]} {[LIT_CHARS WORKSPACE.tmp]} {[LIT_CHARS WORKSPACE]}) (Com {[LIT_CHARS serve_file]} {[LIT_CHARS x.tar.gz]}) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS x//] [LIT_OTHER ":"] [LIT_CHARS catter]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Build 2 failed"]]}) ) (Com {[LIT_CHARS assert_contains]} {[DQ [LIT_CHARS abc]]} {[LIT_CHARS bazel-genfiles/external/x/catter.out]}) ) ) (FunctionDef test_changing_build_file [] (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS abc]]} < (FilenameRedirectNode filename={[LIT_CHARS w]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS def]]} < (FilenameRedirectNode filename={[LIT_CHARS w.new]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "I'm a build file"]]} < (FilenameRedirectNode filename={[LIT_CHARS BUILD]} "> 1), > ) (Com {[LIT_CHARS tar]} {[LIT_CHARS czf]} {[LIT_CHARS x.tar.gz]} {[LIT_CHARS w]} {[LIT_CHARS w.new]} {[LIT_CHARS BUILD]}) (= scope= flags=0 words=[] bindings=[('sha256', {[ComSub (Pipeline (Com {[LIT_CHARS sha256sum]} {[LIT_CHARS x.tar.gz]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -f]} {[LIT_CHARS 1]} {[LIT_CHARS -d]} {[SQ ]}) )]})]) (Com {[LIT_CHARS serve_file]} {[LIT_CHARS x.tar.gz]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "new_http_archive(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS x][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " url = "][RIGHT_D_QUOTE "\""][LIT_CHARS "http://localhost:"][VarSub nc_port][LIT_CHARS /x.tar.gz][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " sha256 = "][RIGHT_D_QUOTE "\""][VarSub sha256][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " build_file = "][RIGHT_D_QUOTE "\""][LIT_CHARS x.BUILD][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS x.BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "genrule(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS catter][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " cmd = "][RIGHT_D_QUOTE "\""][LIT_CHARS "cat "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "< > "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "@"][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " outs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS catter.out][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS w][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS x.BUILD.new]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "genrule(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS catter][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " cmd = "][RIGHT_D_QUOTE "\""][LIT_CHARS "cat "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "< > "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "@"][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " outs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS catter.out][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " srcs = ["][RIGHT_D_QUOTE "\""][LIT_CHARS w.new][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS x//] [LIT_OTHER ":"] [LIT_CHARS catter]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Build 1 failed"]]}) ) (Com {[LIT_CHARS assert_contains]} {[DQ [LIT_CHARS abc]]} {[LIT_CHARS bazel-genfiles/external/x/catter.out]}) (AndOr OP_OR_IF (Com {[LIT_CHARS sed]} {[SQ ]} {[LIT_CHARS WORKSPACE]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE.tmp]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Editing WORKSPACE failed"]]}) ) (Com {[LIT_CHARS mv]} {[LIT_CHARS WORKSPACE.tmp]} {[LIT_CHARS WORKSPACE]}) (Com {[LIT_CHARS serve_file]} {[LIT_CHARS x.tar.gz]}) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS x//] [LIT_OTHER ":"] [LIT_CHARS catter]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Build 2 failed"]]}) ) (Com {[LIT_CHARS assert_contains]} {[DQ [LIT_CHARS def]]} {[LIT_CHARS bazel-genfiles/external/x/catter.out]}) ) ) (FunctionDef test_truncated [] (List (= scope= flags=0 words=[] bindings=[('http_response', {[DQ [VarSub TEST_TMPDIR][LIT_CHARS /http_response]]})]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[DQ [VarSub http_response]]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "HTTP/1.0 200 OK\n"][LIT_CHARS "Content-length: 200\n"][LIT_CHARS "\n"]]} 0), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS foo]]} < (FilenameRedirectNode filename={[DQ [VarSub http_response]]} >"> 1), > ) (Com {[LIT_CHARS echo]} {[VarSub nc_port test_op=VS_TEST_COLON_EQUALS {[ComSub (Com {[LIT_CHARS pick_random_unused_tcp_port]})]}]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('nc_log', {[DQ [VarSub TEST_TMPDIR][LIT_CHARS /nc.log]]})]) (Fork (Com {[LIT_CHARS nc_l]} {[DQ [VarSub nc_port]]} < (FilenameRedirectNode filename={[DQ [VarSub http_response]]} 0), (DescriptorRedirectNode target={[DQ [VarSub nc_log]]} &"> 1), > ) ) (= scope= flags=0 words=[] bindings=[('nc_pid', {[VarSub !]})]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "http_archive(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS foo][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " url = "][RIGHT_D_QUOTE "\""][LIT_CHARS "http://localhost:"][VarSub nc_port][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " sha256 = "][RIGHT_D_QUOTE "\""][LIT_CHARS b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS ")\n"]]} 0), > ) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS foo//bar]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Build failed, as expected"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Expected 200B, got 4B"]]}) ) ) (FunctionDef test_android_sdk_basic_load [] (List (AndOr OP_OR_IF (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} >"> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "android_sdk_repository(\n"] [LIT_CHARS " name = \"androidsdk\",\n"] [LIT_CHARS " path = \"/fake/path\",\n"] [LIT_CHARS " api_level = 23,\n"] [LIT_CHARS " build_tools_version=\"23.0.0\"\n"] [LIT_CHARS ")\n"]} 0), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Couldn't cat"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS query]} {[DQ [LIT_CHARS "//external:androidsdk"]]} < (FilenameRedirectNode filename={[DQ [VarSub TEST_log]]} "> 2), (FilenameRedirectNode filename={[DQ [VarSub TEST_TMPDIR][LIT_CHARS /queryout]]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected success"]]}) ) (Com {[LIT_CHARS cat]} {[DQ [VarSub TEST_TMPDIR][LIT_CHARS /queryout]]} < (FilenameRedirectNode filename={[DQ [VarSub TEST_log]]} "> 1), > ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "//external:androidsdk"]]}) ) ) (FunctionDef test_flip_flopping [] (List (= scope= flags=0 words=[] bindings=[('REPO_PATH', {[VarSub TEST_TMPDIR] [LIT_CHARS /repo]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub REPO_PATH]]}) (Com {[LIT_CHARS cd]} {[DQ [VarSub REPO_PATH]]}) (Com {[LIT_CHARS touch]} {[LIT_CHARS WORKSPACE]} {[LIT_CHARS BUILD]} {[LIT_CHARS foo]}) (Com {[LIT_CHARS zip]} {[LIT_CHARS -r]} {[LIT_CHARS repo.zip]} {[LIT_OTHER "*"]}) (Com {[LIT_CHARS startup_server]} {[VarSub PWD]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS foo]}) (Com {[LIT_CHARS touch]} {[LIT_CHARS bar]}) (Com {[LIT_CHARS cd]} {[LIT_CHARS -]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS local_ws]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "local_repository(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS repo][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " path = "][RIGHT_D_QUOTE "\""][VarSub REPO_PATH][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS remote_ws]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "http_archive(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS repo][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " url = "][RIGHT_D_QUOTE "\""][LIT_CHARS "http://localhost:"][VarSub fileserver_port][LIT_CHARS /repo.zip][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS ")\n"]]} 0), > ) (= scope= flags=0 words=[] bindings=[('external_dir', {[ComSub (Com {[LIT_CHARS bazel]} {[LIT_CHARS info]} {[LIT_CHARS output_base]})] [LIT_CHARS /external]})]) (For i [{[ComSub (Com {[LIT_CHARS seq]} {[LIT_CHARS 1]} {[LIT_CHARS 3]})]}]) (List (Com {[LIT_CHARS cp]} {[LIT_CHARS local_ws]} {[LIT_CHARS WORKSPACE]}) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS repo//] [LIT_OTHER ":"] [LIT_CHARS all]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Build failed"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -L]} {[DQ [VarSub external_dir][LIT_CHARS /repo]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "creating local symlink failed"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -a]} {[DQ [VarSub external_dir][LIT_CHARS /repo/bar]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "bar not found"]]}) ) (Com {[LIT_CHARS cp]} {[LIT_CHARS remote_ws]} {[LIT_CHARS WORKSPACE]}) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS repo//] [LIT_OTHER ":"] [LIT_CHARS all]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Build failed"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [VarSub external_dir][LIT_CHARS //repo]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "creating remote repo failed"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -a]} {[DQ [VarSub external_dir][LIT_CHARS /repo/foo]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "foo not found"]]}) ) ) ) (Com {[LIT_CHARS shutdown_server]}) ) ) (Com {[LIT_CHARS run_suite]} {[DQ [LIT_CHARS "external tests"]]}) )