diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2024-12-11 16:05:15 +0100 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2024-12-12 16:03:54 +0100 |
commit | 8e5fc39931b2567dd4551856ac0ee4417bf40a02 (patch) | |
tree | daafb5951e525241450572288fbe33417e3f8bdc /test/end-to-end/computed-roots | |
parent | 4438ea4c642765e606b91b2fae0a68a8a9f2ce06 (diff) | |
download | justbuild-8e5fc39931b2567dd4551856ac0ee4417bf40a02.tar.gz |
Regression test for build parameters in computed roots
It used to be the case, that the option -P was forwarded to
the build of computed roots. Add a test verifying we're not
regressing there again.
Diffstat (limited to 'test/end-to-end/computed-roots')
-rw-r--r-- | test/end-to-end/computed-roots/TARGETS | 8 | ||||
-rw-r--r-- | test/end-to-end/computed-roots/build-params.sh | 69 |
2 files changed, 77 insertions, 0 deletions
diff --git a/test/end-to-end/computed-roots/TARGETS b/test/end-to-end/computed-roots/TARGETS index 94793785..4ac7dcb4 100644 --- a/test/end-to-end/computed-roots/TARGETS +++ b/test/end-to-end/computed-roots/TARGETS @@ -12,6 +12,13 @@ , "out/log2" ] } +, "build params": + { "type": ["@", "rules", "shell/test", "script"] + , "name": ["build-params"] + , "test": ["build-params.sh"] + , "deps": [["", "tool-under-test"]] + , "keep": ["out/stdout", "out/stderr"] + } , "mr_computed_setup": { "type": ["@", "rules", "shell/test", "script"] , "name": ["mr_computed_setup"] @@ -77,6 +84,7 @@ , "artifacts-only" , "basic" , "basic remote build" + , "build params" , "error-remote" , "error-reporting" , "mr_computed_setup" diff --git a/test/end-to-end/computed-roots/build-params.sh b/test/end-to-end/computed-roots/build-params.sh new file mode 100644 index 00000000..12919ef3 --- /dev/null +++ b/test/end-to-end/computed-roots/build-params.sh @@ -0,0 +1,69 @@ +#!/bin/sh +# Copyright 2024 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 LBR="$TMPDIR/local-build-root" +readonly JUST="${ROOT}/bin/tool-under-test" +readonly OUT="${ROOT}/out" + +readonly BASE_ROOT="${ROOT}/base" +mkdir -p "${BASE_ROOT}" +cd "${BASE_ROOT}" +cat > TARGETS <<'EOF' +{ "": {"type": "export", "target": "root"} +, "root": + { "type": "install" + , "files": {"TARGETS": "payload-target", "out": "unrelated"} + } +} +EOF +cat > payload-target <<'EOF' +{"": {"type": "generic", "outs": ["out"], "cmds": ["echo GoodOutput > out"]}} +EOF +echo DoNOTLookAtMe > unrelated +git init 2>&1 +git branch -m stable-1.0 2>&1 +git config user.email "nobody@example.org" 2>&1 +git config user.name "Nobody" 2>&1 +git add . 2>&1 +git commit -m "Initial commit" 2>&1 +GIT_TREE=$(git log -n 1 --format="%T") + +mkdir -p "${ROOT}/main" +cd "${ROOT}/main" + +cat > repo-config.json <<EOF +{ "repositories": + { "base": + {"workspace_root": ["git tree", "${GIT_TREE}", "${BASE_ROOT}/.git"]} + , "": {"workspace_root": ["computed", "base", "", "", {}]} + } +} +EOF +cat repo-config.json + + +echo +echo Building with option -P +echo +"${JUST}" build --local-build-root "${LBR}" -C repo-config.json \ + -P out > "${OUT}/stdout" 2> "${OUT}/stderr" + +grep GoodOutput "${OUT}/stdout" +grep DoNOT "${OUT}/stdout" && exit 1 || : + +echo OK |