Skip to content

Commit

Permalink
Set Java toolchain for Gradle test tasks (#3064)
Browse files Browse the repository at this point in the history
* Change CI to always run Java 17

* Break down Gradle commands to multiple lines

* Add more diagnostic info on CI

* Run CI matrix based on gradle property configuring a Java toolchain for Test tasks.

* Enable toolchains for androidTest:testDebugUnitTest

* Fix toolchain deprecation warning.

Using a toolchain installed via auto-provisioning, but having no toolchain repositories configured. This behavior is deprecated. Consider defining toolchain download repositories, otherwise the build might fail in clean environments; see https://docs.gradle.org/8.2/userguide/toolchains.html#sub:download_repositories
  • Loading branch information
TWiStErRob committed Jul 19, 2023
1 parent 1fc4451 commit cf8b820
Show file tree
Hide file tree
Showing 7 changed files with 59 additions and 15 deletions.
47 changes: 34 additions & 13 deletions .github/workflows/ci.yml
Expand Up @@ -46,11 +46,11 @@ jobs:
with:
fetch-depth: '0' # https://github.com/shipkit/shipkit-changelog#fetch-depth-on-ci

- name: 2. Set up Java ${{ matrix.java }}
- name: 2. Set up Java for running Gradle build
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: ${{ matrix.java }}
java-version: 17

- name: 3. Validate Gradle wrapper
if: matrix.java == 11 && matrix.entry.mock-maker == 'mock-maker-default' # SINGLE-MATRIX-JOB
Expand All @@ -62,16 +62,31 @@ jobs:

- name: 5. Spotless check (single job only). Run './gradlew spotlessApply' locally if this job fails.
if: matrix.java == 11 && matrix.entry.mock-maker == 'mock-maker-default' # SINGLE-MATRIX-JOB
run: ./gradlew spotlessCheck
run: >
./gradlew
spotlessCheck
--stacktrace
--scan
- name: 6. Build on Java ${{ matrix.java }} with ${{ matrix.entry.mock-maker }} and ${{ matrix.entry.member-accessor }}
run: ./gradlew build idea --scan
run: >
./gradlew
-Pmockito.test.java=${{ matrix.java }}
build
idea
--stacktrace
--scan
env:
MOCK_MAKER: ${{ matrix.entry.mock-maker }}
MEMBER_ACCESSOR: ${{ matrix.entry.member-accessor }}

- name: 7. Generate coverage report
run: ./gradlew coverageReport --stacktrace --scan
run: >
./gradlew
-Pmockito.test.java=${{ matrix.java }}
coverageReport
--stacktrace
--scan
- name: 8. Upload coverage report
uses: codecov/codecov-action@v3
Expand Down Expand Up @@ -100,11 +115,11 @@ jobs:
with:
fetch-depth: '0' # https://github.com/shipkit/shipkit-changelog#fetch-depth-on-ci

- name: 2. Set up Java 11
- name: 2. Set up Java for running Gradle build
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: 11
java-version: 17

- name: 3. Run Android tests on Android API level ${{ matrix.android-api }}
uses: reactivecircus/android-emulator-runner@v2
Expand Down Expand Up @@ -183,19 +198,25 @@ jobs:

steps:

- name: Check out code
- name: 1. Check out code
uses: actions/checkout@v3 # https://github.com/actions/checkout
with:
fetch-depth: '0' # https://github.com/shipkit/shipkit-changelog#fetch-depth-on-ci

- name: Set up Java 11
- name: 2. Set up Java for running Gradle build
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: 11

- name: Build and release
run: ./gradlew githubRelease publishToSonatype closeAndReleaseStagingRepository releaseSummary
java-version: 17

- name: 3. Build and release
run: >
./gradlew
githubRelease
publishToSonatype
closeAndReleaseStagingRepository
releaseSummary
--stacktrace
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
NEXUS_TOKEN_USER: ${{secrets.NEXUS_TOKEN_USER}}
Expand Down
6 changes: 6 additions & 0 deletions gradle.properties
Expand Up @@ -16,3 +16,9 @@ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 \
android.useAndroidX=true
# Kotlin code style for this project: "official" or "obsolete":
kotlin.code.style=official

# Version of JDK to use for running tests.
# Possible values:
# - auto -> use Java running Gradle, best for local dev.
# - A Java major version number, like 11 or 17.
mockito.test.java=auto
1 change: 1 addition & 0 deletions gradle/java-library.gradle
@@ -1,5 +1,6 @@
apply plugin: "java"
apply plugin: "java-library"
apply from: "$rootDir/gradle/test-launcher.gradle"

if (!base.archivesName.get().startsWith("mockito-")) {
base.archivesName = "mockito-" + project.name
Expand Down
1 change: 1 addition & 0 deletions gradle/java-test.gradle
@@ -1,4 +1,5 @@
apply plugin: "java"
apply from: "$rootDir/gradle/test-launcher.gradle"

// Test modules don't need to be published, so there's no need to build javadoc for them.
// Most test modules don't have src/main, but this is here in shared configuration just in case.
Expand Down
13 changes: 13 additions & 0 deletions gradle/test-launcher.gradle
@@ -0,0 +1,13 @@
tasks.withType(Test) {
javaLauncher = javaToolchains.launcherFor {
languageVersion = providers
.gradleProperty("mockito.test.java")
.map {
if (it == "auto") {
JavaLanguageVersion.of(JavaVersion.current().majorVersion)
} else {
JavaLanguageVersion.of(it)
}
}
}
}
1 change: 1 addition & 0 deletions settings.gradle.kts
@@ -1,5 +1,6 @@
plugins {
id("com.gradle.enterprise") version "3.14"
id("org.gradle.toolchains.foojay-resolver-convention") version "0.6.0"
}

include(
Expand Down
5 changes: 3 additions & 2 deletions subprojects/androidTest/androidTest.gradle
Expand Up @@ -5,6 +5,9 @@ plugins {
id 'kotlin-android'
}

apply from: "$rootDir/gradle/dependencies.gradle"
apply from: "$rootDir/gradle/test-launcher.gradle"

android {
namespace = "org.mockitousage.androidtest"
compileSdk = 33
Expand Down Expand Up @@ -62,8 +65,6 @@ androidComponents {
}
}

apply from: "$rootDir/gradle/dependencies.gradle"

dependencies {
implementation libraries.kotlin.stdlib

Expand Down

0 comments on commit cf8b820

Please sign in to comment.