summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/end-to-end/target-cache/TARGETS7
-rw-r--r--test/end-to-end/target-cache/export-extern.sh70
2 files changed, 77 insertions, 0 deletions
diff --git a/test/end-to-end/target-cache/TARGETS b/test/end-to-end/target-cache/TARGETS
index 061fba9b..ffdeea3c 100644
--- a/test/end-to-end/target-cache/TARGETS
+++ b/test/end-to-end/target-cache/TARGETS
@@ -17,6 +17,13 @@
, "bootstrap-src-staged"
]
}
+, "export-extern":
+ { "type": ["@", "rules", "shell/test", "script"]
+ , "name": ["export-extern"]
+ , "test": ["export-extern.sh"]
+ , "deps":
+ [["end-to-end", "tool-under-test"], ["end-to-end", "mr-tool-under-test"]]
+ }
, "bootstrap-src-staged":
{"type": "install", "dirs": [[["@", "src", "", "bootstrap-src"], "src"]]}
, "TESTS":
diff --git a/test/end-to-end/target-cache/export-extern.sh b/test/end-to-end/target-cache/export-extern.sh
new file mode 100644
index 00000000..f2505e1e
--- /dev/null
+++ b/test/end-to-end/target-cache/export-extern.sh
@@ -0,0 +1,70 @@
+#!/bin/sh
+# Copyright 2022 Huawei Cloud Computing Technology Co., Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+set -eu
+
+readonly JUST="$PWD/bin/tool-under-test"
+readonly JUST_MR="$PWD/bin/mr-tool-under-test"
+readonly LBRDIR="$TEST_TMPDIR/local-build-root"
+readonly OUT="$TEST_TMPDIR/out"
+
+touch ROOT
+cat > repos.json <<'EOF'
+{ "repositories":
+ { "":
+ { "repository": {"type": "file", "path": "foo", "pragma": {"to_git": true}}
+ , "bindings": {"bar": "bar"}
+ }
+ , "bar":
+ {"repository": {"type": "file", "path": "bar", "pragma": {"to_git": true}}}
+ }
+}
+EOF
+
+mkdir bar
+cat > bar/TARGETS <<'EOF'
+{"it": {"type": "file_gen", "name": "it", "data": "target it in bar"}}
+EOF
+
+mkdir foo
+echo -n 'file it in foo' > foo/it
+cat > foo/TARGETS <<'EOF'
+{ "it": {"type": "file_gen", "name": "it", "data": "target it in foo"}
+, "local": {"type": "export", "target": ["", "it"]}
+, "distant": {"type": "export", "target": ["@", "bar", "", "it"]}
+, "file": {"type": "export", "target": ["FILE", null, "it"]}
+}
+EOF
+
+CONF=$("${JUST_MR}" --local-build-root "${LBRDIR}" setup '')
+
+"${JUST}" install --local-build-root "${LBRDIR}" -C "${CONF}" -o "${OUT}" local 2>&1
+cat ${OUT}/it
+echo
+grep 'target.*foo' ${OUT}/it
+echo
+
+"${JUST}" install --local-build-root "${LBRDIR}" -C "${CONF}" -o "${OUT}" distant 2>&1
+cat ${OUT}/it
+echo
+grep 'target.*bar' ${OUT}/it
+echo
+
+"${JUST}" install --local-build-root "${LBRDIR}" -C "${CONF}" -o "${OUT}" file 2>&1
+cat ${OUT}/it
+echo
+grep 'file.*foo' ${OUT}/it
+echo