summaryrefslogtreecommitdiffstats
path: root/vespa-osgi-testrunner
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2022-08-03 12:40:02 +0200
committerjonmv <venstad@gmail.com>2022-08-03 12:40:02 +0200
commitca8fa1ad40cf164c9934492a6438604b371fda6a (patch)
treef15f1141a557b3a85d31b950a8dbdab20053928f /vespa-osgi-testrunner
parenta0d3401bf99415ef9d115e51b988f5f3ade0dd57 (diff)
Set thread context class loader to user bundle, for JUnit
Diffstat (limited to 'vespa-osgi-testrunner')
-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