gnodet opened a new pull request, #3402:
URL: https://github.com/apache/maven-surefire/pull/3402

   ## Summary
   
   - Enable Maven 4 in the CI matrix (`maven4-enabled: true`) with proper JDK 
11 exclusion
   - Fix integration test failures caused by `maven-verifier:2.0.0-M1` API 
incompatibility with Maven 4
   - Fix pre-existing race condition in `CountdownCloseable`
   
   ## Details
   
   ### Maven 4 CI matrix
   The shared workflow's matrix uses the exact version string `4.0.0-rc-5`, so 
the exclude must match it exactly (not just `"4"`). JDK 8 is already 
auto-excluded by the shared workflow when `maven4-enabled=true`.
   
   ### IT failures — maven-verifier embedded mode
   All integration tests fail with Maven 4 because `maven-verifier:2.0.0-M1` 
uses reflection to call `MavenCling.doMain(String[], String, PrintStream, 
PrintStream)` in embedded mode, but Maven 4 rc-5 changed this method signature. 
The fix detects Maven 4 by checking for `maven-cling-*.jar` in the Maven home 
lib directory and forces forked JVM mode, bypassing the broken reflection 
entirely.
   
   This is a **short-term workaround**. The long-term fix is to migrate from 
`maven-verifier` (which is [being 
deprecated](https://github.com/apache/maven-verifier/issues/186)) to 
[maven-executor](https://github.com/apache/maven-executor) 
(`org.apache.maven.executor:maven-executor:1.0.0`), which natively supports 
both Maven 3.x and 4.x.
   
   ### CountdownCloseable race condition
   `CountdownCloseable.awaitClosed()` used `if` instead of `while` to guard 
`Object.wait()`, making it vulnerable to spurious wakeups per the Java Language 
Specification. This is a pre-existing bug unrelated to Maven 4, but it could 
cause intermittent `CommandlineExecutorTest` failures under different JVM 
timing.
   
   ## Related
   - Supersedes / addresses the same goals as #3352
   - Upstream: 
[apache/maven-verifier#186](https://github.com/apache/maven-verifier/issues/186)
 (deprecation)
   - Upstream: 
[apache/maven-executor](https://github.com/apache/maven-executor) (replacement)
   
   ## Test plan
   - [x] `surefire-extensions-api` unit tests pass locally (including 
`CommandlineExecutorTest`)
   - [x] Full project builds successfully (`mvn clean install -DskipTests`)
   - [ ] CI: Maven 3.9.x cells should continue to pass (no behavior change)
   - [ ] CI: Maven 4 + JDK 17/21 cells should now pass with forked mode
   - [ ] CI: Maven 4 + JDK 8/11 cells should be excluded from the matrix
   
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to