summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2025-06-12 11:37:02 +0200
committerMaksim Denisov <denisov.maksim@huawei.com>2025-06-12 17:07:17 +0200
commit64dd0eb0c941508536ff479f9e3be1bc23099a4a (patch)
treef6dc1cd9ae5de8551c876a0218f417dbfac11ebd
parentcc7350c9c3535b672788e68b5b7082ec441a4d6d (diff)
downloadjustbuild-64dd0eb0c941508536ff479f9e3be1bc23099a4a.tar.gz
Test compactification gets skipped for `gc --all`
-rw-r--r--test/end-to-end/gc/TARGETS7
-rw-r--r--test/end-to-end/gc/gc-all.sh84
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