From 42db4cde6b5f1b33dd89797301aacd378480b415 Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Wed, 7 Oct 2026 22:35:06 -0400 Subject: [PATCH] ci: the APK waits for the core's clippy and tests android.yml never ran cargo, so a core test that failed in desktop.yml's verify job stopped the desktop installers and not the APK, which links the same core through android/ffi (#5237). The Kotlin + Rust job now runs clippy and the tests for inkwell-core and inkwell-ffi before anything is assembled or published. Co-Authored-By: Claude Opus 5.5 --- .forgejo/workflows/android.yml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/.forgejo/workflows/android.yml b/.forgejo/workflows/android.yml index 72e3e8f..a8eed46 100644 --- a/.forgejo/workflows/android.yml +++ b/.forgejo/workflows/android.yml @@ -169,6 +169,16 @@ jobs: - name: Build the native library and bindings run: ./gradlew generateUniffiBindings -PINKWELL_CARGO_PROFILE=${{ steps.build.outputs.profile }} + # The core ships inside this APK (through android/ffi), so its checks have to + # gate the APK HERE, in this workflow's graph. desktop.yml runs them too, but a + # red run there cannot stop this lane publishing (rule 177, #5237). Host + # target: the crates' own tests, not the cross-compiled .so. + - name: Rust clippy and tests (core and FFI) + working-directory: . + run: | + cargo clippy --locked -p inkwell-core -p inkwell-ffi --all-targets -- -D warnings + cargo test --locked -p inkwell-core -p inkwell-ffi + # The image's PINNED CLIs, not Gradle plugins. ci-rust-android carries both # (M12 step 3) precisely so this lane needs no second image, and going # through Gradle plugins would mean a second version of each tool resolved @@ -185,8 +195,8 @@ jobs: - name: Unit tests # Host-JVM tests only. Anything touching the core needs an Android # runtime to load the .so, so those are instrumented tests and belong on - # an emulator, not here — the Rust side is covered by the workspace - # tests in the desktop lane. + # an emulator, not here — the Rust side is covered by the cargo step + # above. # # DEBUG regardless of what is being packaged: AGP creates unit-test tasks # only for `testBuildType`, which is debug, so `testReleaseUnitTest` does