(List (= scope= flags=0 words=[] bindings=[('CURRENT_DIR', {[DQ [ComSub (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub BASH_SOURCE bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]]}) (Com {[LIT_CHARS pwd]}) )]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS source]} {[DQ [VarSub CURRENT_DIR][LIT_CHARS /../integration_test_setup.sh]]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "integration_test_setup.sh not found!"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (FunctionDef test_workspace_status_invalidation [] (List (Com {[LIT_CHARS create_new_workspace]}) (= scope= flags=0 words=[] bindings=[('ok', {[VarSub TEST_TMPDIR] [LIT_CHARS /ok.sh]})]) (= scope= flags=0 words=[] bindings=[('bad', {[VarSub TEST_TMPDIR] [LIT_CHARS /bad.sh]})]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub ok]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/bash\n"][LIT_CHARS "exit 0\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub bad]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/bash\n"][LIT_CHARS "exit 1\n"]]} 0), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[VarSub ok]} {[VarSub bad]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS a]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS a/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "genrule(name=\"a\", srcs=[], outs=[\"a.out\"], stamp=1, cmd=\"touch $@\")\n"]} 0), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS --stamp]} {[LIT_CHARS //a]} {[LIT_CHARS --workspace_status_command] [LIT_OTHER "="] [VarSub bad]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build succeeded"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS --stamp]} {[LIT_CHARS //a]} {[LIT_CHARS --workspace_status_command] [LIT_OTHER "="] [VarSub ok]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) ) ) (FunctionDef test_workspace_status_parameters [] (List (Com {[LIT_CHARS create_new_workspace]}) (= scope= flags=0 words=[] bindings=[('cmd', {[VarSub TEST_TMPDIR] [LIT_CHARS /status.sh]})]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub cmd]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/bash\n"][LIT_CHARS "\n"][LIT_CHARS "echo BUILD_SCM_STATUS funky\n"]]} 0), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[VarSub cmd]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS a]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS a/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "genrule(\n"] [LIT_CHARS " name=\"a\",\n"] [LIT_CHARS " srcs=[],\n"] [LIT_CHARS " outs=[\"a.out\"],\n"] [LIT_CHARS " stamp=1,\n"] [LIT_CHARS " cmd=\"touch $@\")\n"]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS --stamp]} {[LIT_CHARS //a]} {[LIT_CHARS --workspace_status_command] [LIT_OTHER "="] [VarSub cmd]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS grep]} {[LIT_CHARS -sq]} {[DQ [LIT_CHARS "BUILD_SCM_STATUS funky"]]} {[LIT_CHARS bazel-out/volatile-status.txt]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "BUILD_SCM_STATUS not found"]]}) ) ) ) (FunctionDef test_workspace_status_cpp [] (List (Com {[LIT_CHARS create_new_workspace]}) (= scope= flags=0 words=[] bindings=[('cmd', {[VarSub TEST_TMPDIR] [LIT_CHARS /status.sh]})]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub cmd]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/bash\n"][LIT_CHARS "\n"][LIT_CHARS "echo BUILD_SCM_STATUS funky\n"]]} 0), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[VarSub cmd]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS a]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS a/linkstamped_library.cc]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "#include \n"] [LIT_CHARS "\n"] [LIT_CHARS "::std::string BuildScmStatus() { return BUILD_SCM_STATUS; }\n"]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS a/verify_scm_status.cc]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "#include \n"] [LIT_CHARS "#include \n"] [LIT_CHARS "\n"] [LIT_CHARS "::std::string BuildScmStatus();\n"] [LIT_CHARS "\n"] [LIT_CHARS "int main() {\n"] [LIT_CHARS " ::std::cout << \"BUILD_SCM_STATUS is: \" << BuildScmStatus();\n"] [LIT_CHARS "\n"] [LIT_CHARS " return (\"funky\" == BuildScmStatus()) ? 0 : 1;\n"] [LIT_CHARS "}\n"]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS a/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "cc_library(\n"] [LIT_CHARS " name=\"linkstamped_library\",\n"] [LIT_CHARS " linkstamp=\"linkstamped_library.cc\")\n"] [LIT_CHARS "cc_test(\n"] [LIT_CHARS " name=\"verify_scm_status\",\n"] [LIT_CHARS " stamp=True,\n"] [LIT_CHARS " srcs=[\"verify_scm_status.cc\"],\n"] [LIT_CHARS " deps=[\":linkstamped_library\"])\n"]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS test]} {[LIT_CHARS --stamp]} {[LIT_CHARS //a] [LIT_OTHER ":"] [LIT_CHARS verify_scm_status]} {[LIT_CHARS --workspace_status_command] [LIT_OTHER "="] [VarSub cmd]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) ) ) (FunctionDef test_stable_and_volatile_status [] (List (Com {[LIT_CHARS create_new_workspace]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub TEST_TMPDIR] [LIT_CHARS /wsc.sh]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "#!/bin/bash\n"][LIT_CHARS "\n"][LIT_CHARS "cat "][VarSub TEST_TMPDIR][LIT_CHARS "/status\n"]]} 0), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[VarSub TEST_TMPDIR] [LIT_CHARS /wsc.sh]}) (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 = \"a\",\n"] [LIT_CHARS " srcs = [],\n"] [LIT_CHARS " outs = [\"ao\"],\n"] [LIT_CHARS " cmd=\"(echo volatile; cat bazel-out/volatile-status.txt; echo; echo stable; cat bazel-out/stable-status.txt; echo) > $@\",\n"] [LIT_CHARS " stamp=1)\n"]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub TEST_TMPDIR] [LIT_CHARS /status]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "STABLE_NAME alice\n"][LIT_CHARS "NUMBER 1\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS --workspace_status_command] [LIT_OTHER "="] [VarSub TEST_TMPDIR] [LIT_CHARS /wsc.sh]} {[LIT_CHARS --stamp]} {[LIT_CHARS //] [LIT_OTHER ":"] [LIT_CHARS a]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) (Com {[LIT_CHARS assert_contains]} {[DQ [LIT_CHARS "STABLE_NAME alice"]]} {[LIT_CHARS bazel-genfiles/ao]}) (Com {[LIT_CHARS assert_contains]} {[DQ [LIT_CHARS "NUMBER 1"]]} {[LIT_CHARS bazel-genfiles/ao]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub TEST_TMPDIR] [LIT_CHARS /status]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "STABLE_NAME alice\n"][LIT_CHARS "NUMBER 2\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS --workspace_status_command] [LIT_OTHER "="] [VarSub TEST_TMPDIR] [LIT_CHARS /wsc.sh]} {[LIT_CHARS --stamp]} {[LIT_CHARS //] [LIT_OTHER ":"] [LIT_CHARS a]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) (Com {[LIT_CHARS assert_contains]} {[DQ [LIT_CHARS "STABLE_NAME alice"]]} {[LIT_CHARS bazel-genfiles/ao]}) (Com {[LIT_CHARS assert_contains]} {[DQ [LIT_CHARS "NUMBER 1"]]} {[LIT_CHARS bazel-genfiles/ao]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub TEST_TMPDIR] [LIT_CHARS /status]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "STABLE_NAME bob\n"][LIT_CHARS "NUMBER 3\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS --workspace_status_command] [LIT_OTHER "="] [VarSub TEST_TMPDIR] [LIT_CHARS /wsc.sh]} {[LIT_CHARS --stamp]} {[LIT_CHARS //] [LIT_OTHER ":"] [LIT_CHARS a]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) (Com {[LIT_CHARS assert_contains]} {[DQ [LIT_CHARS "STABLE_NAME bob"]]} {[LIT_CHARS bazel-genfiles/ao]}) (Com {[LIT_CHARS assert_contains]} {[DQ [LIT_CHARS "NUMBER 3"]]} {[LIT_CHARS bazel-genfiles/ao]}) ) ) (Com {[LIT_CHARS run_suite]} {[DQ [LIT_CHARS "workspace status tests"]]}) )