Skip to content

Commit b098379

Browse files
authored
Merge branch 'main' into dependabot/gradle/com.adarshr.test-logger-2.1.1
2 parents 3ee6a10 + 18ad951 commit b098379

File tree

5 files changed

+70
-10
lines changed

5 files changed

+70
-10
lines changed

src/main/java/co/helmethair/scalatest/reporter/JUnitReporter.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.junit.platform.engine.TestDescriptor;
88
import org.junit.platform.engine.TestExecutionResult;
99
import org.scalatest.Reporter;
10+
import org.scalatest.Suite;
1011
import org.scalatest.events.*;
1112

1213
import java.util.Collections;
@@ -50,8 +51,16 @@ public void apply(Event event) {
5051
descriptor,
5152
TestExecutionResult.failed(cause));
5253
} else if (event instanceof RunAborted) {
53-
junitListener.executionFinished(rootTestDescriptor,
54-
TestExecutionResult.aborted(getOrElse(((RunAborted) event).throwable(), null)));
54+
RunAborted e = (RunAborted) event;
55+
Throwable ex = getOrElse(e.throwable(), null);
56+
TestDescriptor testDescriptor = rootTestDescriptor;
57+
Object payload = e.payload().getOrElse(null);
58+
if (payload != null && payload instanceof Suite) {
59+
Suite s = (Suite) payload;
60+
testDescriptor = getOrCreateDescriptor(s.suiteId(), s.suiteName(), null);
61+
}
62+
junitListener.executionFinished(testDescriptor,
63+
TestExecutionResult.failed(ex)); // tests reported as "aborted" does not fail the build
5564
} else if (event instanceof SuiteStarting) {
5665
SuiteStarting e = (SuiteStarting) event;
5766
junitListener.executionStarted(

src/main/java/co/helmethair/scalatest/runtime/Executor.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@
99
import org.junit.platform.engine.TestDescriptor;
1010
import org.junit.platform.engine.TestExecutionResult;
1111
import org.scalatest.*;
12-
import org.scalatest.events.*;
13-
import org.scalatest.exceptions.TestCanceledException;
12+
import org.scalatest.events.Event;
13+
import org.scalatest.events.Ordinal;
14+
import org.scalatest.events.RunAborted$;
15+
import org.scalatest.events.SuiteAborted$;
1416
import org.scalatest.exceptions.TestFailedException;
15-
import org.scalatest.tools.SuiteResult$;
1617
import scala.Option;
1718
import scala.util.control.NonFatal$;
1819

@@ -126,10 +127,10 @@ private void runScalatests(ScalatestSuiteDescriptor containingSuite, List<Scalat
126127
status.waitUntilCompleted();
127128
} catch (Throwable e) {
128129
if (e instanceof InstantiationException || e instanceof IllegalAccessException) {
129-
reporter.apply( suiteAborted(args.tracker().nextOrdinal(), e, Resources.cannotInstantiateSuite(e.getMessage()), scalasuite));
130-
} else if (e instanceof TestFailedException ) {
131-
reporter.apply( suiteAborted(args.tracker().nextOrdinal(),
132-
getOrElse(((TestFailedException) e).cause(),e), Resources.bigProblems(e), scalasuite));
130+
reporter.apply(suiteAborted(args.tracker().nextOrdinal(), e, Resources.cannotInstantiateSuite(e.getMessage()), scalasuite));
131+
} else if (e instanceof TestFailedException) {
132+
reporter.apply(suiteAborted(args.tracker().nextOrdinal(),
133+
getOrElse(((TestFailedException) e).cause(), e), Resources.bigProblems(e), scalasuite));
133134
} else if (e instanceof NoClassDefFoundError) {
134135
reporter.apply(runAborted(args.tracker().nextOrdinal(), e, Resources.cannotLoadClass(e.getMessage()), scalasuite));
135136
} else {
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package co.helmethair.scalatest;
2+
3+
import co.helmethair.scalatest.helper.TestEngineExecutionListener;
4+
import co.helmethair.scalatest.helper.TestHelpers;
5+
import org.junit.jupiter.api.Test;
6+
import org.junit.platform.engine.EngineDiscoveryRequest;
7+
import org.junit.platform.engine.ExecutionRequest;
8+
import org.junit.platform.engine.TestDescriptor;
9+
import org.junit.platform.engine.TestExecutionResult;
10+
11+
import static org.mockito.Mockito.spy;
12+
13+
public class ClassRunningErrorTest implements TestHelpers {
14+
@Test
15+
void failedToInitializeClass() {
16+
EngineDiscoveryRequest discoveryRequest = createClassDiscoveryRequest("tests.NoClassDefFoundErrorTest");
17+
TestDescriptor discoveredTests = engine.discover(discoveryRequest, engineId);
18+
TestEngineExecutionListener listener = spy(new TestEngineExecutionListener());
19+
ExecutionRequest executionRequest = new ExecutionRequest(discoveredTests, listener, null);
20+
21+
engine.execute(executionRequest);
22+
23+
String testId = "[engine:scalatest]/[suite:tests.NoClassDefFoundErrorTest]";
24+
25+
verifyTestStartReported(testId, listener);
26+
verifyTestStatusReported(testId, listener, TestExecutionResult.Status.FAILED);
27+
}
28+
}

src/test/java/co/helmethair/scalatest/helper/TestHelpers.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,11 +143,19 @@ default void verifyTestFailReported(String testIdsuffix, TestEngineExecutionList
143143
}
144144

145145
default void verifyTestFailReportedWith(String testIdsuffix, TestEngineExecutionListener listener, Class<? extends Throwable> cause) {
146+
verifyTestStatusReportedWith(testIdsuffix, listener, cause, TestExecutionResult.Status.FAILED);
147+
}
148+
149+
default void verifyTestStatusReported(String testIdsuffix, TestEngineExecutionListener listener, TestExecutionResult.Status status) {
150+
verifyTestStatusReportedWith(testIdsuffix, listener, null, status);
151+
}
152+
153+
default void verifyTestStatusReportedWith(String testIdsuffix, TestEngineExecutionListener listener, Class<? extends Throwable> cause, TestExecutionResult.Status status) {
146154
verify(listener, atLeastOnce()).executionFinished(
147155
argThat(a -> a.getUniqueId().toString().endsWith(testIdsuffix)),
148156
argThat(a -> a.getThrowable().isPresent()
149157
&& (cause == null || cause.isInstance(a.getThrowable().get()))
150-
&& a.getStatus() == TestExecutionResult.Status.FAILED
158+
&& a.getStatus() == status
151159
)
152160
);
153161
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package tests
2+
3+
import co.helmethair.scalatest.helper.RegisterCall
4+
import org.scalatest.funspec.AnyFunSpec
5+
6+
class NoClassDefFoundErrorTest extends AnyFunSpec with RegisterCall {
7+
describe("InitErrorTest") {
8+
it("never runs") {
9+
//throw an error what Scalatest handles as an abort instead failure
10+
throw new NoClassDefFoundError("ThisFails")
11+
register()
12+
}
13+
}
14+
}

0 commit comments

Comments
 (0)