Files
Munitor/tests/maven_workspace.bats
james.maesandCodex 77cdf931c2 fix(ci): carry refreshed snapshot dependencies with build artifacts
Overlay mutable external SNAPSHOT dependencies as well as locally installed reactor outputs so downstream jobs do not read older snapshots from the immutable cache.

Co-Authored-By: Codex <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
2026-10-19 11:02:15 -05:00

43 lines
2.2 KiB
Bash

#!/usr/bin/env bats
setup() {
SCRIPT="${BATS_TEST_DIRNAME}/../src/scripts/maven_workspace.sh"
export HOME="${BATS_TEST_TMPDIR}/home"
cd "$BATS_TEST_TMPDIR"
}
@test "workspace overlays current installed artifacts and snapshot metadata without copying remote dependencies" {
repo="$HOME/.m2/repository"
mkdir -p "$repo/example/library/2-SNAPSHOT" "$repo/vendor/dependency/1"
printf 'library-2-SNAPSHOT.jar>=\r\nlibrary-2-SNAPSHOT.pom>=\r\nlibrary-2-SNAPSHOT-tests.jar>=\r\n' > "$repo/example/library/2-SNAPSHOT/_remote.repositories"
for extension in jar pom; do
printf 'current build\n' > "$repo/example/library/2-SNAPSHOT/library-2-SNAPSHOT.$extension"
done
printf 'current test classes\n' > "$repo/example/library/2-SNAPSHOT/library-2-SNAPSHOT-tests.jar"
printf 'snapshot metadata\n' > "$repo/example/library/maven-metadata-local.xml"
printf 'plugin prefix metadata\n' > "$repo/example/maven-metadata-local.xml"
printf 'dependency-1.jar>central=\n' > "$repo/vendor/dependency/1/_remote.repositories"
printf 'remote dependency\n' > "$repo/vendor/dependency/1/dependency-1.jar"
mkdir -p "$repo/vendor/mutable/2-SNAPSHOT"
printf 'mutable-2-SNAPSHOT.jar>central=\n' > "$repo/vendor/mutable/2-SNAPSHOT/_remote.repositories"
printf 'updated snapshot\n' > "$repo/vendor/mutable/2-SNAPSHOT/mutable-2-SNAPSHOT.jar"
MAVEN_WORKSPACE_ACTION=save bash "$SCRIPT"
run tar -tzf .munitor-maven-installed.tgz
[ "$status" -eq 0 ]
[[ "$output" != *vendor/dependency* ]]
export HOME="${BATS_TEST_TMPDIR}/downstream"
bash "$SCRIPT"
restored="$HOME/.m2/repository/example/library"
cmp "$repo/example/library/2-SNAPSHOT/library-2-SNAPSHOT.jar" "$restored/2-SNAPSHOT/library-2-SNAPSHOT.jar"
cmp "$repo/example/library/maven-metadata-local.xml" "$restored/maven-metadata-local.xml"
cmp "$repo/example/maven-metadata-local.xml" "$restored/../maven-metadata-local.xml"
[ -f "$restored/2-SNAPSHOT/library-2-SNAPSHOT-tests.jar" ]
[ ! -e "$HOME/.m2/repository/vendor/dependency" ]
cmp "$repo/vendor/mutable/2-SNAPSHOT/mutable-2-SNAPSHOT.jar" "$HOME/.m2/repository/vendor/mutable/2-SNAPSHOT/mutable-2-SNAPSHOT.jar"
}
@test "initial build without a workspace archive needs no overlay" {
run bash "$SCRIPT"
[ "$status" -eq 0 ]
}