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

2.1 KiB

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: Werkator on Temurin 25, which moved the tests to class version 69.