diff options
author | Maksim Denisov <denisov.maksim@huawei.com> | 2025-06-12 11:37:02 +0200 |
---|---|---|
committer | Maksim Denisov <denisov.maksim@huawei.com> | 2025-06-12 17:07:17 +0200 |
commit | 64dd0eb0c941508536ff479f9e3be1bc23099a4a (patch) | |
tree | f6dc1cd9ae5de8551c876a0218f417dbfac11ebd | |
parent | cc7350c9c3535b672788e68b5b7082ec441a4d6d (diff) | |
download | justbuild-64dd0eb0c941508536ff479f9e3be1bc23099a4a.tar.gz |
Test compactification gets skipped for `gc --all`
-rw-r--r-- | test/end-to-end/gc/TARGETS | 7 | ||||
-rw-r--r-- | test/end-to-end/gc/gc-all.sh | 84 |
2 files changed, 91 insertions, 0 deletions
diff --git a/test/end-to-end/gc/TARGETS b/test/end-to-end/gc/TARGETS index 5e4bf722..cdd7ed9e 100644 --- a/test/end-to-end/gc/TARGETS +++ b/test/end-to-end/gc/TARGETS @@ -28,6 +28,12 @@ , "test": ["reconstruct-executable.sh"] , "deps": [["", "mr-tool-under-test"], ["", "tool-under-test"]] } +, "gc-all": + { "type": ["@", "rules", "shell/test", "script"] + , "name": ["gc-all"] + , "test": ["gc-all.sh"] + , "deps": [["", "mr-tool-under-test"], ["", "tool-under-test"]] + } , "TESTS": { "type": ["@", "rules", "test", "suite"] , "stage": ["gc"] @@ -35,6 +41,7 @@ [ "basic" , "compactification" , "export" + , "gc-all" , "reconstruct-executable" , "tc-deps" ] diff --git a/test/end-to-end/gc/gc-all.sh b/test/end-to-end/gc/gc-all.sh new file mode 100644 index 00000000..af12eedd --- /dev/null +++ b/test/end-to-end/gc/gc-all.sh @@ -0,0 +1,84 @@ +#!/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="${PWD}/bin/tool-under-test" +readonly LBR="${TEST_TMPDIR}/local-build-root" +readonly JUST_ARGS="--local-build-root ${LBR}" + +readonly JUST_MR="${PWD}/bin/mr-tool-under-test" +readonly LBR_MR="${TEST_TMPDIR}/local-build-root-mr" +readonly JUST_MR_ARGS="--norc --local-build-root ${LBR_MR} --just ${JUST}" + +readonly OUT="${TEST_TMPDIR}/out" +mkdir -p "${OUT}" + +STORAGE="${LBR}/protocol-dependent/generation-0" +COMPATIBLE_ARGS="" +if [ -n "${COMPATIBLE:-}" ]; then + COMPATIBLE_ARGS="--compatible" +fi + +mkdir work && cd work + +touch ROOT +cat > repos.json <<'EOF' +{ "repositories": + { "": + {"repository": {"type": "file", "path": ".", "pragma": {"to_git": true}}} + } +} +EOF + +cat > TARGETS <<'EOF' +{ "file": + { "type": "generic" + , "outs": ["out.txt"] + , "cmds": ["echo foo > out.txt"] + } +, "": {"type": "install", "dirs": [["file", "out"]]} +} +EOF + +cat TARGETS + +# Build to fill the cache +"${JUST_MR}" ${JUST_MR_ARGS} build ${JUST_ARGS} ${COMPATIBLE_ARGS} \ + -L '["env", "PATH='"${PATH}"'"]' 2>&1 + +if [ ! -d ${STORAGE} ]; then + echo "Storage has not been created" + exit 1 +fi; + +# Run regular gc with --no-rotate to ensure compactification gets triggered: +"${JUST_MR}" ${JUST_MR_ARGS} gc ${JUST_ARGS} --no-rotate --log-limit 4 \ + -f "${OUT}/gc" 2>&1 + +grep 'Compactification has been started' "${OUT}/gc" + +# Run gc with --all to ensure compactification doesn't get triggered: +"${JUST_MR}" ${JUST_MR_ARGS} gc ${JUST_ARGS} --all --log-limit 4 \ + -f "${OUT}/gc2" 2>&1 + +grep 'Compactification has been started' "${OUT}/gc2" && exit 1 + +if [ -d ${STORAGE} ]; then + echo "Storage has not been deleted" + exit 1 +fi; + +echo OK |