test: isolate Nix store/cache per distro to fix cross-distro manifest conflicts

- Replace shared Nix volumes with distro-specific volumes
  (pkgmgr_nix_store_<distro>, pkgmgr_nix_cache_<distro>)
- Prevent incompatible profile manifest versions between Ubuntu and Debian
- Update all test scripts (unit, integration, container, e2e)
- Remove unused global Nix volume variables from Makefile
- Improve consistency of test-e2e.sh formatting and environment handling
- Add Git safe.directory configuration for mounted /src to avoid ownership warnings
This commit is contained in:
Kevin Veen-Birkenbach
2025-12-10 20:07:41 +01:00
parent bcea440e40
commit 37ac22e0b4
5 changed files with 23 additions and 26 deletions

View File

@@ -2,12 +2,6 @@
test build build-no-cache test-unit test-e2e test-integration \ test build build-no-cache test-unit test-e2e test-integration \
test-container test-container
# ------------------------------------------------------------
# Local Nix cache directories in the repo
# ------------------------------------------------------------
NIX_STORE_VOLUME := pkgmgr_nix_store
NIX_CACHE_VOLUME := pkgmgr_nix_cache
# ------------------------------------------------------------ # ------------------------------------------------------------
# Distro list and base images # Distro list and base images
# (kept for documentation/reference; actual build logic is in scripts/build) # (kept for documentation/reference; actual build logic is in scripts/build)

View File

@@ -19,9 +19,9 @@ for distro in $DISTROS; do
# Run the command and capture the output # Run the command and capture the output
if OUTPUT=$(docker run --rm \ if OUTPUT=$(docker run --rm \
-e PKGMGR_DEV=1 \ -e PKGMGR_DEV=1 \
-v pkgmgr_nix_store:/nix \ -v pkgmgr_nix_store_${distro}:/nix \
-v "$(pwd):/src" \ -v "$(pwd):/src" \
-v "pkgmgr_nix_cache:/root/.cache/nix" \ -v "pkgmgr_nix_cache_${distro}:/root/.cache/nix" \
"$IMAGE" 2>&1); then "$IMAGE" 2>&1); then
echo "$OUTPUT" echo "$OUTPUT"
echo echo

View File

@@ -10,43 +10,46 @@ for distro in $DISTROS; do
docker run --rm \ docker run --rm \
-v "$(pwd):/src" \ -v "$(pwd):/src" \
-v pkgmgr_nix_store:/nix \ -v pkgmgr_nix_store_${distro}:/nix \
-v "pkgmgr_nix_cache:/root/.cache/nix" \ -v "pkgmgr_nix_cache_${distro}:/root/.cache/nix" \
-e PKGMGR_DEV=1 \ -e PKGMGR_DEV=1 \
-e TEST_PATTERN="${TEST_PATTERN}" \ -e TEST_PATTERN="${TEST_PATTERN}" \
--workdir /src \ --workdir /src \
--entrypoint bash \ --entrypoint bash \
"package-manager-test-$distro" \ "package-manager-test-$distro" \
-c ' -c '
set -e; set -e
# Load distro info
if [ -f /etc/os-release ]; then if [ -f /etc/os-release ]; then
. /etc/os-release; . /etc/os-release
fi; fi
echo "Running tests inside distro: $ID"; echo "Running tests inside distro: $ID"
# Try to load nix environment # Load nix environment if available
if [ -f "/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh" ]; then if [ -f "/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh" ]; then
. "/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh"; . "/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh"
fi fi
if [ -f "$HOME/.nix-profile/etc/profile.d/nix.sh" ]; then if [ -f "$HOME/.nix-profile/etc/profile.d/nix.sh" ]; then
. "$HOME/.nix-profile/etc/profile.d/nix.sh"; . "$HOME/.nix-profile/etc/profile.d/nix.sh"
fi fi
PATH="/nix/var/nix/profiles/default/bin:$HOME/.nix-profile/bin:$PATH"; PATH="/nix/var/nix/profiles/default/bin:$HOME/.nix-profile/bin:$PATH"
command -v nix >/dev/null || { command -v nix >/dev/null || {
echo "ERROR: nix not found."; echo "ERROR: nix not found."
exit 1; exit 1
} }
git config --global --add safe.directory /src || true; # Mark the mounted repository as safe to avoid Git ownership errors
git config --global --add safe.directory /src || true
# Run the E2E tests inside the Nix development shell
nix develop .#default --no-write-lock-file -c \ nix develop .#default --no-write-lock-file -c \
python3 -m unittest discover \ python3 -m unittest discover \
-s /src/tests/e2e \ -s /src/tests/e2e \
-p "$TEST_PATTERN"; -p "$TEST_PATTERN"
' '
done done

View File

@@ -7,8 +7,8 @@ echo "============================================================"
docker run --rm \ docker run --rm \
-v "$(pwd):/src" \ -v "$(pwd):/src" \
-v pkgmgr_nix_store:/nix \ -v pkgmgr_nix_store_${distro}:/nix \
-v "pkgmgr_nix_cache:/root/.cache/nix" \ -v "pkgmgr_nix_cache_${distro}:/root/.cache/nix" \
--workdir /src \ --workdir /src \
-e PKGMGR_DEV=1 \ -e PKGMGR_DEV=1 \
-e TEST_PATTERN="${TEST_PATTERN}" \ -e TEST_PATTERN="${TEST_PATTERN}" \

View File

@@ -7,8 +7,8 @@ echo "============================================================"
docker run --rm \ docker run --rm \
-v "$(pwd):/src" \ -v "$(pwd):/src" \
-v "pkgmgr_nix_cache:/root/.cache/nix" \ -v "pkgmgr_nix_cache_${distro}:/root/.cache/nix" \
-v pkgmgr_nix_store:/nix \ -v pkgmgr_nix_store_${distro}:/nix \
--workdir /src \ --workdir /src \
-e PKGMGR_DEV=1 \ -e PKGMGR_DEV=1 \
-e TEST_PATTERN="${TEST_PATTERN}" \ -e TEST_PATTERN="${TEST_PATTERN}" \