diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2023-01-16 15:14:07 +0100 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2023-01-16 16:25:00 +0100 |
commit | ddff40e1ad4869e21a35ff3e38fb23e06856b23f (patch) | |
tree | 013d0327fe8e5f8213945bc6952bc26bbea734b8 /test | |
parent | d872a78b6a9103a2e23c6a1a3addc7c53e0eeeb8 (diff) | |
download | justbuild-ddff40e1ad4869e21a35ff3e38fb23e06856b23f.tar.gz |
Add test to verify just-mr fetch functionality
Diffstat (limited to 'test')
-rw-r--r-- | test/end-to-end/just-mr/TARGETS | 11 | ||||
-rw-r--r-- | test/end-to-end/just-mr/fetch.sh | 70 |
2 files changed, 80 insertions, 1 deletions
diff --git a/test/end-to-end/just-mr/TARGETS b/test/end-to-end/just-mr/TARGETS index db7b2621..4a73e985 100644 --- a/test/end-to-end/just-mr/TARGETS +++ b/test/end-to-end/just-mr/TARGETS @@ -4,6 +4,15 @@ , "test": ["cas-independent.sh"] , "deps": [["test/end-to-end", "mr-tool-under-test"]] } +, "fetch": + { "type": ["@", "rules", "shell/test", "script"] + , "name": ["fetch"] + , "test": ["fetch.sh"] + , "deps": [["test/end-to-end", "mr-tool-under-test"]] + } , "TESTS": - {"type": "install", "tainted": ["test"], "deps": ["cas-independent"]} + { "type": "install" + , "tainted": ["test"] + , "deps": ["cas-independent", "fetch"] + } } diff --git a/test/end-to-end/just-mr/fetch.sh b/test/end-to-end/just-mr/fetch.sh new file mode 100644 index 00000000..8009f151 --- /dev/null +++ b/test/end-to-end/just-mr/fetch.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_MR="${PWD}/bin/mr-tool-under-test" +readonly DISTDIR="${TEST_TMPDIR}/distfiles" +readonly LBR="${TEST_TMPDIR}/local-build-root" + +mkdir -p "${DISTDIR}" +mkdir -p foo/bar/baz +echo "test data" > foo/bar/baz/data.txt +tar cf "${DISTDIR}/foo-1.2.3.tar" foo 2>&1 +foocontent=$(git hash-object "${DISTDIR}/foo-1.2.3.tar") +echo "Foo archive has content ${foocontent}" + +# Setup sample repository config +touch ROOT +cat > repos.json <<EOF +{ "repositories": + { "foo": + { "repository": + { "type": "archive" + , "content": "${foocontent}" + , "fetch": "http://non-existent.example.org/foo-1.2.3.tar" + , "subdir": "foo" + } + } + , "": + { "repository": {"type": "file", "path": "."} + , "bindings": {"foo": "foo"} + } + } +} +EOF +echo "Repository configuration:" +cat repos.json + + + +# Call just-mr with distdir present, to make it aware of the file +"${JUST_MR}" --local-build-root "${LBR}" --distdir "${DISTDIR}" setup 2>&1 + +# Remove distdir content +rm -rf "${DISTDIR}" +mkdir -p "${DISTDIR}" + +# Ask just-mr to fetch to the empty distdir +"${JUST_MR}" --local-build-root "${LBR}" --distdir "${DISTDIR}" fetch 2>&1 + +# Verify that the correct file is stored in the distdir +test -f "${DISTDIR}/foo-1.2.3.tar" +newfoocontent=$(git hash-object "${DISTDIR}/foo-1.2.3.tar") +echo "Foo archive has now content ${newfoocontent}" +test "${newfoocontent}" = "${foocontent}" + +echo OK |