summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2025-01-07 16:36:28 +0100
committerMaksim Denisov <denisov.maksim@huawei.com>2025-01-08 10:41:34 +0100
commit00a50e6145969ae0ef22b8e21f22c428857de70f (patch)
tree3e4774432eb66ab35bdde763a14a31cf2d81c36c /test
parent2308d90360216f81f0aa9b640aa9789c00d42053 (diff)
downloadjustbuild-00a50e6145969ae0ef22b8e21f22c428857de70f.tar.gz
Test indirection of workspace roots in precomputed roots
Diffstat (limited to 'test')
-rw-r--r--test/end-to-end/tree-structure/TARGETS6
-rw-r--r--test/end-to-end/tree-structure/precomputed_indirection.sh108
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