diff options
Diffstat (limited to 'vespa-osgi-testrunner')
-rw-r--r-- | vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/JunitRunner.java | 42 |
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 |