junit-6-migration: keep downloaded jars across mvn clean, add jar contents output

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01YPgGH6aMbSLANL3E2HHmS6
This commit is contained in:
2026-10-25 18:48:33 +00:00
co-authored by Claude Sonnet 5.5
parent 820318be7d
commit 08e063d22e
8 changed files with 49 additions and 129 deletions
+1
View File
@@ -28,5 +28,6 @@ releases are compared jar against jar. Nothing here is copied from release notes
| `04-vintage-junit4-<version>.txt` | a JUnit 4 test run through the Vintage engine on each version |
| `05-old-apis-<version>.txt` | what the compiler says about three deprecated 5.x APIs on each version |
| `06-fixed-apis-<version>.txt` | the replacements compile on both versions |
| `07-jar-contents.txt` | which CSV parser each `junit-jupiter-params` jar bundles, and the Vintage engine's declared status |
`pom.xml` has two profiles, `junit5` and `junit6`, that change nothing but `junit.version`.
@@ -1,40 +1,12 @@
JUnit 5.14.4, compiling OldApis.java
src/compat/OldApis.java:1: error: package org.junit.jupiter.api does not exist
import org.junit.jupiter.api.MethodOrderer;
^
src/compat/OldApis.java:2: error: package org.junit.jupiter.api does not exist
import org.junit.jupiter.api.Test;
^
src/compat/OldApis.java:3: error: package org.junit.jupiter.api does not exist
import org.junit.jupiter.api.TestMethodOrder;
^
src/compat/OldApis.java:4: error: package org.junit.jupiter.api.io does not exist
import org.junit.jupiter.api.io.TempDir;
^
src/compat/OldApis.java:5: error: package org.junit.platform.commons.support does not exist
import org.junit.platform.commons.support.ReflectionSupport;
^
src/compat/OldApis.java:8: error: cannot find symbol
@TestMethodOrder(MethodOrderer.Alphanumeric.class)
^
symbol: class TestMethodOrder
src/compat/OldApis.java:8: error: package MethodOrderer does not exist
src/compat/OldApis.java:8: warning: [deprecation] Alphanumeric in MethodOrderer has been deprecated
@TestMethodOrder(MethodOrderer.Alphanumeric.class)
^
src/compat/OldApis.java:11: error: cannot find symbol
@Test
^
symbol: class Test
location: class OldApis
src/compat/OldApis.java:13: error: cannot find symbol
src/compat/OldApis.java:13: warning: [deprecation] loadClass(String) in ReflectionSupport has been deprecated
Object loaded = ReflectionSupport.loadClass("java.lang.String");
^
symbol: variable ReflectionSupport
location: class OldApis
src/compat/OldApis.java:14: error: cannot find symbol
^
src/compat/OldApis.java:14: warning: [deprecation] SCOPE_PROPERTY_NAME in TempDir has been deprecated
String property = TempDir.SCOPE_PROPERTY_NAME;
^
symbol: variable TempDir
location: class OldApis
10 errors
javac exit status: 1
^
3 warnings
javac exit status: 0
+9 -31
View File
@@ -1,40 +1,18 @@
JUnit 6.1.3, compiling OldApis.java
src/compat/OldApis.java:1: error: package org.junit.jupiter.api does not exist
import org.junit.jupiter.api.MethodOrderer;
^
src/compat/OldApis.java:2: error: package org.junit.jupiter.api does not exist
import org.junit.jupiter.api.Test;
^
src/compat/OldApis.java:3: error: package org.junit.jupiter.api does not exist
import org.junit.jupiter.api.TestMethodOrder;
^
src/compat/OldApis.java:4: error: package org.junit.jupiter.api.io does not exist
import org.junit.jupiter.api.io.TempDir;
^
src/compat/OldApis.java:5: error: package org.junit.platform.commons.support does not exist
import org.junit.platform.commons.support.ReflectionSupport;
^
src/compat/OldApis.java:8: error: cannot find symbol
@TestMethodOrder(MethodOrderer.Alphanumeric.class)
^
symbol: class TestMethodOrder
src/compat/OldApis.java:8: error: package MethodOrderer does not exist
@TestMethodOrder(MethodOrderer.Alphanumeric.class)
^
src/compat/OldApis.java:11: error: cannot find symbol
@Test
^
symbol: class Test
location: class OldApis
symbol: class Alphanumeric
location: interface MethodOrderer
src/compat/OldApis.java:13: error: cannot find symbol
Object loaded = ReflectionSupport.loadClass("java.lang.String");
^
symbol: variable ReflectionSupport
location: class OldApis
^
symbol: method loadClass(String)
location: class ReflectionSupport
src/compat/OldApis.java:14: error: cannot find symbol
String property = TempDir.SCOPE_PROPERTY_NAME;
^
symbol: variable TempDir
location: class OldApis
10 errors
^
symbol: variable SCOPE_PROPERTY_NAME
location: @interface TempDir
3 errors
javac exit status: 1
@@ -1,32 +1,2 @@
JUnit 5.14.4, compiling FixedApis.java
src/compat/FixedApis.java:1: error: package org.junit.jupiter.api does not exist
import org.junit.jupiter.api.MethodOrderer;
^
src/compat/FixedApis.java:2: error: package org.junit.jupiter.api does not exist
import org.junit.jupiter.api.Test;
^
src/compat/FixedApis.java:3: error: package org.junit.jupiter.api does not exist
import org.junit.jupiter.api.TestMethodOrder;
^
src/compat/FixedApis.java:4: error: package org.junit.platform.commons.support does not exist
import org.junit.platform.commons.support.ReflectionSupport;
^
src/compat/FixedApis.java:7: error: cannot find symbol
@TestMethodOrder(MethodOrderer.MethodName.class)
^
symbol: class TestMethodOrder
src/compat/FixedApis.java:7: error: package MethodOrderer does not exist
@TestMethodOrder(MethodOrderer.MethodName.class)
^
src/compat/FixedApis.java:10: error: cannot find symbol
@Test
^
symbol: class Test
location: class FixedApis
src/compat/FixedApis.java:12: error: cannot find symbol
Object loaded = ReflectionSupport.tryToLoadClass("java.lang.String").toOptional().orElseThrow();
^
symbol: variable ReflectionSupport
location: class FixedApis
8 errors
javac exit status: 1
javac exit status: 0
@@ -1,32 +1,2 @@
JUnit 6.1.3, compiling FixedApis.java
src/compat/FixedApis.java:1: error: package org.junit.jupiter.api does not exist
import org.junit.jupiter.api.MethodOrderer;
^
src/compat/FixedApis.java:2: error: package org.junit.jupiter.api does not exist
import org.junit.jupiter.api.Test;
^
src/compat/FixedApis.java:3: error: package org.junit.jupiter.api does not exist
import org.junit.jupiter.api.TestMethodOrder;
^
src/compat/FixedApis.java:4: error: package org.junit.platform.commons.support does not exist
import org.junit.platform.commons.support.ReflectionSupport;
^
src/compat/FixedApis.java:7: error: cannot find symbol
@TestMethodOrder(MethodOrderer.MethodName.class)
^
symbol: class TestMethodOrder
src/compat/FixedApis.java:7: error: package MethodOrderer does not exist
@TestMethodOrder(MethodOrderer.MethodName.class)
^
src/compat/FixedApis.java:10: error: cannot find symbol
@Test
^
symbol: class Test
location: class FixedApis
src/compat/FixedApis.java:12: error: cannot find symbol
Object loaded = ReflectionSupport.tryToLoadClass("java.lang.String").toOptional().orElseThrow();
^
symbol: variable ReflectionSupport
location: class FixedApis
8 errors
javac exit status: 1
javac exit status: 0
@@ -0,0 +1,11 @@
junit-jupiter-params-5.14.4: bundled CSV parser packages (org/junit/jupiter/params/shadow/...)
1 org/junit/jupiter/params/shadow/com/
291 org/junit/jupiter/params/shadow/com/univocity
junit-jupiter-params-6.1.3: bundled CSV parser packages (org/junit/jupiter/params/shadow/...)
1 org/junit/jupiter/params/shadow/de/
71 org/junit/jupiter/params/shadow/de/siegmar
junit-vintage-engine-6.1.3 manifest, package export status:
org.junit.vintage.engine;status=DEPRECATED;version="6.1.3"
junit-vintage-engine-5.14.4 manifest, package export status:
org.junit.vintage.engine;version="5.14.4";status=STABLE
+17
View File
@@ -0,0 +1,17 @@
#!/usr/bin/env bash
# Looks inside the downloaded jars (run scripts/api_diff.py first). Writes output/07-jar-contents.txt.
set -euo pipefail
cd "$(dirname "$0")/.."
J=target/jars
{
for v in 5.14.4 6.1.3; do
echo "junit-jupiter-params-$v: bundled CSV parser packages (org/junit/jupiter/params/shadow/...)"
unzip -l "$J/junit-jupiter-params-$v.jar" | awk '{print $4}' | grep -o 'org/junit/jupiter/params/shadow/[a-z]*/[a-z]*' | sort | uniq -c | sed 's/^ */ /'
done
echo
echo "junit-vintage-engine-6.1.3 manifest, package export status:"
unzip -p "$J/junit-vintage-engine-6.1.3.jar" META-INF/MANIFEST.MF | tr -d '\r' | sed ':a;N;$!ba;s/\n //g' | grep -o 'Export-Package: org.junit.vintage.engine;[^,]*' | sed 's/;uses:=.*//; s/^Export-Package: //'
echo "junit-vintage-engine-5.14.4 manifest, package export status:"
unzip -p "$J/junit-vintage-engine-5.14.4.jar" META-INF/MANIFEST.MF | tr -d '\r' | sed ':a;N;$!ba;s/\n //g' | grep -o 'Export-Package: org.junit.vintage.engine;[^,]*' | sed 's/;uses:=.*//; s/^Export-Package: //'
} > output/07-jar-contents.txt
cat output/07-jar-contents.txt
+2 -1
View File
@@ -4,8 +4,9 @@ set -euo pipefail
cd "$(dirname "$0")/.."
unset JAVA_TOOL_OPTIONS
python3 scripts/api_diff.py >/dev/null # 01, 02: jar-to-jar API diff (also downloads the jars)
mvn -B -q clean test -Pjunit5 # 03, 04 on JUnit 5.14.4
mvn -B -q clean test -Pjunit6 # 03, 04 on JUnit 6.1.3
python3 scripts/api_diff.py >/dev/null # 01, 02: jar-to-jar API diff (downloads the jars into target/jars)
./scripts/compile-old-apis.sh # 05, 06
./scripts/inspect-jars.sh >/dev/null # 07
ls -1 output