(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 run_external_skylark_load_test [] (List (= scope= flags=0 words=[] bindings=[('load_target_to_test', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('expected_test_output', {[VarSub 2]})]) (Com {[LIT_CHARS create_new_workspace]}) (= scope= flags=0 words=[] bindings=[('external_repo', {[VarSub new_workspace_dir]})]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub WORKSPACE_DIR] [LIT_CHARS /WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "local_repository(name = "][RIGHT_D_QUOTE "\""][LIT_CHARS external_repo][RIGHT_D_QUOTE "\""][LIT_CHARS ", path = "][RIGHT_D_QUOTE "\""][VarSub external_repo][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS mkdir]} {[VarSub WORKSPACE_DIR] [LIT_CHARS /local_pkg]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub WORKSPACE_DIR] [LIT_CHARS /local_pkg/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "load("][RIGHT_D_QUOTE "\""][LIT_CHARS "@external_repo//external_pkg:macro_def.bzl"][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][LIT_CHARS macro][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS "macro(name="][RIGHT_D_QUOTE "\""][LIT_CHARS macro_instance][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS mkdir]} {[VarSub WORKSPACE_DIR] [LIT_CHARS /another_local_pkg]}) (Com {[LIT_CHARS touch]} {[VarSub WORKSPACE_DIR] [LIT_CHARS /another_local_pkg/BUILD]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub WORKSPACE_DIR] [LIT_CHARS /another_local_pkg/local_constants.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "OUTPUT_STRING = "][RIGHT_D_QUOTE "\""][LIT_CHARS "LOCAL!"][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"]]} 0), > ) (Com {[LIT_CHARS mkdir]} {[VarSub external_repo] [LIT_CHARS /external_pkg]}) (Com {[LIT_CHARS touch]} {[VarSub external_repo] [LIT_CHARS /external_pkg/BUILD]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub external_repo] [LIT_CHARS /external_pkg/macro_def.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "load("][RIGHT_D_QUOTE "\""][VarSub load_target_to_test][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][LIT_CHARS OUTPUT_STRING][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS "def macro(name):\n"][LIT_CHARS " native.genrule(\n"][LIT_CHARS " name = name,\n"][LIT_CHARS " outs = [name + "][RIGHT_D_QUOTE "\""][LIT_CHARS .txt][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " cmd = "][RIGHT_D_QUOTE "\""][LIT_CHARS "echo "][RIGHT_D_QUOTE "\""][LIT_CHARS " + OUTPUT_STRING + "][RIGHT_D_QUOTE "\""][LIT_CHARS " > "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "@"][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " )\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub external_repo] [LIT_CHARS /external_pkg/external_constants.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "OUTPUT_STRING = "][RIGHT_D_QUOTE "\""][LIT_CHARS "EXTERNAL!"][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"]]} 0), > ) (Com {[LIT_CHARS cd]} {[VarSub WORKSPACE_DIR]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS local_pkg] [LIT_OTHER ":"] [LIT_CHARS macro_instance]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Expected build to succeed"]]}) ) (Com {[LIT_CHARS assert_contains]} {[DQ [VarSub expected_test_output]]} {[LIT_CHARS bazel-genfiles/local_pkg/macro_instance.txt]}) ) ) (FunctionDef test_load_skylark_from_external_repo_with_pkg_relative_label_load [] (Com {[LIT_CHARS run_external_skylark_load_test]} {[DQ [LIT_CHARS "@external_repo//external_pkg:external_constants.bzl"]]} {[DQ [LIT_CHARS "EXTERNAL!"]]}) ) (FunctionDef test_load_skylark_from_external_repo_with_pkg_relative_label_load [] (Com {[LIT_CHARS run_external_skylark_load_test]} {[DQ [LIT_CHARS ":external_constants.bzl"]]} {[DQ [LIT_CHARS "EXTERNAL!"]]}) ) (FunctionDef test_load_skylark_from_external_repo_with_pkg_relative_path_load [] (Com {[LIT_CHARS run_external_skylark_load_test]} {[DQ [LIT_CHARS external_constants]]} {[DQ [LIT_CHARS "EXTERNAL!"]]}) ) (FunctionDef test_load_skylark_from_external_repo_with_pkg_relative_path_load [] (Com {[LIT_CHARS run_external_skylark_load_test]} {[DQ [LIT_CHARS "//external_pkg:external_constants.bzl"]]} {[DQ [LIT_CHARS "EXTERNAL!"]]}) ) (FunctionDef test_load_skylark_from_external_repo_with_repo_relative_label_load [] (Com {[LIT_CHARS run_external_skylark_load_test]} {[DQ [LIT_CHARS "@//another_local_pkg:local_constants.bzl"]]} {[DQ [LIT_CHARS "LOCAL!"]]}) ) (FunctionDef test_load_skylark_from_external_repo_with_repo_relative_label_load [] (Com {[LIT_CHARS run_external_skylark_load_test]} {[DQ [LIT_CHARS /another_local_pkg/local_constants]]} {[DQ [LIT_CHARS "LOCAL!"]]}) ) (FunctionDef test_skylark_repository_relative_label [] (List (= scope= flags=0 words=[] bindings=[('repo2', {[VarSub TEST_TMPDIR] [LIT_CHARS /repo2]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub repo2]}) (Com {[LIT_CHARS touch]} {[VarSub repo2] [LIT_CHARS /WORKSPACE]} {[VarSub repo2] [LIT_CHARS /BUILD]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub repo2] [LIT_CHARS /remote.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def _impl(ctx):\n"][LIT_CHARS " print(Label("][RIGHT_D_QUOTE "\""][LIT_CHARS "//foo:bar"][RIGHT_D_QUOTE "\""][LIT_CHARS "))\n"][LIT_CHARS "\n"][LIT_CHARS "remote_rule = rule(\n"][LIT_CHARS " implementation = _impl,\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 "local_repository(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS r][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " path = "][RIGHT_D_QUOTE "\""][VarSub repo2][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "load('@r//:remote.bzl', 'remote_rule')\n"][LIT_CHARS "\n"][LIT_CHARS "remote_rule(name = 'local')\n"]]} 0), > ) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [LIT_OTHER ":"] [LIT_CHARS local]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Building local failed"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "@r//foo:bar"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub repo2] [LIT_CHARS /remote.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def _impl(ctx):\n"][LIT_CHARS " print(Label("][RIGHT_D_QUOTE "\""][LIT_CHARS "//foo:bar"][RIGHT_D_QUOTE "\""][LIT_CHARS ", relative_to_caller_repository = True))\n"][LIT_CHARS "\n"][LIT_CHARS "remote_rule = rule(\n"][LIT_CHARS " implementation = _impl,\n"][LIT_CHARS ")\n"]]} 0), > ) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [LIT_OTHER ":"] [LIT_CHARS local]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Building local failed"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "//foo:bar"]]}) ) ) (FunctionDef test_skylark_repository_nested_relative_label [] (List (= scope= flags=0 words=[] bindings=[('repo1', {[VarSub TEST_TMPDIR] [LIT_CHARS /repo1]})]) (= scope= flags=0 words=[] bindings=[('repo2', {[VarSub TEST_TMPDIR] [LIT_CHARS /repo2]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub repo1]} {[VarSub repo2]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "local_repository(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS r1][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " path = "][RIGHT_D_QUOTE "\""][VarSub repo1][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS ")\n"][LIT_CHARS "local_repository(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS r2][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " path = "][RIGHT_D_QUOTE "\""][VarSub repo2][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][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 = \"foo\",\n"] [LIT_CHARS " srcs = [\"@r1//:bar\"],\n"] [LIT_CHARS " outs = [\"foo.out\"],\n"] [LIT_CHARS " cmd = \"echo '$(SRCS)' > $@\",\n"] [LIT_CHARS ")\n"]} 0), > ) (Com {[LIT_CHARS touch]} {[VarSub repo1] [LIT_CHARS /WORKSPACE]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub repo1] [LIT_CHARS /BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "load('@r2//:remote.bzl', 'remote_rule')\n"][LIT_CHARS "\n"][LIT_CHARS "remote_rule(\n"][LIT_CHARS " name = 'bar',\n"][LIT_CHARS " visibility = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "//visibility:public"][RIGHT_D_QUOTE "\""][LIT_CHARS "]\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS touch]} {[VarSub repo2] [LIT_CHARS /WORKSPACE]} {[VarSub repo2] [LIT_CHARS /BUILD]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub repo2] [LIT_CHARS /remote.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def _impl(ctx):\n"][LIT_CHARS " print(Label("][RIGHT_D_QUOTE "\""][LIT_CHARS "//foo:bar"][RIGHT_D_QUOTE "\""][LIT_CHARS "))\n"][LIT_CHARS "\n"][LIT_CHARS "remote_rule = rule(\n"][LIT_CHARS " implementation = _impl,\n"][LIT_CHARS ")\n"]]} 0), > ) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [LIT_OTHER ":"] [LIT_CHARS foo]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Building local failed"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "@r2//foo:bar"]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub repo2] [LIT_CHARS /remote.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def _impl(ctx):\n"][LIT_CHARS " print(Label("][RIGHT_D_QUOTE "\""][LIT_CHARS "//foo:bar"][RIGHT_D_QUOTE "\""][LIT_CHARS ", relative_to_caller_repository = True))\n"][LIT_CHARS "\n"][LIT_CHARS "remote_rule = rule(\n"][LIT_CHARS " implementation = _impl,\n"][LIT_CHARS ")\n"]]} 0), > ) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [LIT_OTHER ":"] [LIT_CHARS foo]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Building local failed"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "@r1//foo:bar"]]}) ) ) (FunctionDef test_aspects_and_skylark_repositories [] (List (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "bind(name="][RIGHT_D_QUOTE "\""][LIT_CHARS x1][RIGHT_D_QUOTE "\""][LIT_CHARS ", actual="][RIGHT_D_QUOTE "\""][LIT_CHARS "//:x1"][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS "load("][RIGHT_D_QUOTE "\""][LIT_CHARS "//:repo.bzl"][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][LIT_CHARS repo][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS "bind(name="][RIGHT_D_QUOTE "\""][LIT_CHARS x2][RIGHT_D_QUOTE "\""][LIT_CHARS ", actual="][RIGHT_D_QUOTE "\""][LIT_CHARS "//:x2"][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "load("][RIGHT_D_QUOTE "\""][LIT_CHARS "//:rule.bzl"][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][LIT_CHARS test_rule][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS "\n"][LIT_CHARS "filegroup(name = "][RIGHT_D_QUOTE "\""][LIT_CHARS x1][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS "filegroup(name = "][RIGHT_D_QUOTE "\""][LIT_CHARS x2][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS "test_rule(\n"][LIT_CHARS " name = "][RIGHT_D_QUOTE "\""][LIT_CHARS tr][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " deps = ["][RIGHT_D_QUOTE "\""][LIT_CHARS "//external:x1"][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][LIT_CHARS "//external:x2"][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS repo.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def repo():\n"][LIT_CHARS " pass\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS rule.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def test_aspect_impl(target, ctx):\n"][LIT_CHARS " return struct()\n"][LIT_CHARS "\n"][LIT_CHARS "test_aspect = aspect(\n"][LIT_CHARS " attrs = {\n"][LIT_CHARS " "][RIGHT_D_QUOTE "\""][LIT_CHARS _x][RIGHT_D_QUOTE "\""][LIT_CHARS ": attr.label_list(default = [\n"][LIT_CHARS " Label("][RIGHT_D_QUOTE "\""][LIT_CHARS "//external:x1"][RIGHT_D_QUOTE "\""][LIT_CHARS "),\n"][LIT_CHARS " Label("][RIGHT_D_QUOTE "\""][LIT_CHARS "//external:x2"][RIGHT_D_QUOTE "\""][LIT_CHARS "),\n"][LIT_CHARS " ]),\n"][LIT_CHARS " },\n"][LIT_CHARS " implementation = test_aspect_impl,\n"][LIT_CHARS ")\n"][LIT_CHARS "\n"][LIT_CHARS "def test_rule_impl(ctx):\n"][LIT_CHARS " return struct()\n"][LIT_CHARS "\n"][LIT_CHARS "test_rule = rule(\n"][LIT_CHARS " attrs = {\n"][LIT_CHARS " "][RIGHT_D_QUOTE "\""][LIT_CHARS deps][RIGHT_D_QUOTE "\""][LIT_CHARS ": attr.label_list(\n"][LIT_CHARS " allow_files = True,\n"][LIT_CHARS " allow_rules = [\n"][LIT_CHARS " "][RIGHT_D_QUOTE "\""][LIT_CHARS filegroup][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " ],\n"][LIT_CHARS " aspects = [test_aspect],\n"][LIT_CHARS " ),\n"][LIT_CHARS " },\n"][LIT_CHARS " implementation = test_rule_impl,\n"][LIT_CHARS ")\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [LIT_OTHER ":"] [LIT_CHARS tr]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "build failed"]]}) ) ) ) (Com {[LIT_CHARS run_suite]} {[DQ [LIT_CHARS "Test Skylark loads from/in external repositories"]]}) )