diff options
author | Maksim Denisov <denisov.maksim@huawei.com> | 2025-01-07 16:36:28 +0100 |
---|---|---|
committer | Maksim Denisov <denisov.maksim@huawei.com> | 2025-01-08 10:41:34 +0100 |
commit | 00a50e6145969ae0ef22b8e21f22c428857de70f (patch) | |
tree | 3e4774432eb66ab35bdde763a14a31cf2d81c36c /test/end-to-end/tree-structure | |
parent | 2308d90360216f81f0aa9b640aa9789c00d42053 (diff) | |
download | justbuild-00a50e6145969ae0ef22b8e21f22c428857de70f.tar.gz |
Test indirection of workspace roots in precomputed roots
Diffstat (limited to 'test/end-to-end/tree-structure')
-rw-r--r-- | test/end-to-end/tree-structure/TARGETS | 6 | ||||
-rw-r--r-- | test/end-to-end/tree-structure/precomputed_indirection.sh | 108 |
2 files changed, 114 insertions, 0 deletions
diff --git a/test/end-to-end/tree-structure/TARGETS b/test/end-to-end/tree-structure/TARGETS index d164d1c8..adf5518a 100644 --- a/test/end-to-end/tree-structure/TARGETS +++ b/test/end-to-end/tree-structure/TARGETS @@ -10,6 +10,12 @@ , "test": ["mr_setup.sh"] , "deps": [["", "mr-tool-under-test"], ["", "tool-under-test"]] } +, "precomputed_indirection": + { "type": ["@", "rules", "shell/test", "script"] + , "name": ["precomputed_indirection"] + , "test": ["precomputed_indirection.sh"] + , "deps": [["", "mr-tool-under-test"], ["", "tool-under-test"]] + } , "TESTS": { "type": ["@", "rules", "test", "suite"] , "stage": ["tree-structure"] diff --git a/test/end-to-end/tree-structure/precomputed_indirection.sh b/test/end-to-end/tree-structure/precomputed_indirection.sh new file mode 100644 index 00000000..45049332 --- /dev/null +++ b/test/end-to-end/tree-structure/precomputed_indirection.sh @@ -0,0 +1,108 @@ +#!/bin/sh +# Copyright 2025 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 -e + +readonly ROOT="$(pwd)" +readonly LBRDIR="$TMPDIR/local-build-root" +readonly JUST="${ROOT}/bin/tool-under-test" +readonly JUST_MR="${ROOT}/bin/mr-tool-under-test" +readonly OUT="${ROOT}/out" +mkdir -p "${OUT}" + +COMPAT="" +if [ "${COMPATIBLE:-}" = "YES" ]; then + COMPAT="--compatible" +fi + +readonly SRC_DIR="${ROOT}/src" +mkdir -p "${SRC_DIR}/test_dir/nested_dir/nested_dir_2" +echo "initial content" > "${SRC_DIR}/test_dir/nested_dir/nested_dir_2/file" + +readonly MAIN_ROOT="${ROOT}/main" +mkdir -p "${MAIN_ROOT}" +cd "${MAIN_ROOT}" + +cat > TARGETS << 'EOF' +{ "" : {"type": "export", "target": "ls"} +, "ls": + { "type": "generic" + , "deps": [["TREE", null, "test_dir"]] + , "outs": ["result.txt"] + , "cmds": ["ls -R test_dir > result.txt"] + } +} +EOF + +echo "Creating repo-config at ${MAIN_ROOT}:" +cat > repo-config.json << EOF +{ "repositories": + { "src": + { "repository": + { "type": "file" + , "path": "${SRC_DIR}" + , "pragma": {"to_git": true} + } + } + , "src_indirection": { "repository": "src" } + , "src_structure": + { "repository": + { "type": "tree structure" + , "repo": "src_indirection" + } + } + , "src_structure_indirection": { "repository": "src_structure" } + , "src_structure_2": + { "repository": + { "type": "tree structure" + , "repo": "src_structure_indirection" + } + } + , "targets": + { "repository": + { "type": "file" + , "path": "." + , "pragma": {"to_git": true} + } + } + , "src_structure_indirection_2": + { "repository": "src_structure_2" } + , "src_structure_indirection_3": + { "repository": "src_structure_indirection_2" } + , "result": + { "repository": "src_structure_indirection_3" + , "target_root": "targets" + } + } +} +EOF +cat repo-config.json +echo + +echo "JustMR setup:" +readonly CONF=$("${JUST_MR}" --norc --local-build-root "${LBRDIR}" \ + -C repo-config.json --main result setup) +cat "${CONF}" +echo + +echo "Build:" +echo +"${JUST}" install "${COMPAT}" -L '["env", "PATH='"${PATH}"'"]' \ + --local-build-root "${LBRDIR}" -C "${CONF}" -o "${OUT}/result" 2>&1 + +echo +cat "${OUT}/result/result.txt" + +echo OK |