Skip to content

Commit 401794f

Browse files
authored
Add support for JUnit 6 by introducing variants for instrumentation libraries (#399)
* Refactor build system for instrumentation, use version catalog etc * Add variants (JU5 & 6) to instrumentation modules * Implement JU5&6 backbones for instrumentation modules A few bridge APIs were needed to overcome incompatibilities between the versions * Adjust plugin and re-enable publishing * Hook up readme generation to version catalog * Make plugin tests run with JU5&6 * New logo * Remove Groovy blocks from readme * Try a different logo * Adjust instrumentation for distinct minSdks per JUnit version * Adjust instrumentation * CI script updates * Set up junit-dependent version in the plugin * Try CI * Update tests * Address more deprecation warnings * Forgot to assemble core:androidTest APKs * Publication shenanigans for multi-variant instrumentation libs * Avoid error when a client doesn't include junit-jupiter-params on the runtime classpath * Revert plugin ID change * Unify publish statement in CI config and brush up deploy script * Add Affinity file for new logo
1 parent 83b5501 commit 401794f

111 files changed

Lines changed: 2206 additions & 2215 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.circleci/config.yml

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ defaults: &defaults
33
working_directory: ~/root/project
44
resource_class: large
55
docker:
6-
- image: cimg/android:2023.04.1
6+
- image: cimg/android:2025.12.1
77
environment:
88
GRADLE_OPTS: -Xmx4096m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.daemon=false -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false
99

1010
cache_key: &cache_key
11-
key: jars-{{ checksum "build-logic/build.gradle.kts" }}-{{ checksum "plugin/build.gradle.kts" }}-{{ checksum "plugin/android-junit5/build.gradle.kts" }}-{{ checksum "plugin/gradle/wrapper/gradle-wrapper.properties" }}-{{ checksum "instrumentation/build.gradle.kts" }}-{{ checksum "instrumentation/core/build.gradle.kts" }}-{{ checksum "instrumentation/compose/build.gradle.kts" }}-{{ checksum "instrumentation/extensions/build.gradle.kts" }}-{{ checksum "instrumentation/runner/build.gradle.kts" }}-{{ checksum "instrumentation/sample/build.gradle.kts" }}-{{ checksum "instrumentation/gradle/wrapper/gradle-wrapper.properties" }}-{{ checksum "build-logic/src/main/kotlin/Environment.kt" }}-{{ checksum "build-logic/src/main/kotlin/Dependencies.kt" }}
11+
key: jars-{{ checksum "build-logic/build.gradle.kts" }}-{{ checksum "plugin/build.gradle.kts" }}-{{ checksum "plugin/android-junit5/build.gradle.kts" }}-{{ checksum "plugin/gradle/wrapper/gradle-wrapper.properties" }}-{{ checksum "instrumentation/build.gradle.kts" }}-{{ checksum "instrumentation/core/build.gradle.kts" }}-{{ checksum "instrumentation/compose/build.gradle.kts" }}-{{ checksum "instrumentation/extensions/build.gradle.kts" }}-{{ checksum "instrumentation/runner/build.gradle.kts" }}-{{ checksum "instrumentation/sample/build.gradle.kts" }}-{{ checksum "instrumentation/gradle/wrapper/gradle-wrapper.properties" }}-{{ checksum "build-logic/src/main/kotlin/Environment.kt" }}-{{ checksum "build-logic/gradle/libs.versions.toml" }}
1212

1313
commands:
1414
construct_signing_key:
@@ -35,17 +35,10 @@ jobs:
3535
command: cd instrumentation && ./gradlew androidDependencies
3636
- run:
3737
name: (Instrumentation) Build
38-
command: |
39-
cd instrumentation
40-
./gradlew assembleRelease :core:assembleDebug \
41-
:core:assembleDebugAndroidTest \
42-
:compose:assembleDebugAndroidTest \
43-
:extensions:assembleDebug \
44-
:runner:assembleDebug \
45-
:sample:assembleDebug --stacktrace
38+
command: cd instrumentation && ./gradlew assemble :core:assembleAndroidTest --stacktrace
4639
- run:
4740
name: (Instrumentation) Test
48-
command: cd instrumentation && ./gradlew :core:check :extensions:check :runner:check :compose:check --stacktrace
41+
command: cd instrumentation && ./gradlew check --stacktrace
4942
- save_cache:
5043
<<: *cache_key
5144
paths:
@@ -60,18 +53,30 @@ jobs:
6053
sudo gcloud auth activate-service-account --key-file=${HOME}/gcloud-service-key.json
6154
sudo gcloud --quiet config set project ${GOOGLE_PROJECT_ID}
6255
- run:
63-
name: Test with Firebase Test Lab
56+
name: Test with Firebase Test Lab (JUnit 5)
6457
command: >
6558
sudo gcloud firebase test android run \
6659
--type instrumentation \
67-
--app instrumentation/sample/build/outputs/apk/debug/sample-debug.apk \
68-
--test instrumentation/core/build/outputs/apk/androidTest/debug/core-debug-androidTest.apk \
69-
--environment-variables runnerBuilder=de.mannodermaus.junit5.AndroidJUnit5Builder \
60+
--app instrumentation/sample/build/outputs/apk/five/debug/sample-five-debug.apk \
61+
--test instrumentation/core/build/outputs/apk/androidTest/five/debug/core-five-debug-androidTest.apk \
62+
--environment-variables runnerBuilder=de.mannodermaus.junit5.AndroidJUnitFrameworkBuilder \
7063
--test-runner-class androidx.test.runner.AndroidJUnitRunner \
7164
--device model=redfin,version=30,locale=en_US,orientation=portrait \
7265
--device model=oriole,version=33,locale=en_US,orientation=portrait \
7366
--results-bucket cloud-test-${GOOGLE_PROJECT_ID} \
7467
--timeout 15m
68+
- run:
69+
name: Test with Firebase Test Lab (JUnit 6)
70+
command: >
71+
sudo gcloud firebase test android run \
72+
--type instrumentation \
73+
--app instrumentation/sample/build/outputs/apk/six/debug/sample-six-debug.apk \
74+
--test instrumentation/core/build/outputs/apk/androidTest/six/debug/core-six-debug-androidTest.apk \
75+
--environment-variables runnerBuilder=de.mannodermaus.junit5.AndroidJUnitFrameworkBuilder \
76+
--test-runner-class androidx.test.runner.AndroidJUnitRunner \
77+
--device model=pa3q,version=35,locale=en_US,orientation=portrait \
78+
--results-bucket cloud-test-${GOOGLE_PROJECT_ID} \
79+
--timeout 15m
7580
- run:
7681
name: Install gsutil dependency and copy test results data
7782
command: |
@@ -112,12 +117,12 @@ jobs:
112117
name: (Instrumentation) Build & Deploy
113118
command: |
114119
cd instrumentation
115-
./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository --stacktrace
120+
./gradlew publishAllPublicationsToSonatypeRepository closeAndReleaseStagingRepositories --stacktrace
116121
- run:
117122
name: (Plugin) Build & Deploy
118123
command: |
119124
cd plugin
120-
./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository --stacktrace
125+
./gradlew publishAllPublicationsToSonatypeRepository closeAndReleaseStagingRepositories --stacktrace
121126
- store_artifacts:
122127
path: plugin/android-junit5/build/publications
123128
destination: plugin/publications/snapshots

.github/workflows/gradle-wrapper-validation.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ jobs:
88
name: "Validation"
99
runs-on: ubuntu-latest
1010
steps:
11-
- uses: actions/checkout@v4
12-
- uses: gradle/actions/wrapper-validation@v4
11+
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
12+
- uses: gradle/actions/wrapper-validation@bfd569614358980afc8f89c2730eee75bb97efdf # v5

0 commit comments

Comments
 (0)