diff options
-rw-r--r-- | test/end-to-end/target-cache/TARGETS | 7 | ||||
-rw-r--r-- | test/end-to-end/target-cache/export-extern.sh | 70 |
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 |