From b4c83035abbbc373fc097a77bd192a166fad949c Mon Sep 17 00:00:00 2001 From: Egor Andreevici Date: Thu, 14 Apr 2022 14:15:53 -0400 Subject: [PATCH] Run tests on all JDKs but only build on 18 --- .github/workflows/build.yml | 20 ++------------------ build.gradle.kts | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index daab36c4de..87dbf6a9f4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,22 +9,6 @@ jobs: jvm: runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - java-version: - - 8 - - 9 - - 10 - - 11 - - 12 - - 13 - - 14 - - 15 - - 16 - - 17 - - 18 - steps: - name: Checkout uses: actions/checkout@v2 @@ -36,7 +20,7 @@ jobs: uses: actions/setup-java@v2 with: distribution: 'zulu' - java-version: ${{ matrix.java-version }} + java-version: 18 - name: Test run: ./gradlew build @@ -55,7 +39,7 @@ jobs: uses: actions/setup-java@v2 with: distribution: 'zulu' - java-version: 17 + java-version: 18 - name: Upload Artifacts run: ./gradlew publish diff --git a/build.gradle.kts b/build.gradle.kts index 3057c26fac..1d780103af 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -99,4 +99,29 @@ subprojects { ) } } + + // Copied from https://github.com/square/retrofit/blob/master/retrofit/build.gradle#L28. + // Create a test task for each supported JDK. + for (majorVersion in 8..18) { + // Adoptium JDK 9 cannot extract on Linux or Mac OS. + if (majorVersion == 9) continue + + val jdkTest = tasks.register("testJdk$majorVersion") { + val javaToolchains = project.extensions.getByType(JavaToolchainService::class) + javaLauncher.set(javaToolchains.launcherFor { + languageVersion.set(JavaLanguageVersion.of(majorVersion)) + }) + + description = "Runs the test suite on JDK $majorVersion" + group = LifecycleBasePlugin.VERIFICATION_GROUP + + // Copy inputs from normal Test task. + val testTask = tasks.getByName("test") + classpath = testTask.classpath + testClassesDirs = testTask.testClassesDirs + } + tasks.named("check").configure { + dependsOn(jdkTest) + } + } }