diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-01-28 11:06:42 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-01-28 11:06:42 +0100 |
commit | 0fc17cde330f76adf4562c401dbac898cea06283 (patch) | |
tree | 58ca91cb49f40a7ed1d71682d929197d54260126 /vespa-osgi-testrunner/src/main/java | |
parent | 7affc0fb85f585d324ea03be0b4f9ae4cbd641aa (diff) |
Track exceptions caused by invalid test bundle in test report
Diffstat (limited to 'vespa-osgi-testrunner/src/main/java')
-rw-r--r-- | vespa-osgi-testrunner/src/main/java/com/yahoo/vespa/testrunner/JunitRunner.java | 30 |
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 |