Skip to content

Commit 9276ebb

Browse files
committed
testCompileOnly extends compileOnly for Whitebox Test Suites
Resolves #51
1 parent 5ada29e commit 9276ebb

File tree

3 files changed

+44
-0
lines changed

3 files changed

+44
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
## Version 1.5
44
* [#47](https://github.com/gradlex-org/java-module-testing/issues/47) Add support for Classpath Test Suites
5+
* [#51](https://github.com/gradlex-org/java-module-testing/issues/51) testCompileOnly extends compileOnly for Whitebox Test Suites
56

67
## Version 1.4
78
* [#2](https://github.com/gradlex-org/java-module-testing/issues/2) New approach to split Module Path and Classpath for whitebox testing

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,9 @@ private void configureJvmTestSuiteForWhitebox(JvmTestSuite jvmTestSuite, Whitebo
208208
tasks.named(testSources.getCompileJavaTaskName(), JavaCompile.class, compileJava -> {
209209
SourceSet sourcesUnderTest = whiteboxJvmTestSuite.getSourcesUnderTest().get();
210210

211+
configurations.getByName(testSources.getCompileOnlyConfigurationName()).extendsFrom(
212+
configurations.getByName(sourcesUnderTest.getCompileOnlyConfigurationName()));
213+
211214
compileJava.setClasspath(sourcesUnderTest.getOutput().plus(configurations.getByName(testSources.getCompileClasspathConfigurationName())));
212215

213216
WhiteboxTestCompileArgumentProvider argumentProvider = (WhiteboxTestCompileArgumentProvider) compileJava.getOptions().getCompilerArgumentProviders().stream()
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package org.gradlex.javamodule.testing.test
2+
3+
import org.gradle.testkit.runner.TaskOutcome
4+
import org.gradlex.javamodule.testing.test.fixture.GradleBuild
5+
import spock.lang.Specification
6+
7+
class CoreFunctionailtyTest extends Specification {
8+
9+
@Delegate
10+
GradleBuild build = new GradleBuild()
11+
12+
def "testCompileOnly extends compileOnly for whitebox test suites"() {
13+
given:
14+
appBuildFile << '''
15+
javaModuleTesting.classpath(testing.suites["test"])
16+
dependencies {
17+
compileOnly("jakarta.servlet:jakarta.servlet-api:6.1.0")
18+
}
19+
'''
20+
file("app/src/main/java/org/example/app/ServletImpl.java") << '''
21+
package org.example.app;
22+
public abstract class ServletImpl implements jakarta.servlet.Servlet { }
23+
'''
24+
file("app/src/test/java/org/example/app/test/ServletMock.java") << '''
25+
package org.example.app.test;
26+
public abstract class ServletMock extends org.example.app.ServletImpl { }
27+
'''
28+
appModuleInfoFile << '''
29+
module org.example.app {
30+
requires static jakarta.servlet;
31+
}
32+
'''
33+
34+
when:
35+
def result = runner('compileTestJava').build()
36+
37+
then:
38+
result.task(':app:compileTestJava').outcome == TaskOutcome.SUCCESS
39+
}
40+
}

0 commit comments

Comments
 (0)