Skip to content

Commit bbb9dac

Browse files
committed
Update JUnit config for GraalVM for JDK 21.
1 parent c8da197 commit bbb9dac

File tree

4 files changed

+62
-0
lines changed

4 files changed

+62
-0
lines changed

common/junit-platform-native/src/main/java/org/graalvm/junit/platform/config/core/PluginConfigProvider.java

+4
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,8 @@ public interface PluginConfigProvider {
4747

4848
void onTestClassRegistered(Class<?> testClass, NativeImageConfiguration registry);
4949

50+
default int getMajorJDKVersion() {
51+
return Runtime.version().feature();
52+
}
53+
5054
}

common/junit-platform-native/src/main/java/org/graalvm/junit/platform/config/jupiter/JupiterConfigProvider.java

+21
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,27 @@ public void onLoad(NativeImageConfiguration config) {
8686
"org.junit.jupiter.engine.config.InstantiatingConfigurationParameterConverter"
8787
);
8888

89+
if (getMajorJDKVersion() >= 21) {
90+
/* new with simulated class initialization */
91+
config.initializeAtBuildTime(
92+
"org.junit.jupiter.api.DisplayNameGenerator$Standard",
93+
"org.junit.jupiter.api.extension.ConditionEvaluationResult",
94+
"org.junit.jupiter.api.TestInstance$Lifecycle",
95+
"org.junit.jupiter.engine.config.CachingJupiterConfiguration",
96+
"org.junit.jupiter.engine.config.DefaultJupiterConfiguration",
97+
"org.junit.jupiter.engine.descriptor.DynamicDescendantFilter",
98+
"org.junit.jupiter.engine.descriptor.JupiterEngineDescriptor",
99+
"org.junit.jupiter.engine.descriptor.NestedClassTestDescriptor",
100+
"org.junit.jupiter.engine.execution.InterceptingExecutableInvoker",
101+
"org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall",
102+
"org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall$VoidMethodInterceptorCall",
103+
"org.junit.jupiter.engine.execution.InvocationInterceptorChain",
104+
"org.junit.jupiter.engine.JupiterTestEngine",
105+
"org.junit.jupiter.params.provider.EnumSource$Mode$Validator"
106+
);
107+
}
108+
109+
89110
config.registerAllClassMembersForReflection(
90111
"org.junit.jupiter.engine.extension.TimeoutExtension$ExecutorResource",
91112
"org.junit.jupiter.engine.extension.TimeoutInvocationFactory$SingleThreadExecutorResource"

common/junit-platform-native/src/main/java/org/graalvm/junit/platform/config/platform/PlatformConfigProvider.java

+24
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,30 @@ public void onLoad(NativeImageConfiguration config) {
6363
"org.junit.platform.reporting.open.xml.OpenTestReportGeneratingListener"
6464
);
6565

66+
if (getMajorJDKVersion() >= 21) {
67+
/* new with simulated class initialization */
68+
config.initializeAtBuildTime(
69+
"org.junit.platform.engine.support.descriptor.ClassSource",
70+
"org.junit.platform.engine.support.descriptor.MethodSource",
71+
"org.junit.platform.engine.support.hierarchical.Node$ExecutionMode",
72+
"org.junit.platform.engine.TestDescriptor$Type",
73+
"org.junit.platform.engine.UniqueId",
74+
"org.junit.platform.engine.UniqueId$Segment",
75+
"org.junit.platform.launcher.core.DefaultLauncher",
76+
"org.junit.platform.launcher.core.DefaultLauncherConfig",
77+
"org.junit.platform.launcher.core.EngineExecutionOrchestrator",
78+
"org.junit.platform.launcher.core.LauncherConfigurationParameters$ParameterProvider$2",
79+
"org.junit.platform.launcher.core.LauncherConfigurationParameters$ParameterProvider$3",
80+
"org.junit.platform.launcher.core.LauncherDiscoveryResult",
81+
"org.junit.platform.launcher.core.LauncherListenerRegistry",
82+
"org.junit.platform.launcher.core.ListenerRegistry",
83+
"org.junit.platform.launcher.core.SessionPerRequestLauncher",
84+
"org.junit.platform.launcher.LauncherSessionListener$1",
85+
"org.junit.platform.launcher.listeners.UniqueIdTrackingListener",
86+
"org.junit.platform.reporting.shadow.org.opentest4j.reporting.events.api.DocumentWriter$1"
87+
);
88+
}
89+
6690
try {
6791
/* Verify if the core JUnit Platform test class is available on the classpath */
6892
Class.forName("org.junit.platform.commons.annotation.Testable");

common/junit-platform-native/src/main/java/org/graalvm/junit/platform/config/vintage/VintageConfigProvider.java

+13
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,19 @@ public void onLoad(NativeImageConfiguration config) {
5858
/* Workaround until we can register serializable classes from a native-image feature */
5959
"org.junit.runner.Result"
6060
);
61+
62+
if (getMajorJDKVersion() >= 21) {
63+
/* new with simulated class initialization */
64+
config.initializeAtBuildTime(
65+
"java.lang.annotation.Annotation",
66+
"org.junit.runners.model.FrameworkMethod",
67+
"org.junit.runners.model.TestClass",
68+
"org.junit.runners.ParentRunner$1",
69+
"org.junit.Test",
70+
"org.junit.vintage.engine.descriptor.VintageEngineDescriptor",
71+
"org.junit.vintage.engine.VintageTestEngine"
72+
);
73+
}
6174
}
6275

6376
@Override

0 commit comments

Comments
 (0)