Skip to content

Commit 4c5720e

Browse files
authored
Merge pull request #47190 from holly-cummins/class-mismatch-asyncapi
Use the runtime classloader for test config building
2 parents f6e3239 + 051b455 commit 4c5720e

File tree

2 files changed

+22
-26
lines changed

2 files changed

+22
-26
lines changed

test-framework/junit5/src/main/java/io/quarkus/test/junit/classloading/FacadeClassLoader.java

+7-19
Original file line numberDiff line numberDiff line change
@@ -555,28 +555,16 @@ private StartupAction getOrCreateRuntimeClassLoader(String key, Class<?> require
555555
StartupAction startupAction = appMakerHelper.getStartupAction(requiredTestClass,
556556
curatedApplication, isAuxiliaryApplication, profile);
557557

558-
ClassLoader original = Thread.currentThread()
559-
.getContextClassLoader();
560-
try {
561-
// See comments on AbstractJVMTestExtension#evaluateExecutionCondition for why this is the system classloader
562-
Thread.currentThread()
563-
.setContextClassLoader(ClassLoader.getSystemClassLoader());
564-
565-
QuarkusClassLoader loader = startupAction.getClassLoader();
558+
QuarkusClassLoader loader = startupAction.getClassLoader();
566559

567-
Class<?> configProviderResolverClass = loader.loadClass(ConfigProviderResolver.class.getName());
560+
Class<?> configProviderResolverClass = loader.loadClass(ConfigProviderResolver.class.getName());
568561

569-
Class<?> testConfigProviderResolverClass = loader.loadClass(QuarkusTestConfigProviderResolver.class.getName());
570-
Object testConfigProviderResolver = testConfigProviderResolverClass.getDeclaredConstructor(ClassLoader.class)
571-
.newInstance(loader);
562+
Class<?> testConfigProviderResolverClass = loader.loadClass(QuarkusTestConfigProviderResolver.class.getName());
563+
Object testConfigProviderResolver = testConfigProviderResolverClass.getDeclaredConstructor()
564+
.newInstance();
572565

573-
configProviderResolverClass.getDeclaredMethod("setInstance", configProviderResolverClass)
574-
.invoke(null,
575-
testConfigProviderResolver);
576-
} finally {
577-
Thread.currentThread()
578-
.setContextClassLoader(original);
579-
}
566+
configProviderResolverClass.getDeclaredMethod("setInstance", configProviderResolverClass)
567+
.invoke(null, testConfigProviderResolver);
580568

581569
return startupAction;
582570

test-framework/junit5/src/main/java/io/quarkus/test/junit/classloading/QuarkusTestConfigProviderResolver.java

+15-7
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,23 @@
99
public class QuarkusTestConfigProviderResolver extends SmallRyeConfigProviderResolver {
1010
private final SmallRyeConfigProviderResolver resolver;
1111

12-
public QuarkusTestConfigProviderResolver(final ClassLoader classLoader) {
12+
public QuarkusTestConfigProviderResolver() {
1313
this.resolver = (SmallRyeConfigProviderResolver) SmallRyeConfigProviderResolver.instance();
1414

15-
SmallRyeConfig config = ConfigUtils.configBuilder(false, true, LaunchMode.TEST)
16-
.withProfile(LaunchMode.TEST.getDefaultProfile())
17-
.withMapping(TestConfig.class, "quarkus.test")
18-
.forClassLoader(classLoader)
19-
.build();
15+
ClassLoader classLoader = this.getClass().getClassLoader();
16+
ClassLoader original = Thread.currentThread().getContextClassLoader();
17+
try {
18+
Thread.currentThread().setContextClassLoader(classLoader);
19+
SmallRyeConfig config = ConfigUtils.configBuilder(false, true, LaunchMode.TEST)
20+
.withProfile(LaunchMode.TEST.getDefaultProfile())
21+
.withMapping(TestConfig.class, "quarkus.test")
22+
.forClassLoader(classLoader)
23+
.build();
2024

21-
this.registerConfig(config, Thread.currentThread().getContextClassLoader());
25+
// See comments on AbstractJVMTestExtension#evaluateExecutionCondition for why this is the system classloader
26+
this.registerConfig(config, ClassLoader.getSystemClassLoader());
27+
} finally {
28+
Thread.currentThread().setContextClassLoader(original);
29+
}
2230
}
2331
}

0 commit comments

Comments
 (0)