Skip to content

Commit f7a1267

Browse files
authored
Build: Simplify rest spec hack configuration (#29149)
This commit creates the copyRestSpec task for rest integ tests immediately on creation of the RestIntegTestTask instead of lazily in afterEvaluate. This allows other projects to add additional rest specs to be copied, instead of needing to create another parallel copy task.
1 parent 1eb1d59 commit f7a1267

File tree

2 files changed

+57
-83
lines changed

2 files changed

+57
-83
lines changed

buildSrc/src/main/groovy/org/elasticsearch/gradle/test/RestIntegTestTask.groovy

Lines changed: 57 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,15 @@ package org.elasticsearch.gradle.test
2020

2121
import com.carrotsearch.gradle.junit4.RandomizedTestingTask
2222
import org.elasticsearch.gradle.BuildPlugin
23+
import org.elasticsearch.gradle.VersionProperties
2324
import org.gradle.api.DefaultTask
25+
import org.gradle.api.Project
2426
import org.gradle.api.Task
2527
import org.gradle.api.execution.TaskExecutionAdapter
2628
import org.gradle.api.internal.tasks.options.Option
29+
import org.gradle.api.provider.Property
30+
import org.gradle.api.provider.Provider
31+
import org.gradle.api.tasks.Copy
2732
import org.gradle.api.tasks.Input
2833
import org.gradle.api.tasks.TaskState
2934

@@ -47,7 +52,7 @@ public class RestIntegTestTask extends DefaultTask {
4752

4853
/** Flag indicating whether the rest tests in the rest spec should be run. */
4954
@Input
50-
boolean includePackaged = false
55+
Property<Boolean> includePackaged = project.objects.property(Boolean)
5156

5257
public RestIntegTestTask() {
5358
runner = project.tasks.create("${name}Runner", RandomizedTestingTask.class)
@@ -92,10 +97,9 @@ public class RestIntegTestTask extends DefaultTask {
9297
}
9398

9499
// copy the rest spec/tests into the test resources
95-
RestSpecHack.configureDependencies(project)
96-
project.afterEvaluate {
97-
runner.dependsOn(RestSpecHack.configureTask(project, includePackaged))
98-
}
100+
Task copyRestSpec = createCopyRestSpecTask(project, includePackaged)
101+
runner.dependsOn(copyRestSpec)
102+
99103
// this must run after all projects have been configured, so we know any project
100104
// references can be accessed as a fully configured
101105
project.gradle.projectsEvaluated {
@@ -109,6 +113,11 @@ public class RestIntegTestTask extends DefaultTask {
109113
}
110114
}
111115

116+
/** Sets the includePackaged property */
117+
public void includePackaged(boolean include) {
118+
includePackaged.set(include)
119+
}
120+
112121
@Option(
113122
option = "debug-jvm",
114123
description = "Enable debugging configuration, to allow attaching a debugger to elasticsearch."
@@ -184,4 +193,47 @@ public class RestIntegTestTask extends DefaultTask {
184193
println('=========================================')
185194

186195
}
196+
197+
/**
198+
* Creates a task (if necessary) to copy the rest spec files.
199+
*
200+
* @param project The project to add the copy task to
201+
* @param includePackagedTests true if the packaged tests should be copied, false otherwise
202+
*/
203+
private static Task createCopyRestSpecTask(Project project, Provider<Boolean> includePackagedTests) {
204+
project.configurations {
205+
restSpec
206+
}
207+
project.dependencies {
208+
restSpec "org.elasticsearch:rest-api-spec:${VersionProperties.elasticsearch}"
209+
}
210+
Task copyRestSpec = project.tasks.findByName('copyRestSpec')
211+
if (copyRestSpec != null) {
212+
return copyRestSpec
213+
}
214+
Map copyRestSpecProps = [
215+
name : 'copyRestSpec',
216+
type : Copy,
217+
dependsOn: [project.configurations.restSpec, 'processTestResources']
218+
]
219+
copyRestSpec = project.tasks.create(copyRestSpecProps) {
220+
into project.sourceSets.test.output.resourcesDir
221+
}
222+
project.afterEvaluate {
223+
copyRestSpec.from({ project.zipTree(project.configurations.restSpec.singleFile) }) {
224+
include 'rest-api-spec/api/**'
225+
if (includePackagedTests.get()) {
226+
include 'rest-api-spec/test/**'
227+
}
228+
}
229+
}
230+
project.idea {
231+
module {
232+
if (scopes.TEST != null) {
233+
scopes.TEST.plus.add(project.configurations.restSpec)
234+
}
235+
}
236+
}
237+
return copyRestSpec
238+
}
187239
}

buildSrc/src/main/groovy/org/elasticsearch/gradle/test/RestSpecHack.groovy

Lines changed: 0 additions & 78 deletions
This file was deleted.

0 commit comments

Comments
 (0)