summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/JunitRunner.java42
1 files changed, 26 insertions, 16 deletions
diff --git a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/JunitRunner.java b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/JunitRunner.java
index 54f0941208d..8575d22c384 100644
--- a/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/JunitRunner.java
+++ b/vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/JunitRunner.java
@@ -104,22 +104,32 @@ public class JunitRunner extends AbstractComponent implements TestRunner {
private TestReport launchJunit(Suite suite, byte[] testConfig) {
List<Class<?>> testClasses = classLoader.apply(suite);
if (testClasses == null)
- return null;
-
- testRuntimeProvider.initialize(testConfig);
- TestReportGeneratingListener testReportListener = new TestReportGeneratingListener(suite,
- record -> logRecords.put(record.getSequenceNumber(), record),
- stdoutTee,
- stderrTee,
- clock);
- LauncherDiscoveryRequest discoveryRequest = LauncherDiscoveryRequestBuilder.request()
- .selectors(testClasses.stream()
- .map(DiscoverySelectors::selectClass)
- .collect(toList()))
- .build();
- testExecutor.accept(discoveryRequest, new TestExecutionListener[] { testReportListener });
-
- return testReportListener.report();
+ return null;
+
+ ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+ try {
+ testRuntimeProvider.initialize(testConfig);
+ TestReportGeneratingListener testReportListener = new TestReportGeneratingListener(suite,
+ record -> logRecords.put(record.getSequenceNumber(), record),
+ stdoutTee,
+ stderrTee,
+ clock);
+
+ if ( ! testClasses.isEmpty())
+ Thread.currentThread().setContextClassLoader(testClasses.get(0).getClassLoader());
+
+ LauncherDiscoveryRequest discoveryRequest = LauncherDiscoveryRequestBuilder.request()
+ .selectors(testClasses.stream()
+ .map(DiscoverySelectors::selectClass)
+ .collect(toList()))
+ .build();
+ testExecutor.accept(discoveryRequest, new TestExecutionListener[] { testReportListener });
+
+ return testReportListener.report();
+ }
+ finally {
+ Thread.currentThread().setContextClassLoader(contextClassLoader);
+ }
}
@Override