Skip to content

Commit 71fdde8

Browse files
committed
Fix: sourcesUnderTest can be reconfigured
1 parent 9c1d44b commit 71fdde8

File tree

8 files changed

+46
-16
lines changed

8 files changed

+46
-16
lines changed

src/main/java/org/gradlex/javamodule/testing/JavaModuleTestingExtension.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,10 @@
3030
import org.gradlex.javamodule.testing.internal.bridges.JavaModuleDependenciesBridge;
3131
import org.gradlex.javamodule.testing.internal.provider.WhiteboxTestCompileArgumentProvider;
3232
import org.gradlex.javamodule.testing.internal.provider.WhiteboxTestRuntimeArgumentProvider;
33+
import org.jspecify.annotations.NullMarked;
3334

3435
@SuppressWarnings("UnstableApiUsage")
36+
@NullMarked
3537
public abstract class JavaModuleTestingExtension {
3638
private static final Action<WhiteboxJvmTestSuite> NO_OP_ACTION = c -> {};
3739

@@ -251,7 +253,6 @@ private void configureJvmTestSuiteForWhitebox(
251253
.orElseGet(() -> {
252254
WhiteboxTestCompileArgumentProvider newProvider =
253255
new WhiteboxTestCompileArgumentProvider(
254-
sourcesUnderTest.getJava().getSrcDirs(),
255256
testSources.getJava().getSrcDirs(),
256257
moduleInfoParser,
257258
project.getObjects());
@@ -263,6 +264,7 @@ private void configureJvmTestSuiteForWhitebox(
263264
project.getObjects().newInstance(JavaCompileSetModulePathAction.class));
264265
return newProvider;
265266
});
267+
argumentProvider.setMainSourceFolders(sourcesUnderTest.getJava().getSrcDirs());
266268
argumentProvider.testRequires(
267269
JavaModuleDependenciesBridge.getCompileClasspathModules(project, testSources));
268270
argumentProvider.testRequires(whiteboxJvmTestSuite.getRequires());
@@ -289,15 +291,15 @@ private void configureJvmTestSuiteForWhitebox(
289291
.orElseGet(() -> {
290292
WhiteboxTestRuntimeArgumentProvider newProvider =
291293
new WhiteboxTestRuntimeArgumentProvider(
292-
sourcesUnderTest.getJava().getSrcDirs(),
293294
testSources.getJava().getClassesDirectory(),
294-
sourcesUnderTest.getOutput().getResourcesDir(),
295295
testSources.getOutput().getResourcesDir(),
296296
moduleInfoParser,
297297
project.getObjects());
298298
test.getJvmArgumentProviders().add(newProvider);
299299
return newProvider;
300300
});
301+
argumentProvider.setMainSourceFolders(sourcesUnderTest.getJava().getSrcDirs());
302+
argumentProvider.setResourcesUnderTest(sourcesUnderTest.getOutput().getResourcesDir());
301303
argumentProvider.testRequires(
302304
JavaModuleDependenciesBridge.getRuntimeClasspathModules(project, testSources));
303305
argumentProvider.testRequires(whiteboxJvmTestSuite.getRequires());

src/main/java/org/gradlex/javamodule/testing/TaskLockService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33

44
import org.gradle.api.services.BuildService;
55
import org.gradle.api.services.BuildServiceParameters;
6+
import org.jspecify.annotations.NullMarked;
67

78
/**
89
* No-op service that can serve as 'lock' to prevent multiple test tasks from running in parallel:
910
* usesService(gradle.sharedServices.registerIfAbsent(TaskLockService.NAME, TaskLockService::class) { maxParallelUsages = 1 })
1011
*/
12+
@NullMarked
1113
public abstract class TaskLockService implements BuildService<BuildServiceParameters.None> {
1214
public static String NAME = "taskLock";
1315
}

src/main/java/org/gradlex/javamodule/testing/WhiteboxJvmTestSuite.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
import org.gradle.api.provider.ListProperty;
55
import org.gradle.api.provider.Property;
66
import org.gradle.api.tasks.SourceSet;
7+
import org.jspecify.annotations.NullMarked;
78

9+
@NullMarked
810
public interface WhiteboxJvmTestSuite {
911

1012
/**

src/main/java/org/gradlex/javamodule/testing/internal/ModuleInfoParser.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@
99
import org.gradle.api.file.RegularFile;
1010
import org.gradle.api.provider.Provider;
1111
import org.gradle.api.provider.ProviderFactory;
12+
import org.jspecify.annotations.NullMarked;
13+
import org.jspecify.annotations.Nullable;
1214

15+
@NullMarked
1316
public class ModuleInfoParser {
1417

1518
private final ProjectLayout layout;
@@ -20,6 +23,7 @@ public ModuleInfoParser(ProjectLayout layout, ProviderFactory providers) {
2023
this.providers = providers;
2124
}
2225

26+
@Nullable
2327
public String moduleName(Set<File> sourceFolders) {
2428
for (File folder : sourceFolders) {
2529
Provider<RegularFile> moduleInfoFile =
@@ -33,6 +37,7 @@ public String moduleName(Set<File> sourceFolders) {
3337
return null;
3438
}
3539

40+
@Nullable
3641
static String moduleName(String moduleInfoFileContent) {
3742
boolean inComment = false;
3843
boolean moduleKeywordFound = false;

src/main/java/org/gradlex/javamodule/testing/internal/ModuleInfoRequiresParser.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
import java.util.ArrayList;
55
import java.util.Arrays;
66
import java.util.List;
7+
import org.jspecify.annotations.NullMarked;
78

9+
@NullMarked
810
public class ModuleInfoRequiresParser {
911
private static final String RUNTIME_KEYWORD = "/*runtime*/";
1012

src/main/java/org/gradlex/javamodule/testing/internal/bridges/JavaModuleDependenciesBridge.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,13 @@
77
import org.gradle.api.Project;
88
import org.gradle.api.provider.Provider;
99
import org.gradle.api.tasks.SourceSet;
10+
import org.jspecify.annotations.NullMarked;
11+
import org.jspecify.annotations.Nullable;
1012

13+
@NullMarked
1114
public class JavaModuleDependenciesBridge {
1215

16+
@Nullable
1317
public static Provider<?> create(Project project, String moduleName, SourceSet sourceSetWithModuleInfo) {
1418
Object javaModuleDependencies = project.getExtensions().findByName("javaModuleDependencies");
1519
if (javaModuleDependencies == null) {

src/main/java/org/gradlex/javamodule/testing/internal/provider/WhiteboxTestCompileArgumentProvider.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,29 @@
1111
import org.gradle.api.provider.Provider;
1212
import org.gradle.process.CommandLineArgumentProvider;
1313
import org.gradlex.javamodule.testing.internal.ModuleInfoParser;
14+
import org.jspecify.annotations.NullMarked;
1415

16+
@NullMarked
1517
public class WhiteboxTestCompileArgumentProvider implements CommandLineArgumentProvider {
16-
private final Set<File> mainSourceFolders;
1718
private final Set<File> testSourceFolders;
1819
private final ModuleInfoParser moduleInfoParser;
1920

21+
@SuppressWarnings("NotNullFieldNotInitialized")
22+
private Set<File> mainSourceFolders;
23+
2024
private final ListProperty<String> allTestRequires;
2125

2226
public WhiteboxTestCompileArgumentProvider(
23-
Set<File> mainSourceFolders,
24-
Set<File> testSourceFolders,
25-
ModuleInfoParser moduleInfoParser,
26-
ObjectFactory objects) {
27-
this.mainSourceFolders = mainSourceFolders;
27+
Set<File> testSourceFolders, ModuleInfoParser moduleInfoParser, ObjectFactory objects) {
2828
this.testSourceFolders = testSourceFolders;
2929
this.moduleInfoParser = moduleInfoParser;
3030
this.allTestRequires = objects.listProperty(String.class);
3131
}
3232

33+
public void setMainSourceFolders(Set<File> mainSourceFolders) {
34+
this.mainSourceFolders = mainSourceFolders;
35+
}
36+
3337
public void testRequires(Provider<List<String>> testRequires) {
3438
allTestRequires.addAll(testRequires);
3539
}

src/main/java/org/gradlex/javamodule/testing/internal/provider/WhiteboxTestRuntimeArgumentProvider.java

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,36 +12,45 @@
1212
import org.gradle.api.provider.Provider;
1313
import org.gradle.process.CommandLineArgumentProvider;
1414
import org.gradlex.javamodule.testing.internal.ModuleInfoParser;
15+
import org.jspecify.annotations.NullMarked;
1516

17+
@NullMarked
1618
public class WhiteboxTestRuntimeArgumentProvider implements CommandLineArgumentProvider {
17-
private final Set<File> mainSourceFolders;
1819
private final Provider<Directory> testClassesFolders;
19-
private final File resourcesUnderTest;
2020
private final File testResources;
2121
private final ModuleInfoParser moduleInfoParser;
2222

23+
@SuppressWarnings("NotNullFieldNotInitialized")
24+
private Set<File> mainSourceFolders;
25+
26+
@SuppressWarnings("NotNullFieldNotInitialized")
27+
private File resourcesUnderTest;
28+
2329
private final ListProperty<String> allTestRequires;
2430
private final ListProperty<String> allTestOpensTo;
2531
private final ListProperty<String> allTestExportsTo;
2632

2733
public WhiteboxTestRuntimeArgumentProvider(
28-
Set<File> mainSourceFolders,
2934
Provider<Directory> testClassesFolders,
30-
File resourcesUnderTest,
3135
File testResources,
3236
ModuleInfoParser moduleInfoParser,
3337
ObjectFactory objects) {
34-
35-
this.mainSourceFolders = mainSourceFolders;
3638
this.testClassesFolders = testClassesFolders;
37-
this.resourcesUnderTest = resourcesUnderTest;
3839
this.testResources = testResources;
3940
this.moduleInfoParser = moduleInfoParser;
4041
this.allTestRequires = objects.listProperty(String.class);
4142
this.allTestOpensTo = objects.listProperty(String.class);
4243
this.allTestExportsTo = objects.listProperty(String.class);
4344
}
4445

46+
public void setMainSourceFolders(Set<File> mainSourceFolders) {
47+
this.mainSourceFolders = mainSourceFolders;
48+
}
49+
50+
public void setResourcesUnderTest(File resourcesUnderTest) {
51+
this.resourcesUnderTest = resourcesUnderTest;
52+
}
53+
4554
public void testRequires(Provider<List<String>> testRequires) {
4655
allTestRequires.addAll(testRequires);
4756
}

0 commit comments

Comments
 (0)