Skip to content

Commit 58f135c

Browse files
committed
Enable NullAway in junit-platform-suite-engine
1 parent b66b4eb commit 58f135c

File tree

3 files changed

+18
-6
lines changed

3 files changed

+18
-6
lines changed

junit-platform-suite-engine/junit-platform-suite-engine.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
plugins {
22
id("junitbuild.java-library-conventions")
3+
id("junitbuild.java-nullability-conventions")
34
}
45

56
description = "JUnit Platform Suite Engine"
@@ -10,6 +11,7 @@ dependencies {
1011
api(projects.junitPlatformSuiteApi)
1112

1213
compileOnlyApi(libs.apiguardian)
14+
compileOnly(libs.jspecify)
1315

1416
implementation(projects.junitPlatformSuiteCommons)
1517

junit-platform-suite-engine/src/main/java/module-info.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,16 @@
88
* https://www.eclipse.org/legal/epl-v20.html
99
*/
1010

11+
import org.jspecify.annotations.NullMarked;
12+
1113
/**
1214
* Provides a {@link org.junit.platform.engine.TestEngine} for running
1315
* declarative test suites.
1416
*
1517
* @since 1.8
1618
* @provides org.junit.platform.engine.TestEngine
1719
*/
20+
@NullMarked
1821
module org.junit.platform.suite.engine {
1922
requires static org.apiguardian.api;
2023
requires org.junit.platform.suite.api;

junit-platform-suite-engine/src/main/java/org/junit/platform/suite/engine/SuiteTestDescriptor.java

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
package org.junit.platform.suite.engine;
1212

13+
import static java.util.Objects.requireNonNull;
1314
import static java.util.function.Predicate.isEqual;
1415
import static java.util.stream.Collectors.joining;
1516
import static org.junit.platform.commons.support.AnnotationSupport.findAnnotation;
@@ -21,6 +22,7 @@
2122
import java.util.function.BiFunction;
2223
import java.util.function.Predicate;
2324

25+
import org.jspecify.annotations.Nullable;
2426
import org.junit.platform.commons.JUnitException;
2527
import org.junit.platform.commons.support.ReflectionSupport;
2628
import org.junit.platform.commons.util.Preconditions;
@@ -71,7 +73,10 @@ final class SuiteTestDescriptor extends AbstractTestDescriptor {
7173
private final Class<?> suiteClass;
7274
private final LifecycleMethods lifecycleMethods;
7375

76+
@Nullable
7477
private LauncherDiscoveryResult launcherDiscoveryResult;
78+
79+
@Nullable
7580
private SuiteLauncher launcher;
7681

7782
SuiteTestDescriptor(UniqueId id, Class<?> suiteClass, ConfigurationParameters configurationParameters,
@@ -174,6 +179,7 @@ private void executeBeforeSuiteMethods(ThrowableCollector throwableCollector) {
174179
}
175180
}
176181

182+
@Nullable
177183
private TestExecutionSummary executeTests(EngineExecutionListener parentEngineExecutionListener,
178184
NamespacedHierarchicalStore<Namespace> requestLevelStore, ThrowableCollector throwableCollector) {
179185
if (throwableCollector.isNotEmpty()) {
@@ -183,9 +189,9 @@ private TestExecutionSummary executeTests(EngineExecutionListener parentEngineEx
183189
// #2838: The discovery result from a suite may have been filtered by
184190
// post discovery filters from the launcher. The discovery result should
185191
// be pruned accordingly.
186-
LauncherDiscoveryResult discoveryResult = this.launcherDiscoveryResult.withRetainedEngines(
192+
LauncherDiscoveryResult discoveryResult = requireNonNull(this.launcherDiscoveryResult).withRetainedEngines(
187193
getChildren()::contains);
188-
return launcher.execute(discoveryResult, parentEngineExecutionListener, requestLevelStore);
194+
return requireNonNull(launcher).execute(discoveryResult, parentEngineExecutionListener, requestLevelStore);
189195
}
190196

191197
private void executeAfterSuiteMethods(ThrowableCollector throwableCollector) {
@@ -194,12 +200,13 @@ private void executeAfterSuiteMethods(ThrowableCollector throwableCollector) {
194200
}
195201
}
196202

197-
private TestExecutionResult computeTestExecutionResult(TestExecutionSummary summary,
203+
private TestExecutionResult computeTestExecutionResult(@Nullable TestExecutionSummary summary,
198204
ThrowableCollector throwableCollector) {
199-
if (throwableCollector.isNotEmpty()) {
200-
return TestExecutionResult.failed(throwableCollector.getThrowable());
205+
var throwable = throwableCollector.getThrowable();
206+
if (throwable != null) {
207+
return TestExecutionResult.failed(throwable);
201208
}
202-
if (failIfNoTests && summary.getTestsFoundCount() == 0) {
209+
if (failIfNoTests && requireNonNull(summary).getTestsFoundCount() == 0) {
203210
return TestExecutionResult.failed(new NoTestsDiscoveredException(suiteClass));
204211
}
205212
return TestExecutionResult.successful();

0 commit comments

Comments
 (0)