Skip to content

Commit c723c48

Browse files
committed
Limited toolchain tests to one
1 parent 4fb64b3 commit c723c48

File tree

3 files changed

+74
-30
lines changed

3 files changed

+74
-30
lines changed

integrationTests/buildSrc/gretty-integrationTest/src/main/groovy/org/akhikhl/gretty/internal/integrationTests/IntegrationTestPlugin.groovy

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ class IntegrationTestPlugin extends BasePlugin {
1818
protected void applyPlugins(Project project) {
1919
super.applyPlugins(project)
2020
project.apply plugin: 'groovy' // this is needed for spock
21-
project.apply plugin: JavaToolchainIntegrationTestPlugin
2221
}
2322

2423
@Override
@@ -51,6 +50,13 @@ class IntegrationTestPlugin extends BasePlugin {
5150

5251
project.extensions.add(JavaVersion, 'javaVersion', JavaToolchainIntegrationTestPlugin.getToolchainJavaVersion(project))
5352

53+
/**
54+
* The caller project integration test would react on -PtoolchainJavaVersion=17 parameter and define appropriate toolchain DSL
55+
**/
56+
project.ext.defineAsJavaToolchainAwareIntegrationTest = {
57+
JavaToolchainIntegrationTestPlugin.applyPluginConditionally(project)
58+
}
59+
5460
project.ext.defineIntegrationTest = {
5561

5662
def integrationTestTask_ = project.tasks.findByName('integrationTest')
@@ -66,7 +72,10 @@ class IntegrationTestPlugin extends BasePlugin {
6672
testClassesDirs = project.sourceSets.integrationTest.output.classesDirs
6773
classpath = project.sourceSets.integrationTest.runtimeClasspath
6874

69-
JavaToolchainIntegrationTestPlugin.forceTaskToUseGradleJvm(it)
75+
JavaToolchainIntegrationTestPlugin.skipIrrelevantTasks(it)
76+
JavaToolchainIntegrationTestPlugin.whenApplied(project) { plugin ->
77+
plugin.forceTaskToUseGradleJvm(it)
78+
}
7079
}
7180

7281
integrationTestTask_
@@ -81,6 +90,11 @@ class IntegrationTestPlugin extends BasePlugin {
8190

8291
integrationTestAllContainersTask = project.task('integrationTestAllContainers')
8392

93+
JavaToolchainIntegrationTestPlugin.skipIrrelevantTasks(integrationTestAllContainersTask)
94+
JavaToolchainIntegrationTestPlugin.whenApplied(project) { plugin ->
95+
plugin.forceTaskToUseGradleJvm(integrationTestAllContainersTask)
96+
}
97+
8498
if (!integrationTestContainers)
8599
integrationTestContainers = ServletContainerConfig.getConfigNames().collect() // returns immutable and we want to filter later
86100

@@ -116,18 +130,24 @@ class IntegrationTestPlugin extends BasePlugin {
116130
testClassesDirs = project.sourceSets.integrationTest.output.classesDirs
117131
classpath = project.sourceSets.integrationTest.runtimeClasspath
118132

119-
JavaToolchainIntegrationTestPlugin.forceTaskToUseGradleJvm(thisTask)
133+
JavaToolchainIntegrationTestPlugin.skipIrrelevantTasks(thisTask)
134+
JavaToolchainIntegrationTestPlugin.whenApplied(project) { plugin ->
135+
plugin.forceTaskToUseGradleJvm(thisTask)
136+
}
120137
}
121138

122139
integrationTestAllContainersTask.dependsOn project.tasks['integrationTest_' + container]
123140

124141
project.task('beforeIntegrationTest_' + container, type: AppBeforeIntegrationTestTask) {
125142
servletContainer = container
126143
integrationTestTask 'integrationTest_' + container
144+
145+
JavaToolchainIntegrationTestPlugin.skipIrrelevantTasks(it)
127146
}
128147

129148
project.task('afterIntegrationTest_' + container, type: AppAfterIntegrationTestTask) {
130149
integrationTestTask 'integrationTest_' + container
150+
JavaToolchainIntegrationTestPlugin.skipIrrelevantTasks(it)
131151
}
132152
}
133153

@@ -194,8 +214,10 @@ class IntegrationTestPlugin extends BasePlugin {
194214
srcDir 'src/integrationTest/resources'
195215
}
196216
runtimeClasspath += project.rootProject.files('config/gebConfig')
197-
198-
JavaToolchainIntegrationTestPlugin.forceSourceSetToUseGradleJvm(project, it)
217+
218+
JavaToolchainIntegrationTestPlugin.whenApplied(project) { plugin ->
219+
plugin.forceSourceSetToUseGradleJvm(project, it)
220+
}
199221
}
200222
}
201223
}
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package org.akhikhl.gretty.internal.integrationTests
22

3+
import org.gradle.api.Action
34
import org.gradle.api.JavaVersion
5+
import org.gradle.api.Plugin
46
import org.gradle.api.Project
57
import org.gradle.api.Task
68
import org.gradle.api.tasks.SourceSet
@@ -11,14 +13,31 @@ import org.gradle.jvm.toolchain.JavaLanguageVersion
1113
import org.slf4j.Logger
1214
import org.slf4j.LoggerFactory
1315

14-
class JavaToolchainIntegrationTestPlugin extends BasePlugin {
16+
import java.util.function.Consumer
17+
18+
class JavaToolchainIntegrationTestPlugin implements Plugin<Project> {
19+
public static final String PLUGIN_ID = "org.gretty.internal.integrationTests.JavaToolchainIntegrationTestPlugin"
1520
private static final Logger log = LoggerFactory.getLogger(IntegrationTestPlugin)
1621

17-
protected void configureExtensions(Project project) {
22+
static void applyPluginConditionally(Project project) {
1823
if (project.findProperty('toolchainJavaVersion')) {
19-
defineToolchainDSL(project, Integer.parseInt("${project.toolchainJavaVersion}"))
24+
project.apply plugin: PLUGIN_ID
2025
}
2126
}
27+
28+
static void whenApplied(Project project, Consumer<JavaToolchainIntegrationTestPlugin> config) {
29+
project.plugins.withId(PLUGIN_ID, new Action<Plugin>() {
30+
@Override
31+
void execute(Plugin plugin) {
32+
config.accept((JavaToolchainIntegrationTestPlugin) plugin)
33+
}
34+
})
35+
}
36+
37+
@Override
38+
void apply(Project project) {
39+
defineToolchainDSL(project, Integer.parseInt("${project.toolchainJavaVersion}"))
40+
}
2241

2342
private void defineToolchainDSL(Project project, int javaVersion) {
2443
project.java {
@@ -28,27 +47,23 @@ class JavaToolchainIntegrationTestPlugin extends BasePlugin {
2847
}
2948
}
3049

31-
public static void forceSourceSetToUseGradleJvm(Project project, SourceSet sourceSet) {
32-
if (isPluginApplied(project)) {
33-
project.tasks.named(sourceSet.getCompileTaskName('java')).configure({ forceTaskToUseGradleJvm(it) })
34-
project.tasks.named(sourceSet.getCompileTaskName('groovy')).configure({ forceTaskToUseGradleJvm(it) })
35-
}
50+
public void forceSourceSetToUseGradleJvm(Project project, SourceSet sourceSet) {
51+
project.tasks.named(sourceSet.getCompileTaskName('java')).configure({ forceTaskToUseGradleJvm(it) })
52+
project.tasks.named(sourceSet.getCompileTaskName('groovy')).configure({ forceTaskToUseGradleJvm(it) })
3653
}
3754

38-
public static void forceTaskToUseGradleJvm(Task task) {
55+
public void forceTaskToUseGradleJvm(Task task) {
3956
task.project.with { proj ->
40-
if (isPluginApplied(proj)) {
41-
if (task instanceof JavaCompile) {
42-
task.javaCompiler.value(proj.javaToolchains.compilerFor(gradleJvmSpec))
43-
}
57+
if (task instanceof JavaCompile) {
58+
task.javaCompiler.value(proj.javaToolchains.compilerFor(gradleJvmSpec))
59+
}
4460

45-
if (task instanceof GroovyCompile) {
46-
task.javaLauncher.value(proj.javaToolchains.launcherFor(gradleJvmSpec))
47-
}
61+
if (task instanceof GroovyCompile) {
62+
task.javaLauncher.value(proj.javaToolchains.launcherFor(gradleJvmSpec))
63+
}
4864

49-
if (task instanceof Test) {
50-
task.javaLauncher.value(proj.javaToolchains.launcherFor(gradleJvmSpec))
51-
}
65+
if (task instanceof Test) {
66+
task.javaLauncher.value(proj.javaToolchains.launcherFor(gradleJvmSpec))
5267
}
5368
}
5469
}
@@ -64,13 +79,20 @@ class JavaToolchainIntegrationTestPlugin extends BasePlugin {
6479
return JavaVersion.current()
6580
}
6681

82+
public static void skipIrrelevantTasks(Task task) {
83+
task.project.with {
84+
if (task.project.findProperty('toolchainJavaVersion')) {
85+
task.enabled = false
86+
}
87+
88+
whenApplied(task.project) {
89+
task.enabled = true
90+
}
91+
}
92+
}
93+
6794
private static def getGradleJvmSpec() {
6895
def gradleJvmVerson = Integer.valueOf(getGradleJavaVersion().getMajorVersion())
6996
return { languageVersion = JavaLanguageVersion.of(gradleJvmVerson) }
7097
}
71-
72-
private static boolean isPluginApplied(Project project) {
73-
return project.plugins.hasPlugin(JavaToolchainIntegrationTestPlugin.class) ||
74-
project.plugins.hasPlugin(JavaToolchainIntegrationTestPlugin.class.name)
75-
}
7698
}

integrationTests/gradle-java-toolchain/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ gretty {
1414
if (project.javaVersion.isJava9Compatible()) jvmArgs "--add-opens", "java.base/java.lang=ALL-UNNAMED"
1515
}
1616

17+
defineAsJavaToolchainAwareIntegrationTest()
1718
defineIntegrationTest()
1819
testAll.dependsOn defineIntegrationTestAllContainers(['jetty8', 'jetty9', 'jetty10', 'tomcat85', 'tomcat9'])
1920

2021
tasks.withType(Test).configureEach {
21-
// enabled = project.findProperty('toolchainJavaVersion') as boolean
2222
if(project.findProperty('toolchainJavaVersion')) {
2323
systemProperty 'toolchainJavaVersion', project.findProperty('toolchainJavaVersion')
2424
}

0 commit comments

Comments
 (0)