aboutsummaryrefslogtreecommitdiffstats
path: root/vespa-osgi-testrunner
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2021-01-28 11:06:42 +0100
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2021-01-28 11:06:42 +0100
commit0fc17cde330f76adf4562c401dbac898cea06283 (patch)
tree58ca91cb49f40a7ed1d71682d929197d54260126 /vespa-osgi-testrunner
parent7affc0fb85f585d324ea03be0b4f9ae4cbd641aa (diff)
Track exceptions caused by invalid test bundle in test report
Diffstat (limited to 'vespa-osgi-testrunner')
-rw-r--r--vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/JunitRunner.java30
1 files changed, 20 insertions, 10 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 70737859342..fc4b3e74b29 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
@@ -90,19 +90,29 @@ public class JunitRunner extends AbstractComponent implements TestRunner {
if (execution != null && !execution.isDone()) {
throw new IllegalStateException("Test execution already in progress");
}
- testRuntimeProvider.initialize(testConfig);
- Optional<Bundle> testBundle = findTestBundle();
- if (testBundle.isEmpty()) {
- throw new RuntimeException("No test bundle available");
- }
+ try {
+ testRuntimeProvider.initialize(testConfig);
+ Optional<Bundle> testBundle = findTestBundle();
+ if (testBundle.isEmpty()) {
+ throw new RuntimeException("No test bundle available");
+ }
- Optional<TestDescriptor> testDescriptor = loadTestDescriptor(testBundle.get());
- if (testDescriptor.isEmpty()) {
- throw new RuntimeException("Could not find test descriptor");
+ Optional<TestDescriptor> testDescriptor = loadTestDescriptor(testBundle.get());
+ if (testDescriptor.isEmpty()) {
+ throw new RuntimeException("Could not find test descriptor");
+ }
+ execution = CompletableFuture.supplyAsync(() -> launchJunit(loadClasses(testBundle.get(), testDescriptor.get(), category)));
+ } catch (Exception e) {
+ execution = createReportWithFailedInitialization(e);
}
- List<Class<?>> testClasses = loadClasses(testBundle.get(), testDescriptor.get(), category);
+ }
- execution = CompletableFuture.supplyAsync(() -> launchJunit(testClasses));
+ private static Future<TestReport> createReportWithFailedInitialization(Exception exception) {
+ TestReport.Failure failure = new TestReport.Failure("init", exception);
+ return CompletableFuture.completedFuture(
+ new TestReport.Builder()
+ .withFailures(List.of(failure))
+ .build());
}
@Override