Skip to content

Commit d4e3aaa

Browse files
committed
Plugin bridge: use 'create()' instead of 'gav()'
This updates the bridge to the java-module-dependencies plugin to delegate the complete dependency creation to that plugin. With this, also dependencies to local projects and features are created.
1 parent b1d63c5 commit d4e3aaa

File tree

8 files changed

+44
-16
lines changed

8 files changed

+44
-16
lines changed

samples/use-all-java-module-plugins/build-logic/src/main/kotlin/org.my.gradle.java-module.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ javaModuleTesting.whitebox(
1717

1818
testing.suites.create<JvmTestSuite>("integtest") {
1919
useJUnitJupiter("")
20-
testType.set("blackbox")
2120
dependencies {
2221
implementation(project.dependencies.platform(project(":platform")))
2322
}

samples/use-only-java-module-testing-plugin/build-logic/src/main/kotlin/org.my.gradle.java-module.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ javaModuleTesting.whitebox(
1717

1818
testing.suites.create<JvmTestSuite>("integtest") {
1919
useJUnitJupiter("")
20-
testType.set("blackbox")
2120
dependencies {
2221
implementation(project.dependencies.platform(project(":platform")))
2322
}

samples/use-with-test-fixtures/build-logic/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ plugins {
44

55
dependencies {
66
implementation("org.gradlex:java-module-testing:1.5")
7+
implementation("org.gradlex:java-module-dependencies:1.8")
78
}

samples/use-with-test-fixtures/build-logic/src/main/kotlin/org.my.gradle.java-module.gradle.kts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ plugins {
22
id("java")
33
id("java-test-fixtures")
44
id("org.my.gradle.base")
5+
id("org.gradlex.java-module-dependencies")
56
id("org.gradlex.java-module-testing")
67
}
78

89
javaModuleTesting.whitebox(
910
testing.suites.getByName<JvmTestSuite>("test") {
10-
useJUnitJupiter()
1111
targets.all { testTask { testLogging.showStandardStreams = true } }
1212
}
1313
) {
@@ -16,8 +16,6 @@ javaModuleTesting.whitebox(
1616
}
1717

1818
testing.suites.create<JvmTestSuite>("integtest") {
19-
useJUnitJupiter()
20-
testType.set(TestSuiteType.INTEGRATION_TEST)
2119
targets.all { testTask { testLogging.showStandardStreams = true } }
2220
tasks.check { dependsOn(targets) }
2321
}

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -256,18 +256,18 @@ private void configureJvmTestSuiteForWhitebox(JvmTestSuite jvmTestSuite, Whitebo
256256
Configuration implementation = configurations.getByName(testSources.getImplementationConfigurationName());
257257
implementation.withDependencies(d -> {
258258
for (String requiresModuleName : whiteboxJvmTestSuite.getRequires().get()) {
259-
Provider<?> gav = JavaModuleDependenciesBridge.gav(project, requiresModuleName);
260-
if (gav != null) {
261-
dependencies.addProvider(implementation.getName(), gav);
259+
Provider<?> dependency = JavaModuleDependenciesBridge.create(project, requiresModuleName, whiteboxJvmTestSuite.getSourcesUnderTest().get());
260+
if (dependency != null) {
261+
dependencies.addProvider(implementation.getName(), dependency);
262262
}
263263
}
264264
});
265265
Configuration runtimeOnly = configurations.getByName(testSources.getRuntimeOnlyConfigurationName());
266266
runtimeOnly.withDependencies(d -> {
267267
for (String requiresModuleName : whiteboxJvmTestSuite.getRequiresRuntime().get()) {
268-
Provider<?> gav = JavaModuleDependenciesBridge.gav(project, requiresModuleName);
269-
if (gav != null) {
270-
dependencies.addProvider(runtimeOnly.getName(), gav);
268+
Provider<?> dependency = JavaModuleDependenciesBridge.create(project, requiresModuleName, whiteboxJvmTestSuite.getSourcesUnderTest().get());
269+
if (dependency != null) {
270+
dependencies.addProvider(runtimeOnly.getName(), dependency);
271271
}
272272
}
273273
});

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

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,25 +17,23 @@
1717
package org.gradlex.javamodule.testing.internal.bridges;
1818

1919
import org.gradle.api.Project;
20-
import org.gradle.api.file.FileCollection;
2120
import org.gradle.api.provider.Provider;
2221
import org.gradle.api.tasks.SourceSet;
23-
import org.gradle.api.tasks.compile.JavaCompile;
2422

2523
import java.lang.reflect.Method;
2624
import java.util.Collections;
2725
import java.util.List;
2826

2927
public class JavaModuleDependenciesBridge {
3028

31-
public static Provider<?> gav(Project project, String moduleName) {
29+
public static Provider<?> create(Project project, String moduleName, SourceSet sourceSetWithModuleInfo) {
3230
Object javaModuleDependencies = project.getExtensions().findByName("javaModuleDependencies");
3331
if (javaModuleDependencies == null) {
3432
return null;
3533
}
3634
try {
37-
Method gav = javaModuleDependencies.getClass().getMethod("gav", String.class);
38-
return (Provider<?>) gav.invoke(javaModuleDependencies, moduleName);
35+
Method gav = javaModuleDependencies.getClass().getMethod("create", String.class, SourceSet.class);
36+
return (Provider<?>) gav.invoke(javaModuleDependencies, moduleName, sourceSetWithModuleInfo);
3937
} catch (ReflectiveOperationException e) {
4038
throw new RuntimeException(e);
4139
}

src/test/groovy/org/gradlex/javamodule/testing/test/JavaModuleDependenciesBridgeTest.groovy

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,4 +104,32 @@ class JavaModuleDependenciesBridgeTest extends Specification {
104104
then:
105105
result.task(":app:compileTestJava").outcome == TaskOutcome.SUCCESS
106106
}
107+
108+
def "can be combined with test-fixtures plugins"() {
109+
given:
110+
useTestFixturesPlugin()
111+
appModuleInfoFile << '''
112+
module org.example.app {
113+
}
114+
'''
115+
file("app/src/testFixtures/java/module-info.java") << '''
116+
open module org.example.app.test.fixtures {
117+
requires org.example.app;
118+
}
119+
'''
120+
appBuildFile << '''
121+
javaModuleTesting.whitebox(testing.suites["test"]) {
122+
requires.add("org.junit.jupiter.api")
123+
requires.add("org.example.app.test.fixtures")
124+
}
125+
javaModuleDependencies {
126+
}
127+
'''
128+
129+
when:
130+
def result = runTests()
131+
132+
then:
133+
result.task(":app:test").outcome == TaskOutcome.SUCCESS
134+
}
107135
}

src/test/groovy/org/gradlex/javamodule/testing/test/fixture/GradleBuild.groovy

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,11 @@ class GradleBuild {
100100
libBuildFile.text = libBuildFile.text.replace('plugins {', 'plugins { id("org.gradlex.java-module-dependencies")')
101101
}
102102

103+
def useTestFixturesPlugin() {
104+
appBuildFile.text = appBuildFile.text.replace('plugins {', 'plugins { id("java-test-fixtures");')
105+
libBuildFile.text = libBuildFile.text.replace('plugins {', 'plugins { id("java-test-fixtures");')
106+
}
107+
103108
File file(String path) {
104109
new File(projectDir, path).tap {
105110
it.getParentFile().mkdirs()

0 commit comments

Comments
 (0)