Files
werkator/docs/prs/2026-10-12-PR#154-pit-toolchain-jvm.md
claude-code d59afa9093
werkator build succeeded after 02:52
werkator/deploy build succeeded after 00:10
PIT minions on the JVM of the toolchain (v1.41.5) (#154)
Co-authored-by: claude-code <claude-code@javagil.de>
2026-10-12 10:04:30 +02:00

41 lines
2.1 KiB
Markdown

# PR#154: PIT minions on the JVM of the toolchain
> **WARNING:** This document describes only the change applied in this PR.
> It may already be outdated once the next PR is merged.
> Historic PR-documentation is not maintained along with new PRs — treat it as a snapshot, not as current documentation.
## Problem
The nightly build `main@mutation` failed on 2026-10-12, and the manual run on the merge of PR#152 on 2026-10-11 before.
Almost every method exceeded the Mutation-CRAP limit of 15, with scores of exactly C² + C, as with no killed mutant at all.
The whole run took 35 s instead of hours, and PIT reported all 5213 mutants as `NO_COVERAGE`.
The cause is PR#152: the toolchain and the JVM target are Java 25 since then, so the test classes have class version 69.
The `test` task runs on the toolchain, which is why the normal builds stay green.
The PIT plugin does not: its minions start on the JVM that runs Gradle, Java 21 in the build environment.
That JVM cannot load the tests, so the minion finds none:
Could not load de.hoennig.werkator.server.UiViewsUnitTest … has been compiled by a more recent version
of the Java Runtime (class file version 69.0), this version of the Java Runtime only recognizes class file
versions up to 65.0
Found 0 tests
## Non-Goals
- No change of Werkator's behaviour.
- No change of the Gradle launcher JVM: Gradle 8.14.5 stays on Java 21 (PR#152, ADR 0002).
- No change of the gate or of any method.
## Solution
- `pitest.jvmPath` names the executable of the Java toolchain's launcher, so the minions run on Temurin 25.
- Checked locally with Gradle on Java 21 and PIT narrowed to `UiFormats`:
without the line the minion found 0 tests and killed no mutant; with it, it found the test and killed mutants.
- A full local PIT run checks that the gate holds before the PR is marked ready.
- Werkbaum: a node under `#tests`.
- Version 1.41.5, with an "Internal:" entry in the release notes.
## Prerequisite PRs
- [PR#152](https://git.javagil.de/mi/werkator/pulls/152): Werkator on Temurin 25, which moved the tests to class version 69.