diff --git a/.github/workflows/kotlin-prerelease.yml b/.github/workflows/kotlin-prerelease.yml index d438c63..dab0de8 100644 --- a/.github/workflows/kotlin-prerelease.yml +++ b/.github/workflows/kotlin-prerelease.yml @@ -102,6 +102,23 @@ jobs: ./gradlew -p integration-test build $KOTLIN_OVERRIDE -x :gradle-integration:test -x :maven-integration:test # 重いテストはローカル Maven の非タイムスタンプ SNAPSHOT を入力に持ち UP-TO-DATE 判定が - # 信用できないため --rerun で必ず再実行する(ci.yml と同じ理由) - - run: ./gradlew -p integration-test :gradle-integration:test --rerun $KOTLIN_OVERRIDE - - run: ./gradlew -p integration-test :maven-integration:test --rerun $KOTLIN_OVERRIDE + # 信用できないため --rerun で必ず再実行する(ci.yml と同じ理由)。 + # 本ビルドは必須チェックではなく検出が目的であり、週 1 回しか回らない。先に落ちた 1 件で + # ジョブが止まると残りの検出が隠れ、1 回の実行で 1 件しか分からなくなる。2 つのテストは + # 互いに依存しないため、両方を走らせてから最後にまとめて判定する + - id: gradle_it + continue-on-error: true + run: ./gradlew -p integration-test :gradle-integration:test --rerun $KOTLIN_OVERRIDE + - id: maven_it + continue-on-error: true + run: ./gradlew -p integration-test :maven-integration:test --rerun $KOTLIN_OVERRIDE + - env: + GRADLE_IT: ${{ steps.gradle_it.outcome }} + MAVEN_IT: ${{ steps.maven_it.outcome }} + run: | + set -euo pipefail + echo "gradle-integration: $GRADLE_IT" + echo "maven-integration: $MAVEN_IT" + if [ "$GRADLE_IT" != success ] || [ "$MAVEN_IT" != success ]; then + exit 1 + fi diff --git a/integration-test/gradle-integration/build.gradle.kts b/integration-test/gradle-integration/build.gradle.kts index 1c9ccba..4bf3b7c 100644 --- a/integration-test/gradle-integration/build.gradle.kts +++ b/integration-test/gradle-integration/build.gradle.kts @@ -2,6 +2,7 @@ import com.sun.management.OperatingSystemMXBean import java.io.File import java.lang.management.ManagementFactory import java.util.Properties +import org.gradle.api.tasks.testing.logging.TestExceptionFormat // Gradle TestKit ホスト(docs/test/テスト戦略.md §4)。 // resources/fixtures 配下の合成ビルドを GradleRunner で駆動し、IC 回帰・決定性・ @@ -138,5 +139,8 @@ tasks.test { testLogging { events("passed", "skipped", "failed") showStandardStreams = false + // 既定の SHORT は例外の位置だけを出すため、アサーションが組み立てた診断一覧が落ちて + // 失敗の理由がログから読めない。CI の失敗はログだけが手掛かりなので全文を出す + exceptionFormat = TestExceptionFormat.FULL } } diff --git a/integration-test/maven-integration/build.gradle.kts b/integration-test/maven-integration/build.gradle.kts index f39ade7..4b645e0 100644 --- a/integration-test/maven-integration/build.gradle.kts +++ b/integration-test/maven-integration/build.gradle.kts @@ -1,4 +1,5 @@ import java.util.Properties +import org.gradle.api.tasks.testing.logging.TestExceptionFormat // Maven ビルドホスト(docs/test/テスト戦略.md §4)。 // resources/fixtures 配下の合成 Maven プロジェクトを実 Maven で駆動し、kotlin-maven-plugin の拡張 @@ -83,5 +84,8 @@ tasks.test { testLogging { events("passed", "skipped", "failed") showStandardStreams = false + // 既定の SHORT は例外の位置だけを出すため、アサーションが組み立てた Maven 出力の抜粋が + // 落ちて失敗の理由がログから読めない。CI の失敗はログだけが手掛かりなので全文を出す + exceptionFormat = TestExceptionFormat.FULL } }