diff --git a/gha_build.sh b/gha_build.sh index 247e09105..122d3da7c 100755 --- a/gha_build.sh +++ b/gha_build.sh @@ -29,6 +29,9 @@ function archetype { ARCHETYPE_NAME=aws-serverless-$1-archetype PROJ_NAME=$1-archetype-test cd ${WORKING_DIR}/${ARCHETYPE_NAME} && mvn -q clean install + if [[ "$?" -ne 0 ]]; then + exit 1 + fi ARCHETYPE_TEST_DIR=${WORKING_DIR}/$1_archetype_test mkdir -p ${ARCHETYPE_TEST_DIR} cd ${ARCHETYPE_TEST_DIR} && mvn archetype:generate -DgroupId=my.service -DartifactId=${PROJ_NAME} -Dversion=2.0-SNAPSHOT \ @@ -86,4 +89,4 @@ if [[ "$RUN_ARCHETYPE" = true ]] ; then fi if [[ "$RUN_SAMPLES" = true ]] ; then sample ${FRAMEWORK} -fi \ No newline at end of file +fi diff --git a/tests/gha_build_archetype_failure_test.sh b/tests/gha_build_archetype_failure_test.sh new file mode 100644 index 000000000..9838503e6 --- /dev/null +++ b/tests/gha_build_archetype_failure_test.sh @@ -0,0 +1,56 @@ +#!/usr/bin/env bash +set -euo pipefail + +REPO_ROOT=$(cd "$(dirname "$0")/.." && pwd) +TEST_ROOT=$(mktemp -d) +trap 'rm -rf "$TEST_ROOT"' EXIT + +FIXTURE="$TEST_ROOT/project" +BIN="$TEST_ROOT/bin" +mkdir -p "$FIXTURE" "$BIN" +cp "$REPO_ROOT/gha_build.sh" "$FIXTURE/gha_build.sh" +mkdir -p \ + "$FIXTURE/aws-serverless-java-container-core" \ + "$FIXTURE/aws-serverless-java-container-spring" \ + "$FIXTURE/aws-serverless-spring-archetype" + +cat > "$BIN/mvn" <<'MAVN' +#!/usr/bin/env bash +set -euo pipefail +printf '%s\t%s\n' "$PWD" "$*" >> "$MAVEN_LOG" + +if [[ "$PWD" == "$FIXTURE/aws-serverless-spring-archetype" && "$*" == "-q clean install" ]]; then + exit 23 +fi + +if [[ "$*" == *archetype:generate* ]]; then + mkdir -p "$PWD/spring-archetype-test" + cat > "$PWD/spring-archetype-test/gradlew" <<'GRADLEW' +#!/usr/bin/env bash +exit 0 +GRADLEW + chmod +x "$PWD/spring-archetype-test/gradlew" +fi +MAVN +cat > "$BIN/gradle" <<'GRADLE' +#!/usr/bin/env bash +exit 0 +GRADLE +chmod +x "$BIN/mvn" "$BIN/gradle" + +export FIXTURE MAVEN_LOG="$TEST_ROOT/maven.log" +set +e +(cd "$FIXTURE" && PATH="$BIN:$PATH" bash ./gha_build.sh spring true false) +status=$? +set -e + +if [[ $status -eq 0 ]]; then + echo "gha_build.sh returned success after archetype mvn clean install failed" >&2 + exit 1 +fi +if grep -q 'archetype:generate' "$MAVEN_LOG"; then + echo "archetype generation ran after the archetype install failed" >&2 + exit 1 +fi + +echo "archetype install failure propagated before generation (exit $status)"