diff options
author | Paul Cristian Sarbu <paul.cristian.sarbu@huawei.com> | 2025-01-27 11:52:13 +0100 |
---|---|---|
committer | Paul Cristian Sarbu <paul.cristian.sarbu@huawei.com> | 2025-02-20 15:33:53 +0100 |
commit | 781055d845f0aaf3fef579d30eb33b52aacda700 (patch) | |
tree | 20c6ae9c133637fb62722aa7d3e9bdfc689d19d9 | |
parent | 210581f53fbcdebc54ce61e88c91751af33ed78a (diff) | |
download | justbuild-781055d845f0aaf3fef579d30eb33b52aacda700.tar.gz |
just-lock: Add test for cloning 'file' repositories
-rw-r--r-- | test/end-to-end/just-lock/TARGETS | 11 | ||||
-rw-r--r-- | test/end-to-end/just-lock/clone/file-repos.sh | 74 |
2 files changed, 85 insertions, 0 deletions
diff --git a/test/end-to-end/just-lock/TARGETS b/test/end-to-end/just-lock/TARGETS index ab3bc758..7e31b1d0 100644 --- a/test/end-to-end/just-lock/TARGETS +++ b/test/end-to-end/just-lock/TARGETS @@ -88,6 +88,16 @@ , ["end-to-end", "lock-tool-under-test"] ] } +, "clone-file": + { "type": ["@", "rules", "shell/test", "script"] + , "name": ["clone-file"] + , "test": ["clone/file-repos.sh"] + , "deps": + [ ["", "mr-tool-under-test"] + , ["", "tool-under-test"] + , ["end-to-end", "lock-tool-under-test"] + ] + } , "TESTS": { "type": ["@", "rules", "test", "suite"] , "arguments_config": ["TEST_BOOTSTRAP_JUST_MR"] @@ -106,6 +116,7 @@ , "archive-imports" , "git-tree-imports" , "plain-imports" + , "clone-file" ] } ] diff --git a/test/end-to-end/just-lock/clone/file-repos.sh b/test/end-to-end/just-lock/clone/file-repos.sh new file mode 100644 index 00000000..b1ff4113 --- /dev/null +++ b/test/end-to-end/just-lock/clone/file-repos.sh @@ -0,0 +1,74 @@ +#!/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 -eu + +readonly JUST_LOCK="${PWD}/bin/lock-tool-under-test" +readonly JUST="${PWD}/bin/tool-under-test" +readonly JUST_MR="${PWD}/bin/mr-tool-under-test" + +readonly LBR="${TEST_TMPDIR}/local-build-root" + +readonly FILE_ROOT="${TEST_TMPDIR}/file-root" +readonly WRKDIR="${PWD}/work" + +# Set up file repo +mkdir -p "${FILE_ROOT}/test_dir" +echo test > "${FILE_ROOT}/test_dir/test_file" +ln -s test_file "${FILE_ROOT}/test_dir/test_link" + +# Main repository +mkdir -p "${WRKDIR}" +cd "${WRKDIR}" +touch ROOT +cat > repos.in.json <<EOF +{ "repositories": + { "file_repo": + { "repository": + { "type": "file" + , "path": "${FILE_ROOT}/test_dir" + , "pragma": {"to_git": true} + } + } + } +} +EOF +echo +echo Input config: +cat repos.in.json +echo + +echo Clone repo: +CLONE_TO="cloned_foo" +"${JUST_LOCK}" -C repos.in.json -o repos.json \ + --clone '{"'${CLONE_TO}'": ["file_repo", []]}' \ + --local-build-root "${LBR}" 2>&1 +echo +echo Output config: +cat repos.json +echo + +echo Check cloned entries: +[ -f "${CLONE_TO}/test_file" ] && [ -L "${CLONE_TO}/test_link" ] || exit 1 +grep test "${CLONE_TO}/test_file" +readlink -m "${CLONE_TO}/test_link" | grep test_file +echo + +echo Check output configuration: +grep "${CLONE_TO}" repos.json +grep "pragma" repos.json +echo + +echo "OK" |