(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 test_macro_local_repository [] (List (Com {[LIT_CHARS create_new_workspace]}) (= scope= flags=0 words=[] bindings=[('repo2', {[VarSub new_workspace_dir]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS carnivore]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS carnivore/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "genrule(\n"] [LIT_CHARS " name = \"mongoose\",\n"] [LIT_CHARS " cmd = \"echo 'Tra-la!' | tee $@\",\n"] [LIT_CHARS " outs = [\"moogoose.txt\"],\n"] [LIT_CHARS " visibility = [\"//visibility:public\"],\n"] [LIT_CHARS ")\n"]} 0), > ) (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 "load('/test', 'macro')\n"][LIT_CHARS "\n"][LIT_CHARS "macro('"][VarSub repo2][LIT_CHARS "')\n"]]} 0), > ) (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} < (FilenameRedirectNode filename={[LIT_CHARS BUILD]} "> 1), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS test.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def macro(path):\n"][LIT_CHARS " print('bleh')\n"][LIT_CHARS " native.local_repository(name='endangered', path=path)\n"][LIT_CHARS " native.bind(name='mongoose', actual='@endangered//carnivore:mongoose')\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=False body_word={[LIT_CHARS "genrule(\n"] [LIT_CHARS " name = \"ball-pit1\",\n"] [LIT_CHARS " srcs = [\"@endangered//carnivore:mongoose\"],\n"] [LIT_CHARS " outs = [\"ball-pit1.txt\"],\n"] [LIT_CHARS " cmd = \"cat $< >$@\",\n"] [LIT_CHARS ")\n"] [LIT_CHARS "\n"] [LIT_CHARS "genrule(\n"] [LIT_CHARS " name = \"ball-pit2\",\n"] [LIT_CHARS " srcs = [\"//external:mongoose\"],\n"] [LIT_CHARS " outs = [\"ball-pit2.txt\"],\n"] [LIT_CHARS " cmd = \"cat $< >$@\",\n"] [LIT_CHARS ")\n"]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //zoo] [LIT_OTHER ":"] [LIT_CHARS ball-pit1]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS bleh.]]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Tra-la!"]]}) (Com {[LIT_CHARS cat]} {[LIT_CHARS bazel-genfiles/zoo/ball-pit1.txt]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Tra-la!"]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //zoo] [LIT_OTHER ":"] [LIT_CHARS ball-pit1]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build"]]}) ) (Com {[LIT_CHARS expect_not_log]} {[DQ [LIT_CHARS "Tra-la!"]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //zoo] [LIT_OTHER ":"] [LIT_CHARS ball-pit2]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build"]]}) ) (Com {[LIT_CHARS expect_not_log]} {[DQ [LIT_CHARS "Tra-la!"]]}) (Com {[LIT_CHARS cat]} {[LIT_CHARS bazel-genfiles/zoo/ball-pit2.txt]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Tra-la!"]]}) (Com {[LIT_CHARS create_new_workspace]}) (= scope= flags=0 words=[] bindings=[('repo2', {[VarSub new_workspace_dir]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS carnivore]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS carnivore/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "genrule(\n"] [LIT_CHARS " name = \"mongoose\",\n"] [LIT_CHARS " cmd = \"echo 'Tra-la-la!' | tee $@\",\n"] [LIT_CHARS " outs = [\"moogoose.txt\"],\n"] [LIT_CHARS " visibility = [\"//visibility:public\"],\n"] [LIT_CHARS ")\n"]} 0), > ) (Com {[LIT_CHARS cd]} {[VarSub WORKSPACE_DIR]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS test.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def macro(path):\n"][LIT_CHARS " print('blah')\n"][LIT_CHARS " native.local_repository(name='endangered', path='"][VarSub repo2][LIT_CHARS "')\n"][LIT_CHARS " native.bind(name='mongoose', actual='@endangered//carnivore:mongoose')\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //zoo] [LIT_OTHER ":"] [LIT_CHARS ball-pit1]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS blah.]]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Tra-la-la!"]]}) (Com {[LIT_CHARS cat]} {[LIT_CHARS bazel-genfiles/zoo/ball-pit1.txt]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Tra-la-la!"]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //zoo] [LIT_OTHER ":"] [LIT_CHARS ball-pit1]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build"]]}) ) (Com {[LIT_CHARS expect_not_log]} {[DQ [LIT_CHARS "Tra-la-la!"]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //zoo] [LIT_OTHER ":"] [LIT_CHARS ball-pit2]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build"]]}) ) (Com {[LIT_CHARS expect_not_log]} {[DQ [LIT_CHARS "Tra-la-la!"]]}) (Com {[LIT_CHARS cat]} {[LIT_CHARS bazel-genfiles/zoo/ball-pit2.txt]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Tra-la-la!"]]}) ) ) (FunctionDef test_load_from_symlink_to_outside_of_workspace [] (List (= scope= flags=0 words=[] bindings=[('OTHER', {[VarSub TEST_TMPDIR] [LIT_CHARS /other]})]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "load("][RIGHT_D_QUOTE "\""][LIT_CHARS /a/b/c][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][LIT_CHARS c][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"]]} 0), > ) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub OTHER] [LIT_CHARS /a/b]}) (Com {[LIT_CHARS touch]} {[VarSub OTHER] [LIT_CHARS /a/b/BUILD]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[VarSub OTHER] [LIT_CHARS /a/b/c.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def c():\n"][LIT_CHARS " pass\n"]]} 0), > ) (Com {[LIT_CHARS touch]} {[LIT_CHARS BUILD]}) (Com {[LIT_CHARS ln]} {[LIT_CHARS -s]} {[VarSub TEST_TMPDIR] [LIT_CHARS /other/a]} {[LIT_CHARS a]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [LIT_OTHER ":"] [LIT_CHARS BUILD]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build"]]}) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -fr]} {[VarSub TEST_TMPDIR] [LIT_CHARS /other]}) ) ) (FunctionDef test_external_load_from_workspace [] (List (Com {[LIT_CHARS create_new_workspace]}) (= scope= flags=0 words=[] bindings=[('repo2', {[VarSub new_workspace_dir]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS carnivore]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS carnivore/BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "genrule(\n"] [LIT_CHARS " name = \"mongoose\",\n"] [LIT_CHARS " cmd = \"echo 'Tra-la-la!' | tee $@\",\n"] [LIT_CHARS " outs = [\"moogoose.txt\"],\n"] [LIT_CHARS " visibility = [\"//visibility:public\"],\n"] [LIT_CHARS ")\n"]} 0), > ) (Com {[LIT_CHARS create_new_workspace]}) (= scope= flags=0 words=[] bindings=[('repo3', {[VarSub new_workspace_dir]})]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS test.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def macro(path):\n"][LIT_CHARS " print('bleh')\n"][LIT_CHARS " native.local_repository(name='endangered', path=path)\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "exports_files([\"test.bzl\"])\n"]} 0), > ) (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 "local_repository(name='proxy', path='"][VarSub repo3][LIT_CHARS "')\n"][LIT_CHARS "load('@proxy//:test.bzl', 'macro')\n"][LIT_CHARS "macro('"][VarSub repo2][LIT_CHARS "')\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS endangered//carnivore] [LIT_OTHER ":"] [LIT_CHARS mongoose]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS bleh.]]}) ) ) (FunctionDef test_load_repository_with_load [] (List (Com {[LIT_CHARS create_new_workspace]}) (= scope= flags=0 words=[] bindings=[('repo2', {[VarSub new_workspace_dir]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Tra-la!"]]} < (FilenameRedirectNode filename={[LIT_CHARS data.txt]} "> 1), > ) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "exports_files([\"data.txt\"])\n"]} 0), (FilenameRedirectNode filename={[LIT_CHARS BUILD]} "> 1), > ) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "def macro():\n"] [LIT_CHARS " print('bleh')\n"]} 0), (FilenameRedirectNode filename={[LIT_CHARS ext.bzl]} "> 1), > ) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "workspace(name = \"foo\")\n"] [LIT_CHARS "load(\"//:ext.bzl\", \"macro\")\n"] [LIT_CHARS "macro()\n"]} 0), (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), > ) (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 "local_repository(name='foo', path='"][VarSub repo2][LIT_CHARS "')\n"][LIT_CHARS "load("][RIGHT_D_QUOTE "\""][LIT_CHARS "@foo//:ext.bzl"][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][LIT_CHARS macro][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS "macro()\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "genrule(name = \"foo\", srcs=[\"@foo//:data.txt\"], outs=[\"foo.txt\"], cmd = \"cat $< | tee $@\")\n"]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //] [LIT_OTHER ":"] [LIT_CHARS foo]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS bleh]]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Tra-la!"]]}) ) ) (FunctionDef test_cycle_load_repository [] (List (Com {[LIT_CHARS create_new_workspace]}) (= scope= flags=0 words=[] bindings=[('repo2', {[VarSub new_workspace_dir]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Tra-la!"]]} < (FilenameRedirectNode filename={[LIT_CHARS data.txt]} "> 1), > ) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "exports_files([\"data.txt\"])\n"]} 0), (FilenameRedirectNode filename={[LIT_CHARS BUILD]} "> 1), > ) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "def macro():\n"] [LIT_CHARS " print('bleh')\n"]} 0), (FilenameRedirectNode filename={[LIT_CHARS ext.bzl]} "> 1), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), > ) (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 "load("][RIGHT_D_QUOTE "\""][LIT_CHARS "@foo//:ext.bzl"][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][LIT_CHARS macro][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS "macro()\n"][LIT_CHARS "local_repository(name='foo', path='"][VarSub repo2][LIT_CHARS "')\n"]]} 0), > ) (= scope= flags=0 words=[] bindings=[('exitCode', {[LIT_CHARS 0]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS foo//] [LIT_OTHER ":"] [LIT_CHARS data.txt]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (= scope= flags=0 words=[] bindings=[('exitCode', {[VarSub ?]})]) ) (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[VarSub exitCode]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "building @foo//:data.txt succeed while expected failure"]]}) ) (Com {[LIT_CHARS expect_not_log]} {[DQ [LIT_CHARS PACKAGE]]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Failed to load Skylark extension '@foo//:ext.bzl'"]]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "Maybe repository 'foo' was defined later in your WORKSPACE file?"]]}) ) ) (FunctionDef test_skylark_local_repository [] (List (Com {[LIT_CHARS create_new_workspace]}) (= scope= flags=0 words=[] bindings=[('repo2', {[VarSub new_workspace_dir]})]) (Com {[LIT_CHARS rm]} {[VarSub repo2] [LIT_CHARS /WORKSPACE]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS BUILD]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "genrule(name='bar', cmd='echo foo | tee $@', outs=['bar.txt'])\n"]} 0), > ) (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 "load('/test', 'repo')\n"][LIT_CHARS "repo(name='foo', path='"][VarSub repo2][LIT_CHARS "')\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS test.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def _impl(repository_ctx):\n"][LIT_CHARS " repository_ctx.symlink(repository_ctx.path(repository_ctx.attr.path), repository_ctx.path("][RIGHT_D_QUOTE "\""][RIGHT_D_QUOTE "\""][LIT_CHARS "))\n"][LIT_CHARS "\n"][LIT_CHARS "repo = repository_rule(\n"][LIT_CHARS " implementation=_impl,\n"][LIT_CHARS " local=True,\n"][LIT_CHARS " attrs={"][RIGHT_D_QUOTE "\""][LIT_CHARS path][RIGHT_D_QUOTE "\""][LIT_CHARS ": attr.string(mandatory=True)})\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS BUILD]} "> 1), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS foo//] [LIT_OTHER ":"] [LIT_CHARS bar]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS foo]]}) (Com {[LIT_CHARS expect_not_log]} {[DQ [LIT_CHARS "Workspace name in .*/WORKSPACE (@__main__) does not match the name given in the repository's definition (@foo)"]]}) (Com {[LIT_CHARS cat]} {[LIT_CHARS bazel-genfiles/external/foo/bar.txt]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS foo]]}) ) ) (FunctionDef setup_skylark_repository [] (List (Com {[LIT_CHARS create_new_workspace]}) (= scope= flags=0 words=[] bindings=[('repo2', {[VarSub new_workspace_dir]})]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS bar.txt]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "filegroup(name='bar', srcs=['bar.txt'])"]]} < (FilenameRedirectNode filename={[LIT_CHARS BUILD]} "> 1), > ) (Com {[LIT_CHARS cd]} {[DQ [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 "load('/test', 'repo')\n"][LIT_CHARS "repo(name = 'foo')\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS BUILD]} "> 1), > ) ) ) (FunctionDef test_skylark_repository_which_and_execute [] (List (Com {[LIT_CHARS setup_skylark_repository]}) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS info]}) ) (Com < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "#!/bin/bash"]]} < (FilenameRedirectNode filename={[LIT_CHARS bin.sh]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "exit 0"]]} < (FilenameRedirectNode filename={[LIT_CHARS bin.sh]} >"> 1), > ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[LIT_CHARS bin.sh]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS test.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def _impl(repository_ctx):\n"][LIT_CHARS " # Symlink so a repository is created\n"][LIT_CHARS " repository_ctx.symlink(repository_ctx.path("][RIGHT_D_QUOTE "\""][VarSub repo2][RIGHT_D_QUOTE "\""][LIT_CHARS "), repository_ctx.path("][RIGHT_D_QUOTE "\""][RIGHT_D_QUOTE "\""][LIT_CHARS "))\n"][LIT_CHARS " bash = repository_ctx.which("][RIGHT_D_QUOTE "\""][LIT_CHARS bash][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS " if bash == None:\n"][LIT_CHARS " fail("][RIGHT_D_QUOTE "\""][LIT_CHARS "Bash not found!"][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS " bin = repository_ctx.which("][RIGHT_D_QUOTE "\""][LIT_CHARS bin.sh][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS " if bin == None:\n"][LIT_CHARS " fail("][RIGHT_D_QUOTE "\""][LIT_CHARS "bin.sh not found!"][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS " result = repository_ctx.execute([bash, "][RIGHT_D_QUOTE "\""][LIT_CHARS --version][RIGHT_D_QUOTE "\""][LIT_CHARS "], 10, {"][RIGHT_D_QUOTE "\""][LIT_CHARS FOO][RIGHT_D_QUOTE "\""][LIT_CHARS ": "][RIGHT_D_QUOTE "\""][LIT_CHARS BAR][RIGHT_D_QUOTE "\""][LIT_CHARS "})\n"][LIT_CHARS " if result.return_code != 0:\n"][LIT_CHARS " fail("][RIGHT_D_QUOTE "\""][LIT_CHARS "Non-zero return code from bash: "][RIGHT_D_QUOTE "\""][LIT_CHARS " + str(result.return_code))\n"][LIT_CHARS " if result.stderr != "][RIGHT_D_QUOTE "\""][RIGHT_D_QUOTE "\""][LIT_CHARS ":\n"][LIT_CHARS " fail("][RIGHT_D_QUOTE "\""][LIT_CHARS "Non-empty error output: "][RIGHT_D_QUOTE "\""][LIT_CHARS " + result.stderr)\n"][LIT_CHARS " print(result.stdout)\n"][LIT_CHARS "repo = repository_rule(implementation=_impl, local=True)\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS foo//] [LIT_OTHER ":"] [LIT_CHARS bar]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > more_env=[('FOO', {[DQ [LIT_CHARS BAZ]]}), ('PATH', {[DQ [VarSub PATH][LIT_CHARS ":"][VarSub PWD]]})] ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS version]]}) ) ) (FunctionDef test_skylark_repository_execute_stderr [] (List (Com {[LIT_CHARS setup_skylark_repository]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS test.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def _impl(repository_ctx):\n"][LIT_CHARS " # Symlink so a repository is created\n"][LIT_CHARS " repository_ctx.symlink(repository_ctx.path("][RIGHT_D_QUOTE "\""][VarSub repo2][RIGHT_D_QUOTE "\""][LIT_CHARS "), repository_ctx.path("][RIGHT_D_QUOTE "\""][RIGHT_D_QUOTE "\""][LIT_CHARS "))\n"][LIT_CHARS " result = repository_ctx.execute([str(repository_ctx.which("][RIGHT_D_QUOTE "\""][LIT_CHARS bash][RIGHT_D_QUOTE "\""][LIT_CHARS ")), "][RIGHT_D_QUOTE "\""][LIT_CHARS -c][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][LIT_CHARS "echo erf >&2; exit 1"][RIGHT_D_QUOTE "\""][LIT_CHARS "])\n"][LIT_CHARS " if result.return_code != 1:\n"][LIT_CHARS " fail("][RIGHT_D_QUOTE "\""][LIT_CHARS "Incorrect return code from bash: %s != 1"][\ LIT_ESCAPED_CHAR "\\n"][LIT_CHARS "%s"][RIGHT_D_QUOTE "\""][LIT_CHARS " % (result.return_code, result.stderr))\n"][LIT_CHARS " if result.stdout != "][RIGHT_D_QUOTE "\""][RIGHT_D_QUOTE "\""][LIT_CHARS ":\n"][LIT_CHARS " fail("][RIGHT_D_QUOTE "\""][LIT_CHARS "Non-empty output: %s (stderr was %s)"][RIGHT_D_QUOTE "\""][LIT_CHARS " % (result.stdout, result.stderr))\n"][LIT_CHARS " print(result.stderr)\n"][LIT_CHARS "repo = repository_rule(implementation=_impl, local=True)\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS foo//] [LIT_OTHER ":"] [LIT_CHARS bar]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS erf]]}) ) ) (FunctionDef test_skylark_repository_execute_env_and_workdir [] (List (Com {[LIT_CHARS setup_skylark_repository]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS test.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def _impl(repository_ctx):\n"][LIT_CHARS " # Symlink so a repository is created\n"][LIT_CHARS " repository_ctx.symlink(repository_ctx.path("][RIGHT_D_QUOTE "\""][VarSub repo2][RIGHT_D_QUOTE "\""][LIT_CHARS "), repository_ctx.path("][RIGHT_D_QUOTE "\""][RIGHT_D_QUOTE "\""][LIT_CHARS "))\n"][LIT_CHARS " result = repository_ctx.execute(\n"][LIT_CHARS " [str(repository_ctx.which("][RIGHT_D_QUOTE "\""][LIT_CHARS bash][RIGHT_D_QUOTE "\""][LIT_CHARS ")), "][RIGHT_D_QUOTE "\""][LIT_CHARS -c][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][LIT_CHARS "echo PWD="][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "PWD TOTO="][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS TOTO][RIGHT_D_QUOTE "\""][LIT_CHARS "],\n"][LIT_CHARS " 1000000,\n"][LIT_CHARS " { "][RIGHT_D_QUOTE "\""][LIT_CHARS TOTO][RIGHT_D_QUOTE "\""][LIT_CHARS ": "][RIGHT_D_QUOTE "\""][LIT_CHARS titi][RIGHT_D_QUOTE "\""][LIT_CHARS " })\n"][LIT_CHARS " if result.return_code != 0:\n"][LIT_CHARS " fail("][RIGHT_D_QUOTE "\""][LIT_CHARS "Incorrect return code from bash: %s != 0"][\ LIT_ESCAPED_CHAR "\\n"][LIT_CHARS "%s"][RIGHT_D_QUOTE "\""][LIT_CHARS " % (result.return_code, result.stderr))\n"][LIT_CHARS " print(result.stdout)\n"][LIT_CHARS "repo = repository_rule(implementation=_impl, local=True)\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS foo//] [LIT_OTHER ":"] [LIT_CHARS bar]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "PWD="][VarSub repo2][LIT_CHARS " TOTO=titi"]]}) ) ) (FunctionDef test_skylark_repository_environ [] (List (Com {[LIT_CHARS setup_skylark_repository]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS test.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def _impl(repository_ctx):\n"][LIT_CHARS " print(repository_ctx.os.environ["][RIGHT_D_QUOTE "\""][LIT_CHARS FOO][RIGHT_D_QUOTE "\""][LIT_CHARS "])\n"][LIT_CHARS " # Symlink so a repository is created\n"][LIT_CHARS " repository_ctx.symlink(repository_ctx.path("][RIGHT_D_QUOTE "\""][VarSub repo2][RIGHT_D_QUOTE "\""][LIT_CHARS "), repository_ctx.path("][RIGHT_D_QUOTE "\""][RIGHT_D_QUOTE "\""][LIT_CHARS "))\n"][LIT_CHARS "repo = repository_rule(implementation=_impl, local=False)\n"]]} 0), > ) (Com {[LIT_CHARS bazel]} {[LIT_CHARS clean]} {[LIT_CHARS --expunge]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS foo//] [LIT_OTHER ":"] [LIT_CHARS bar]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > more_env=[('FOO', {[LIT_CHARS BAR]})] ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS BAR]]}) (Com {[LIT_CHARS bazel]} {[LIT_CHARS clean]} {[LIT_CHARS --expunge]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > more_env=[('FOO', {[LIT_CHARS BAR]})] ) (Com {[LIT_CHARS bazel]} {[LIT_CHARS info]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > more_env=[('FOO', {[LIT_CHARS BAR]})] ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS foo//] [LIT_OTHER ":"] [LIT_CHARS bar]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > more_env=[('FOO', {[LIT_CHARS BAZ]})] ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS BAZ]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS foo//] [LIT_OTHER ":"] [LIT_CHARS bar]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > more_env=[('FOO', {[LIT_CHARS BEZ]})] ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build"]]}) ) (Com {[LIT_CHARS expect_not_log]} {[DQ [LIT_CHARS BEZ]]}) (Com {[LIT_CHARS bazel]} {[LIT_CHARS shutdown]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS foo//] [LIT_OTHER ":"] [LIT_CHARS bar]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > more_env=[('FOO', {[LIT_CHARS BEZ]})] ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build"]]}) ) (Com {[LIT_CHARS expect_not_log]} {[DQ [LIT_CHARS BEZ]]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS test.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def _impl(repository_ctx):\n"][LIT_CHARS " print(repository_ctx.os.environ["][RIGHT_D_QUOTE "\""][LIT_CHARS BAR][RIGHT_D_QUOTE "\""][LIT_CHARS "])\n"][LIT_CHARS " # Symlink so a repository is created\n"][LIT_CHARS " repository_ctx.symlink(repository_ctx.path("][RIGHT_D_QUOTE "\""][VarSub repo2][RIGHT_D_QUOTE "\""][LIT_CHARS "), repository_ctx.path("][RIGHT_D_QUOTE "\""][RIGHT_D_QUOTE "\""][LIT_CHARS "))\n"][LIT_CHARS "repo = repository_rule(implementation=_impl, local=True)\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS foo//] [LIT_OTHER ":"] [LIT_CHARS bar]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > more_env=[('BAR', {[LIT_CHARS BEZ]})] ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS BEZ]]}) (Com {[LIT_CHARS bazel]} {[LIT_CHARS shutdown]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS test.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def _impl(repository_ctx):\n"][LIT_CHARS " print(repository_ctx.os.environ["][RIGHT_D_QUOTE "\""][LIT_CHARS BAZ][RIGHT_D_QUOTE "\""][LIT_CHARS "])\n"][LIT_CHARS " # Symlink so a repository is created\n"][LIT_CHARS " repository_ctx.symlink(repository_ctx.path("][RIGHT_D_QUOTE "\""][VarSub repo2][RIGHT_D_QUOTE "\""][LIT_CHARS "), repository_ctx.path("][RIGHT_D_QUOTE "\""][RIGHT_D_QUOTE "\""][LIT_CHARS "))\n"][LIT_CHARS "repo = repository_rule(implementation=_impl, local=True)\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS foo//] [LIT_OTHER ":"] [LIT_CHARS bar]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > more_env=[('BAZ', {[LIT_CHARS BOZ]})] ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS BOZ]]}) ) ) (FunctionDef test_skylark_repository_executable_flag [] (List (Com {[LIT_CHARS setup_skylark_repository]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS test.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def _impl(repository_ctx):\n"][LIT_CHARS " repository_ctx.file("][RIGHT_D_QUOTE "\""][LIT_CHARS test.sh][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][LIT_CHARS "exit 0"][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS " repository_ctx.file("][RIGHT_D_QUOTE "\""][LIT_CHARS BUILD][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][LIT_CHARS "sh_binary(name='bar',srcs=['test.sh'])"][RIGHT_D_QUOTE "\""][LIT_CHARS ", False)\n"][LIT_CHARS " repository_ctx.template("][RIGHT_D_QUOTE "\""][LIT_CHARS test2][RIGHT_D_QUOTE "\""][LIT_CHARS ", Label("][RIGHT_D_QUOTE "\""][LIT_CHARS "//:bar"][RIGHT_D_QUOTE "\""][LIT_CHARS "), {}, False)\n"][LIT_CHARS " repository_ctx.template("][RIGHT_D_QUOTE "\""][LIT_CHARS test2.sh][RIGHT_D_QUOTE "\""][LIT_CHARS ", Label("][RIGHT_D_QUOTE "\""][LIT_CHARS "//:bar"][RIGHT_D_QUOTE "\""][LIT_CHARS "), {}, True)\n"][LIT_CHARS "repo = repository_rule(implementation=_impl, local=True)\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS bar]} "> 1), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS run]} {[LIT_OTHER "@"] [LIT_CHARS foo//] [LIT_OTHER ":"] [LIT_CHARS bar]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Execution of @foo//:bar failed"]]}) ) (= scope= flags=0 words=[] bindings=[('output_base', {[ComSub (Com {[LIT_CHARS bazel]} {[LIT_CHARS info]} {[LIT_CHARS output_base]})]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -x]} {[DQ [VarSub output_base][LIT_CHARS /external/foo/test.sh]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "test.sh is not executable"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -x]} {[DQ [VarSub output_base][LIT_CHARS /external/foo/test2.sh]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "test2.sh is not executable"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_OTHER "!"]} {[LIT_CHARS -x]} {[DQ [VarSub output_base][LIT_CHARS /external/foo/BUILD]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "BUILD is executable"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_OTHER "!"]} {[LIT_CHARS -x]} {[DQ [VarSub output_base][LIT_CHARS /external/foo/test2]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "test2 is executable"]]}) ) ) ) (FunctionDef test_skylark_repository_download [] (List (= scope= flags=0 words=[] bindings=[('server_dir', {[DQ [VarSub TEST_TMPDIR][LIT_CHARS /server_dir]]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub server_dir]]}) (= scope= flags=0 words=[] bindings=[('download_with_sha256', {[DQ [VarSub server_dir][LIT_CHARS /download_with_sha256.txt]]})]) (= scope= flags=0 words=[] bindings=[('download_no_sha256', {[DQ [VarSub server_dir][LIT_CHARS /download_no_sha256.txt]]})]) (= scope= flags=0 words=[] bindings=[('download_executable_file', {[DQ [VarSub server_dir][LIT_CHARS /download_executable_file.sh]]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "This is one file"]]} < (FilenameRedirectNode filename={[DQ [VarSub download_no_sha256]]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "This is another file"]]} < (FilenameRedirectNode filename={[DQ [VarSub download_with_sha256]]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "echo 'I am executable'"]]} < (FilenameRedirectNode filename={[DQ [VarSub download_executable_file]]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('file_sha256', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS sha256sum]} {[DQ [VarSub download_with_sha256]]}) (Com {[LIT_CHARS head]} {[LIT_CHARS -c]} {[LIT_CHARS 64]}) )]]})]) (Com {[LIT_CHARS startup_server]} {[DQ [VarSub server_dir]]}) (Com {[LIT_CHARS setup_skylark_repository]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS test.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def _impl(repository_ctx):\n"][LIT_CHARS " repository_ctx.download(\n"][LIT_CHARS " "][RIGHT_D_QUOTE "\""][LIT_CHARS "http://localhost:"][VarSub fileserver_port][LIT_CHARS /download_no_sha256.txt][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " "][RIGHT_D_QUOTE "\""][LIT_CHARS download_no_sha256.txt][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS " repository_ctx.download(\n"][LIT_CHARS " "][RIGHT_D_QUOTE "\""][LIT_CHARS "http://localhost:"][VarSub fileserver_port][LIT_CHARS /download_with_sha256.txt][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " "][RIGHT_D_QUOTE "\""][LIT_CHARS download_with_sha256.txt][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][VarSub file_sha256][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS " repository_ctx.download(\n"][LIT_CHARS " "][RIGHT_D_QUOTE "\""][LIT_CHARS "http://localhost:"][VarSub fileserver_port][LIT_CHARS /download_executable_file.sh][RIGHT_D_QUOTE "\""][LIT_CHARS ",\n"][LIT_CHARS " "][RIGHT_D_QUOTE "\""][LIT_CHARS download_executable_file.sh][RIGHT_D_QUOTE "\""][LIT_CHARS ", executable=True)\n"][LIT_CHARS " repository_ctx.file("][RIGHT_D_QUOTE "\""][LIT_CHARS BUILD][RIGHT_D_QUOTE "\""][LIT_CHARS ") # necessary directories should already created by download function\n"][LIT_CHARS "repo = repository_rule(implementation=_impl, local=False)\n"]]} 0), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS foo//] [LIT_OTHER ":"] [LIT_CHARS all]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS shutdown_server]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Execution of @foo//:all failed"]]}) ) ) (= scope= flags=0 words=[] bindings=[('output_base', {[DQ [ComSub (Com {[LIT_CHARS bazel]} {[LIT_CHARS info]} {[LIT_CHARS output_base]})]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -e]} {[DQ [VarSub output_base][LIT_CHARS /external/foo/download_no_sha256.txt]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "download_no_sha256.txt is not downloaded"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -e]} {[DQ [VarSub output_base][LIT_CHARS /external/foo/download_with_sha256.txt]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "download_with_sha256.txt is not downloaded"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -e]} {[DQ [VarSub output_base][LIT_CHARS /external/foo/download_executable_file.sh]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "download_executable_file.sh is not downloaded"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS diff]} {[DQ [VarSub output_base][LIT_CHARS /external/foo/download_no_sha256.txt]]} {[DQ [VarSub download_no_sha256]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "download_no_sha256.txt is not downloaded successfully"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS diff]} {[DQ [VarSub output_base][LIT_CHARS /external/foo/download_with_sha256.txt]]} {[DQ [VarSub download_with_sha256]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "download_with_sha256.txt is not downloaded successfully"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS diff]} {[DQ [VarSub output_base][LIT_CHARS /external/foo/download_executable_file.sh]]} {[DQ [VarSub download_executable_file]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "download_executable_file.sh is not downloaded successfully"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_OTHER "!"]} {[LIT_CHARS -x]} {[DQ [VarSub output_base][LIT_CHARS /external/foo/download_no_sha256.txt]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "download_no_sha256.txt is executable"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_OTHER "!"]} {[LIT_CHARS -x]} {[DQ [VarSub output_base][LIT_CHARS /external/foo/download_with_sha256.txt]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "download_with_sha256.txt is executable"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -x]} {[DQ [VarSub output_base][LIT_CHARS /external/foo/download_executable_file.sh]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "download_executable_file.sh is not executable"]]}) ) ) ) (FunctionDef test_skylark_repository_download_and_extract [] (List (= scope= flags=0 words=[] bindings=[('server_dir', {[DQ [VarSub TEST_TMPDIR][LIT_CHARS /server_dir]]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub server_dir]]}) (= scope= flags=0 words=[] bindings=[('file_prefix', {[DQ [VarSub server_dir][LIT_CHARS /download_and_extract]]})]) (Com {[LIT_CHARS pushd]} {[VarSub TEST_TMPDIR]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "This is one file"]]} < (FilenameRedirectNode filename={[LIT_CHARS server_dir/download_and_extract1.txt]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "This is another file"]]} < (FilenameRedirectNode filename={[LIT_CHARS server_dir/download_and_extract2.txt]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "This is a third file"]]} < (FilenameRedirectNode filename={[LIT_CHARS server_dir/download_and_extract3.txt]} "> 1), > ) (Com {[LIT_CHARS tar]} {[LIT_CHARS -zcvf]} {[LIT_CHARS server_dir/download_and_extract1.tar.gz]} {[LIT_CHARS server_dir/download_and_extract1.txt]}) (Com {[LIT_CHARS zip]} {[LIT_CHARS server_dir/download_and_extract2.zip]} {[LIT_CHARS server_dir/download_and_extract2.txt]}) (Com {[LIT_CHARS zip]} {[LIT_CHARS server_dir/download_and_extract3.zip]} {[LIT_CHARS server_dir/download_and_extract3.txt]}) (= scope= flags=0 words=[] bindings=[('file_sha256', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS sha256sum]} {[LIT_CHARS server_dir/download_and_extract3.zip]}) (Com {[LIT_CHARS head]} {[LIT_CHARS -c]} {[LIT_CHARS 64]}) )]]})]) (Com {[LIT_CHARS popd]}) (Com {[LIT_CHARS startup_server]} {[DQ [VarSub server_dir]]}) (Com {[LIT_CHARS setup_skylark_repository]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS test.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def _impl(repository_ctx):\n"][LIT_CHARS " repository_ctx.file("][RIGHT_D_QUOTE "\""][LIT_CHARS BUILD][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS " repository_ctx.download_and_extract(\n"][LIT_CHARS " "][RIGHT_D_QUOTE "\""][LIT_CHARS "http://localhost:"][VarSub fileserver_port][LIT_CHARS /download_and_extract1.tar.gz][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS " repository_ctx.download_and_extract(\n"][LIT_CHARS " "][RIGHT_D_QUOTE "\""][LIT_CHARS "http://localhost:"][VarSub fileserver_port][LIT_CHARS /download_and_extract2.zip][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS " repository_ctx.download_and_extract(\n"][LIT_CHARS " "][RIGHT_D_QUOTE "\""][LIT_CHARS "http://localhost:"][VarSub fileserver_port][LIT_CHARS /download_and_extract1.tar.gz][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][LIT_CHARS some/path][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS " repository_ctx.download_and_extract(\n"][LIT_CHARS " "][RIGHT_D_QUOTE "\""][LIT_CHARS "http://localhost:"][VarSub fileserver_port][LIT_CHARS /download_and_extract3.zip][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][LIT_CHARS .][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][VarSub file_sha256][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS "repo = repository_rule(implementation=_impl, local=False)\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS clean]} {[LIT_CHARS --expunge_async]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "bazel clean failed"]]}) ) (AndOr OP_AND_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS foo//] [LIT_OTHER ":"] [LIT_CHARS all]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS shutdown_server]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Execution of @foo//:all failed"]]}) ) ) (= scope= flags=0 words=[] bindings=[('output_base', {[DQ [ComSub (Com {[LIT_CHARS bazel]} {[LIT_CHARS info]} {[LIT_CHARS output_base]})]]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -e]} {[DQ [VarSub output_base][LIT_CHARS /external/foo/server_dir/download_and_extract1.tar.gz]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "temp file was not deleted successfully"]]}) (Com {[LIT_CHARS true]}) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -e]} {[DQ [VarSub output_base][LIT_CHARS /external/foo/server_dir/download_and_extract2.zip]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "temp file was not deleted successfully"]]}) (Com {[LIT_CHARS true]}) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -e]} {[DQ [VarSub output_base][LIT_CHARS /external/foo/server_dir/download_and_extract3.zip]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "temp file was not deleted successfully"]]}) (Com {[LIT_CHARS true]}) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS diff]} {[DQ [VarSub output_base][LIT_CHARS /external/foo/server_dir/download_and_extract1.txt]]} {[DQ [VarSub file_prefix][LIT_CHARS 1.txt]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "download_and_extract1.tar.gz was not extracted successfully"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS diff]} {[DQ [VarSub output_base][LIT_CHARS /external/foo/some/path/server_dir/download_and_extract1.txt]]} {[DQ [VarSub file_prefix][LIT_CHARS 1.txt]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "download_and_extract1.tar.gz was not extracted successfully in some/path"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS diff]} {[DQ [VarSub output_base][LIT_CHARS /external/foo/server_dir/download_and_extract2.txt]]} {[DQ [VarSub file_prefix][LIT_CHARS 2.txt]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "download_and_extract2.zip was not extracted successfully"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS diff]} {[DQ [VarSub output_base][LIT_CHARS /external/foo/server_dir/download_and_extract3.txt]]} {[DQ [VarSub file_prefix][LIT_CHARS 3.txt]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "download_and_extract3.zip was not extracted successfully"]]}) ) ) ) (FunctionDef test_bazel_version [] (List (Com {[LIT_CHARS create_new_workspace]}) (= scope= flags=0 words=[] bindings=[('repo2', {[VarSub new_workspace_dir]})]) (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 = \"test\",\n"] [LIT_CHARS " cmd = \"echo 'Tra-la!' | tee $@\",\n"] [LIT_CHARS " outs = [\"test.txt\"],\n"] [LIT_CHARS " visibility = [\"//visibility:public\"],\n"] [LIT_CHARS ")\n"]} 0), > ) (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 "load('/test', 'macro')\n"][LIT_CHARS "\n"][LIT_CHARS "macro('"][VarSub repo2][LIT_CHARS "')\n"]]} 0), > ) (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} < (FilenameRedirectNode filename={[LIT_CHARS BUILD]} "> 1), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS test.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def macro(path):\n"][LIT_CHARS " print(native.bazel_version)\n"][LIT_CHARS " native.local_repository(name='test', path=path)\n"]]} 0), > ) (= scope= flags=0 words=[] bindings=[('version', {[DQ [ComSub (Com {[LIT_CHARS bazel]} {[LIT_CHARS info]} {[LIT_CHARS release]})]]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub version]]} {[LIT_OTHER "="] [LIT_OTHER "="]} {[DQ [LIT_CHARS "development version"]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('version', {[DQ ]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('version', {[DQ [VarSub version transform_ops=[VS_UNARY_POUND {[LIT_CHARS "* "]}]]]})]) ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_OTHER "@"] [LIT_CHARS test//] [LIT_OTHER ":"] [LIT_CHARS test]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS ": "][VarSub version][LIT_CHARS .]]}) ) ) (FunctionDef test_existing_rule [] (List (Com {[LIT_CHARS create_new_workspace]}) (= scope= flags=0 words=[] bindings=[('repo2', {[VarSub new_workspace_dir]})]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS BUILD]} "> 1), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), > ) (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 "local_repository(name = 'existing', path='"][VarSub repo2][LIT_CHARS "')\n"][LIT_CHARS "load('/test', 'macro')\n"][LIT_CHARS "\n"][LIT_CHARS "macro()\n"]]} 0), > ) (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} < (FilenameRedirectNode filename={[LIT_CHARS BUILD]} "> 1), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS test.bzl]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "def test(s):\n"][LIT_CHARS " print("][RIGHT_D_QUOTE "\""][LIT_CHARS "%s = %s,%s"][RIGHT_D_QUOTE "\""][LIT_CHARS " % (s,\n"][LIT_CHARS " native.existing_rule(s) != None,\n"][LIT_CHARS " s in native.existing_rules()))\n"][LIT_CHARS "def macro():\n"][LIT_CHARS " test("][RIGHT_D_QUOTE "\""][LIT_CHARS existing][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS " test("][RIGHT_D_QUOTE "\""][LIT_CHARS non_existing][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"]]} 0), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS bazel]} {[LIT_CHARS query]} {[LIT_CHARS //...]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Failed to build"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "existing = True,True"]]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "non_existing = False,False"]]}) ) ) (FunctionDef test_build_a_repo [] (List (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS WORKSPACE]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "load("][RIGHT_D_QUOTE "\""][LIT_CHARS "//:repo.bzl"][RIGHT_D_QUOTE "\""][LIT_CHARS ", "][RIGHT_D_QUOTE "\""][LIT_CHARS my_repo][RIGHT_D_QUOTE "\""][LIT_CHARS ")\n"][LIT_CHARS "my_repo(name = "][RIGHT_D_QUOTE "\""][LIT_CHARS reg][RIGHT_D_QUOTE "\""][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 _impl(repository_ctx):\n"][LIT_CHARS " pass\n"][LIT_CHARS "\n"][LIT_CHARS "my_repo = repository_rule(_impl)\n"]]} 0), > ) (Fork (Com {[LIT_CHARS bazel]} {[LIT_CHARS build]} {[LIT_CHARS //external] [LIT_OTHER ":"] [LIT_CHARS reg]}) ) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Couldn't build repo"]]}) ) ) ) (FunctionDef tear_down [] (List (Com {[LIT_CHARS shutdown_server]}) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -d]} {[DQ [VarSub TEST_TMPDIR][LIT_CHARS /server_dir]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -fr]} {[DQ [VarSub TEST_TMPDIR][LIT_CHARS /server_dir]]}) ) (Com {[LIT_CHARS true]}) ) ) (Com {[LIT_CHARS run_suite]} {[DQ [LIT_CHARS "local repository tests"]]}) )