diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2025-01-21 17:31:56 +0100 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2025-01-22 11:05:55 +0100 |
commit | cf7bdda108ef7bfe2efc612725f99946dc30c774 (patch) | |
tree | d31a1c4147aad77849fddd8daf66b418d88630d3 /test/end-to-end | |
parent | 9c6b3d38781471250699f0b8f76e20945d4ee8fb (diff) | |
download | justbuild-cf7bdda108ef7bfe2efc612725f99946dc30c774.tar.gz |
Add test verifying git cas is taken into account
Diffstat (limited to 'test/end-to-end')
-rw-r--r-- | test/end-to-end/cli/TARGETS | 7 | ||||
-rw-r--r-- | test/end-to-end/cli/git-cas-fallback.sh | 68 |
2 files changed, 75 insertions, 0 deletions
diff --git a/test/end-to-end/cli/TARGETS b/test/end-to-end/cli/TARGETS index c9a20eef..2fd9f1cd 100644 --- a/test/end-to-end/cli/TARGETS +++ b/test/end-to-end/cli/TARGETS @@ -34,6 +34,12 @@ , "test": ["git-cas-p.sh"] , "deps": [["", "mr-tool-under-test"], ["", "tool-under-test"]] } +, "git cas fallback": + { "type": ["end-to-end", "with remote"] + , "name": ["git-cas-fallback"] + , "test": ["git-cas-fallback.sh"] + , "deps": [["", "mr-tool-under-test"], ["", "tool-under-test"]] + } , "just-mr reporting": { "type": ["@", "rules", "shell/test", "script"] , "name": ["just-mr-reporting"] @@ -93,6 +99,7 @@ , "build -P" , "analyse" , "git cas -P" + , "git cas fallback" , "install --archive" , "install archived repo" , "conflict report" diff --git a/test/end-to-end/cli/git-cas-fallback.sh b/test/end-to-end/cli/git-cas-fallback.sh new file mode 100644 index 00000000..5feb0a6b --- /dev/null +++ b/test/end-to-end/cli/git-cas-fallback.sh @@ -0,0 +1,68 @@ +#!/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 + +ROOT="$(pwd)" +JUST="${ROOT}/bin/tool-under-test" +JUST_MR="${ROOT}/bin/mr-tool-under-test" +BUILDROOT="${TEST_TMPDIR}/build-root" +OUT="${TEST_TMPDIR}/out" +WRKDIR="${ROOT}/work" +SRCDIR="${ROOT}/srcs" + +# Add a src git repo +mkdir -p "${SRCDIR}" +cd "${SRCDIR}" +mkdir -p src/with/some/deep/directory +echo 'Hello World' > src/with/some/deep/directory/hello.txt + +# Set up a build root from git repo +mkdir -p "${WRKDIR}" +cd "${WRKDIR}" +touch ROOT +cat > repos.json <<EOF +{ "repositories": + { "": + { "repository": + {"type": "file", "path": "${SRCDIR}", "pragma": {"to_git": true}} + } + } +} +EOF +cat repos.json +echo +"${JUST_MR}" --norc --local-build-root "${BUILDROOT}" setup > CONF +echo +cat CONF +echo +cat $(cat CONF) +echo +TREE=$(jq -rM '.repositories."".workspace_root[1]' $(cat CONF)) +echo +echo Tree is ${TREE} +echo + +# Clear local cas, while keeping repositories (and hence git cas) +"${JUST}" gc --local-build-root "${BUILDROOT}" 2>&1 +"${JUST}" gc --local-build-root "${BUILDROOT}" 2>&1 + +# Verify that we can access the tree (via the git cas), +# even if a remote endpoint is provided. +"${JUST}" install-cas --local-build-root "${BUILDROOT}" \ + -r "${REMOTE_EXECUTION_ADDRESS}" "${TREE}::t" -o "${OUT}" 2>&1 +grep World "${OUT}/src/with/some/deep/directory/hello.txt" + +echo +echo OK |