From 54a90a9f50ccc79cbce39aa72bdd1f003ba12cea Mon Sep 17 00:00:00 2001 From: James Rich <2199651+jamesarich@users.noreply.github.com> Date: Thu, 15 Jan 2026 19:39:28 -0600 Subject: [PATCH] ci: Run tests and generate coverage for all modules (#4238) --- .github/workflows/reusable-android-build.yml | 32 ++++++++++++++++++-- .github/workflows/reusable-android-test.yml | 15 +++++++-- settings.gradle.kts | 2 +- 3 files changed, 44 insertions(+), 5 deletions(-) diff --git a/.github/workflows/reusable-android-build.yml b/.github/workflows/reusable-android-build.yml index 5eded26c1..3bdfdb363 100644 --- a/.github/workflows/reusable-android-build.yml +++ b/.github/workflows/reusable-android-build.yml @@ -69,7 +69,35 @@ jobs: echo "datadogApplicationId=$DATADOG_APPLICATION_ID" >> ./secrets.properties echo "datadogClientToken=$DATADOG_CLIENT_TOKEN" >> ./secrets.properties - name: Run Spotless, Detekt, Build, Lint, and Local Tests - run: ./gradlew spotlessCheck detekt assembleDebug testDebugUnitTest koverXmlReport --configuration-cache --scan + run: | + ./gradlew spotlessCheck \ + detekt \ + assembleDebug \ + :app:testDebugUnitTest \ + :core:analytics:testDebugUnitTest \ + :core:common:testDebugUnitTest \ + :core:data:testDebugUnitTest \ + :core:database:testDebugUnitTest \ + :core:datastore:testDebugUnitTest \ + :core:di:testDebugUnitTest \ + :core:model:testDebugUnitTest \ + :core:navigation:testDebugUnitTest \ + :core:network:testDebugUnitTest \ + :core:prefs:testDebugUnitTest \ + :core:proto:testDebugUnitTest \ + :core:service:testDebugUnitTest \ + :core:strings:testDebugUnitTest \ + :core:ui:testDebugUnitTest \ + :feature:firmware:testDebugUnitTest \ + :feature:intro:testDebugUnitTest \ + :feature:map:testDebugUnitTest \ + :feature:messaging:testDebugUnitTest \ + :feature:node:testDebugUnitTest \ + :feature:settings:testDebugUnitTest \ + :mesh_service_example:testDebugUnitTest \ + koverXmlReport \ + --configuration-cache \ + --scan env: VERSION_CODE: ${{ env.VERSION_CODE }} @@ -78,7 +106,7 @@ jobs: with: token: ${{ secrets.CODECOV_TOKEN }} slug: meshtastic/Meshtastic-Android - files: app/build/reports/kover/xml/report.xml + files: build/reports/kover/xml/report.xml - name: Upload test results to Codecov if: ${{ !cancelled() }} diff --git a/.github/workflows/reusable-android-test.yml b/.github/workflows/reusable-android-test.yml index f06544ebd..ff5d97a30 100644 --- a/.github/workflows/reusable-android-test.yml +++ b/.github/workflows/reusable-android-test.yml @@ -85,7 +85,18 @@ jobs: force-avd-creation: false emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none disable-animations: true - script: ./gradlew connectedDebugAndroidTest koverXmlReport --configuration-cache --scan && ( killall -INT crashpad_handler || true ) + script: | + ./gradlew :app:connectedDebugAndroidTest \ + :core:database:connectedDebugAndroidTest \ + :core:model:connectedDebugAndroidTest \ + :core:ui:connectedDebugAndroidTest \ + :feature:messaging:connectedDebugAndroidTest \ + :feature:node:connectedDebugAndroidTest \ + :feature:settings:connectedDebugAndroidTest \ + :mesh_service_example:connectedDebugAndroidTest \ + koverXmlReport \ + --configuration-cache \ + --scan && ( killall -INT crashpad_handler || true ) - name: Upload coverage reports to Codecov if: ${{ !cancelled() }} @@ -93,7 +104,7 @@ jobs: with: token: ${{ secrets.CODECOV_TOKEN }} slug: meshtastic/Meshtastic-Android - files: app/build/reports/kover/xml/report.xml + files: build/reports/kover/xml/report.xml - name: Upload test results to Codecov if: ${{ !cancelled() }} diff --git a/settings.gradle.kts b/settings.gradle.kts index 19ce5f389..2232f7d17 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -75,7 +75,7 @@ develocity { capture { fileFingerprints.set(true) } - publishing.onlyIf { false } + publishing.onlyIf { System.getenv("CI") != null } } buildCache { local {