(List (Case to_match={[DQ [VarSub PLATFORM]]}, pat_word_list=[[{[LIT_CHARS darwin]}], [{[LIT_OTHER "*"]}]] (FunctionDef nc_l [] (Com {[LIT_CHARS nc]} {[LIT_CHARS -l]} {[VarSub 1]}) ) (FunctionDef nc_l [] (Com {[LIT_CHARS nc]} {[LIT_CHARS -l]} {[LIT_CHARS -p]} {[VarSub 1]} {[LIT_CHARS -q]} {[LIT_CHARS 1]}) ) ) (FunctionDef serve_file [] (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 200 OK\n"][LIT_CHARS "\n"]]} 0), > ) (Com {[LIT_CHARS cat]} {[VarSub 1]} < (FilenameRedirectNode filename={[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', {[VarSub TEST_TMPDIR] [LIT_CHARS /nc.log]})]) (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=[('nc_pid', {[VarSub !]})]) ) ) (FunctionDef serve_jar [] (List (Com {[LIT_CHARS make_test_jar]}) (Com {[LIT_CHARS serve_file]} {[VarSub test_jar]}) (Com {[LIT_CHARS cd]} {[VarSub WORKSPACE_DIR]}) ) ) (FunctionDef make_test_jar [] (List (= scope= flags=0 words=[] bindings=[('pkg_dir', {[VarSub TEST_TMPDIR] [LIT_CHARS /carnivore]})]) (Com {[LIT_CHARS rm]} {[LIT_CHARS -fr]} {[VarSub pkg_dir]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub pkg_dir]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub pkg_dir] [LIT_CHARS /Mongoose.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package carnivore;\n"][LIT_CHARS "public class Mongoose {\n"][LIT_CHARS " public static void frolic() {\n"][LIT_CHARS " System.out.println("][RIGHT_D_QUOTE "\""][LIT_CHARS "Tra-la!"][RIGHT_D_QUOTE "\""][LIT_CHARS ");\n"][LIT_CHARS " }\n"][LIT_CHARS "}\n"]]} 0), > ) (Com {[VarSub bazel_javabase] [LIT_CHARS /bin/javac]} {[VarSub pkg_dir] [LIT_CHARS /Mongoose.java]}) (= scope= flags=0 words=[] bindings=[('test_jar', {[VarSub TEST_TMPDIR] [LIT_CHARS /libcarnivore.jar]})]) (Com {[LIT_CHARS cd]} {[VarSub TEST_TMPDIR]}) (Com {[VarSub bazel_javabase] [LIT_CHARS /bin/jar]} {[LIT_CHARS cf]} {[VarSub test_jar]} {[LIT_CHARS carnivore/Mongoose.class]}) (= scope= flags=0 words=[] bindings=[('sha256', {[ComSub (Pipeline (Com {[LIT_CHARS sha256sum]} {[VarSub test_jar]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -f]} {[LIT_CHARS 1]} {[LIT_CHARS -d]} {[SQ ]}) )]})]) (= scope= flags=0 words=[] bindings=[('sha1', {[ComSub (Pipeline (Com {[LIT_CHARS openssl]} {[LIT_CHARS sha1]} {[VarSub test_jar]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -f]} {[LIT_CHARS 2]} {[LIT_CHARS -d]} {[SQ ]}) )]})]) (Com {[LIT_CHARS cd]} {[LIT_CHARS -]}) ) ) (FunctionDef serve_redirect [] (List (Com {[LIT_CHARS echo]} {[VarSub redirect_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=[('redirect_log', {[VarSub TEST_TMPDIR] [LIT_CHARS /redirect.log]})]) (= scope= flags=0 words=[] bindings=[('response', {[ComSub (Com redirects=[(HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "HTTP/1.0 301 Moved Permanently\n"][LIT_CHARS "Location: "][VarSub 1][LIT_CHARS "\n"][LIT_CHARS "\n"]]} 0)]{[LIT_CHARS cat]})]})]) (Fork (Com {[LIT_CHARS nc_l]} {[VarSub redirect_port]} < (DescriptorRedirectNode target={[VarSub redirect_log]} &"> 1), (HereWordRedirectNode here_word={[DQ [VarSub response]]} 0), > ) ) (= scope= flags=0 words=[] bindings=[('redirect_pid', {[VarSub !]})]) ) ) (FunctionDef serve_not_found [] (List (= scope= flags=0 words=[] bindings=[('RESPONSE_BODY', {[VarSub 1 test_op=VS_TEST_COLON_HYPHEN {}]})]) (= 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 404 Not Found\n"][LIT_CHARS "\n"][VarSub RESPONSE_BODY][LIT_CHARS "\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 !]})]) ) ) (FunctionDef wait_for_server_startup [] (List (Com {[LIT_CHARS touch]} {[LIT_CHARS some-file]}) (While (Pipeline! (Com {[LIT_CHARS curl]} {[LIT_CHARS localhost] [LIT_OTHER ":"] [VarSub fileserver_port] [LIT_CHARS /some-file]}) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "waiting for server, exit code: "][VarSub ?]]}) (Com {[LIT_CHARS sleep]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "done waiting for server, exit code: "][VarSub ?]]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS some-file]}) ) ) (FunctionDef create_artifact [] (List (= scope= flags=0 words=[] bindings=[('group_id', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('artifact_id', {[VarSub 2]})]) (= scope= flags=0 words=[] bindings=[('version', {[VarSub 3]})]) (Com {[LIT_CHARS make_test_jar]}) (= scope= flags=0 words=[] bindings=[('maven_path', {[VarSub PWD] [LIT_CHARS /] [ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub group_id]}) (Com {[LIT_CHARS sed]} {[SQ ]}) )] [LIT_CHARS /] [VarSub artifact_id] [LIT_CHARS /] [VarSub version]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub maven_path]}) (Com {[LIT_CHARS openssl]} {[LIT_CHARS sha1]} {[VarSub test_jar]} < (FilenameRedirectNode filename={[VarSub maven_path] [LIT_CHARS /] [VarSub artifact_id] [LIT_CHARS -] [VarSub version] [LIT_CHARS .jar.sha1]} "> 1), > ) (Com {[LIT_CHARS mv]} {[VarSub test_jar]} {[VarSub maven_path] [LIT_CHARS /] [VarSub artifact_id] [LIT_CHARS -] [VarSub version] [LIT_CHARS .jar]}) ) ) (FunctionDef serve_artifact [] (List (Com {[LIT_CHARS startup_server]} {[VarSub PWD]}) (Com {[LIT_CHARS create_artifact]} {[VarSub 1]} {[VarSub 2]} {[VarSub 3]}) ) ) (FunctionDef startup_server [] (List (= scope= flags=0 words=[] bindings=[('fileserver_root', {[VarSub 1]})]) (Com {[LIT_CHARS cd]} {[VarSub fileserver_root]}) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('fileserver_port', {[ComSub (Com {[LIT_CHARS pick_random_unused_tcp_port]})]})]) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) (Fork (Com {[LIT_CHARS python]} {[VarSub python_server]} {[LIT_CHARS --port] [LIT_OTHER "="] [VarSub fileserver_port]}) ) (= scope= flags=0 words=[] bindings=[('fileserver_pid', {[VarSub !]})]) (Com {[LIT_CHARS wait_for_server_startup]}) (Com {[LIT_CHARS cd]} {[LIT_CHARS -]}) ) ) (FunctionDef startup_auth_server [] (List (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('fileserver_port', {[ComSub (Com {[LIT_CHARS pick_random_unused_tcp_port]})]})]) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) (Fork (Com {[LIT_CHARS python]} {[VarSub python_server]} {[LIT_CHARS --port] [LIT_OTHER "="] [VarSub fileserver_port]} {[LIT_CHARS --auth] [LIT_OTHER "="] [LIT_CHARS basic]}) ) (= scope= flags=0 words=[] bindings=[('fileserver_pid', {[VarSub !]})]) (Com {[LIT_CHARS wait_for_server_startup]}) ) ) (FunctionDef shutdown_server [] (List (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub fileserver_pid test_op=VS_TEST_COLON_HYPHEN {}]]} {[LIT_OTHER "]"]}) (AndOr OP_OR_IF (Com {[LIT_CHARS kill]} {[VarSub fileserver_pid]}) (Com {[LIT_CHARS true]}) ) ) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub redirect_pid test_op=VS_TEST_COLON_HYPHEN {}]]} {[LIT_OTHER "]"]}) (AndOr OP_OR_IF (Com {[LIT_CHARS kill]} {[VarSub redirect_pid]}) (Com {[LIT_CHARS true]}) ) ) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub nc_log test_op=VS_TEST_COLON_HYPHEN {}]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS cat]} {[VarSub nc_log]}) ) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub redirect_log test_op=VS_TEST_COLON_HYPHEN {}]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS cat]} {[VarSub redirect_log]}) ) ) ) (FunctionDef kill_nc [] (Com {[LIT_CHARS shutdown_server]}) ) )