Raise test coverage; credit psi coverage from psi-java - #180
Merged
Conversation
psi coverage from psi-java
The Kover verification task that consumes the credited binary report is named `koverCachedVerify`, not `koverVerify`, so it read the contributor module's `test.exec` without a declared dependency on `:<contributor>:test` and failed Gradle's task-output validation on a clean CI run (it was cached locally, hiding the problem). Match Kover report/verify tasks by name suffix (`*Report` / `*Verify`) so the `Cached*` variants Kover registers are covered. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #180 +/- ##
============================================
+ Coverage 90.17% 90.40% +0.22%
- Complexity 552 554 +2
============================================
Files 122 122
Lines 2230 2230
Branches 311 311
============================================
+ Hits 2011 2016 +5
+ Misses 96 93 -3
+ Partials 123 121 -2 🚀 New features to boost your workflow:
|
Contributor
There was a problem hiding this comment.
Pull request overview
This PR increases JVM test coverage across multiple Gradle-plugin modules, introduces psi module tests for the first time, and adds build infrastructure to attribute cross-module PSI coverage (crediting psi coverage produced by psi-java). It also bumps the project snapshot version to 2.0.0-SNAPSHOT.399.
Changes:
- Added new tests in
plugin-base,gradle-plugin-api, andpsito cover previously untested branches and behaviors. - Updated
psibuild configuration to (a) creditpsi-java’s JaCoCo/Kover execution data intopsi’s per-module report and (b) fixpsi:testruntime classpath task dependency on:intellij-platform:shadowJar. - Bumped snapshot version and refreshed generated dependency/license reports accordingly.
Reviewed changes
Copilot reviewed 22 out of 23 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| version.gradle.kts | Bumps published snapshot version to .399. |
| psi/src/test/kotlin/io/spine/tools/psi/PsiExtsSpec.kt | Adds first tests for PsiExts.convertLineSeparators(). |
| psi/src/test/kotlin/io/spine/tools/psi/IdeaStandaloneExecutionSpec.kt | Adds first tests for IdeaStandaloneExecution system-property setup/idempotence. |
| psi/build.gradle.kts | Credits psi coverage from psi-java and adds explicit test → :intellij-platform:shadowJar dependency. |
| plugin-base/src/test/kotlin/io/spine/tools/gradle/task/GradleTaskBuilderSpec.kt | Adds a test for applyNowTo() failure-wrapping behavior. |
| gradle-plugin-api/src/test/kotlin/io/spine/tools/gradle/lib/LibrarySettingsPluginSpec.kt | Adds coverage for LibrarySettingsPlugin.apply branches via applying two settings plugins. |
| gradle-plugin-api-test-fixtures/src/main/kotlin/io/spine/tools/gradle/lib/given/StubSettingsPlugin.kt | Adds NullDslSettingsPlugin fixture to exercise dslSpec == null path. |
| gradle-plugin-api-test-fixtures/build.gradle.kts | Registers plugin id for the new NullDslSettingsPlugin test fixture. |
| docs/dependencies/pom.xml | Updates docs POM version to .399. |
| docs/dependencies/dependencies.md | Refreshes generated dependency/license report content for .399. |
| gradle.properties | Enables Gradle build cache by default (config-synced change). |
| buildSrc/src/main/kotlin/io/spine/gradle/report/coverage/SiblingCoverage.kt | Adds helper to credit coverage across sibling modules (config-synced build infra). |
| buildSrc/src/main/kotlin/io/spine/gradle/ConfigTester.kt | Updates config-tester repo reference (core-java → core-jvm) (config-synced). |
| buildSrc/src/main/kotlin/config-tester.gradle.kts | Uses updated repo reference in config-tester script (config-synced). |
| .github/workflows/remove-obsolete-artifacts-from-packages.yaml | Workflow action version updates (config-synced). |
| .github/workflows/publish.yml | Workflow action version updates + switches to gradle/actions/setup-gradle (config-synced). |
| .github/workflows/increment-guard.yml | Workflow action version updates + switches to gradle/actions/setup-gradle (config-synced). |
| .github/workflows/gradle-wrapper-validation.yml | Workflow action version update (config-synced). |
| .github/workflows/ensure-reports-updated.yml | Workflow action version update (config-synced). |
| .github/workflows/check-links.yml | Workflow action version update (config-synced). |
| .github/workflows/build-on-windows.yml | Workflow action version updates + switches to gradle/actions/setup-gradle (config-synced). |
| .github/workflows/build-on-ubuntu.yml | Workflow action version updates + switches to gradle/actions/setup-gradle (config-synced). |
alexander-yevsyukov
enabled auto-merge
June 9, 2026 19:12
…utionSpec` `IdeaStandaloneExecution` forces headless mode on only when the property is undefined. The test now captures the prior value and asserts that contract — "true" when it was unset, unchanged otherwise — instead of always expecting "true", which could fail under a JVM started with `-Djava.awt.headless=false`. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
armiol
approved these changes
Jun 10, 2026
alexander-yevsyukov
added a commit
to SpineEventEngine/core-jvm-compiler
that referenced
this pull request
Jun 11, 2026
The renderers and views of the `annotation` module are exercised end-to-end by the `annotation-tests` module, which runs the Compiler pipeline in-process. Apply `creditTestCoverageFrom(...)` so that this coverage is credited to the per-module Kover report of `annotation`, raising its line coverage from 43% to 94%. This mirrors the approach used for `psi` <- `psi-java` in SpineEventEngine/tool-base#180. The root aggregated report is not affected: it already cross-credits this coverage via root aggregation. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Raises JVM test coverage across several Gradle-plugin modules and adds the
build-infra needed to credit coverage that was previously produced but not
attributed to the right module. Bumps the project version to
2.0.0-SNAPSHOT.399.What changed
New tests (production code unchanged):
plugin-base—GradleTaskBuilderSpec: covers the task-registrationfailure branch of
GradleTask.Builder.applyNowTo(wraps the failure into anIllegalStateException). plugin-base line coverage 94.4% → 95.0%.gradle-plugin-api—LibrarySettingsPluginSpec: a new case applies twosettings plugins so both remaining branches of
LibrarySettingsPlugin.applyare exercised — the already-present root-extension path and the
dslSpec == nullpath. Thelibpackage reaches 100% branch coverage. Addsa
NullDslSettingsPluginfixture (+ its plugin id) to drive the null path.psi— first-ever tests for the module:IdeaStandaloneExecutionSpecandPsiExtsSpec.Build-infra —
SiblingCoverage.creditTestCoverageFrom(contributor):The language-neutral
psiclasses are exercised by the Java-PSI test fixturesthat live in
psi-java, but Kover's per-module report forpsionly seespsi's owntestdata, so that cross-module coverage was missing from theper-module report. The new helper adds the contributor module's JaCoCo
execution data to this module's Kover report as an
additionalBinaryReports(only this module's classes are credited from it). Applied in
psicreditingpsi-java, this raisespsi's own report from 31% → 70% line.Build fix:
psi:testnow declares an explicit dependency on:intellij-platform:shadowJar. Theintellij-platformmodule assembles itsartifact with the Shadow plugin (which disables the regular
jar), so aconsumer that puts that JAR on its runtime classpath gets no automatic task
dependency — Gradle's task-output validation rejected it the moment
psifirsthad a running
testtask. This mirrors the workaround already used inuber-jar-modulefor publishing.Other notable changes
configwas applied.Reviewer notes
./gradlew buildgenerates only the root Kover report(
build/reports/kover/report.xml), which is what Codecov ingests. The rootreport already cross-credits
psi(~87%) via the root aggregation. ThecreditTestCoverageFromchange fixespsi's per-module report; it doesnot alter the root report or risk double-counting (subproject-level
additionalBinaryReportsdo not propagate into the root rollup)../gradlew build dokkaGenerategreen;spine-code-review,kotlin-engineer,review-docsall APPROVE (one cosmetic Should-fix: adouble blank line in
SiblingCoverage.kt).configsubmodule update (workflows,gradle.properties,buildSrcconfig-tester files) that was already on thebranch — config-distributed, out of scope for review in this consumer repo.
🤖 Generated with Claude Code
🙌🏻 Updated by @alexander-yevsyukov