Skip to content

Commit 4a9a7fc

Browse files
authored
Use providers for expensive input calculation in testingconvention task (#84508) (#84560)
1 parent 55e8cef commit 4a9a7fc

File tree

2 files changed

+21
-12
lines changed

2 files changed

+21
-12
lines changed

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsPrecommitPlugin.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import org.gradle.api.tasks.TaskProvider;
1919
import org.gradle.api.tasks.testing.Test;
2020

21+
import java.util.stream.Collectors;
22+
2123
public class TestingConventionsPrecommitPlugin extends PrecommitPlugin implements InternalPlugin {
2224
@Override
2325
public TaskProvider<? extends Task> createTask(Project project) {
@@ -31,8 +33,15 @@ public TaskProvider<? extends Task> createTask(Project project) {
3133
itRule.baseClass("org.elasticsearch.test.rest.ESRestTestCase");
3234

3335
t.setNaming(namings);
34-
t.setTestTasks(project.getTasks().withType(Test.class).matching(test -> test.isEnabled()));
35-
36+
t.setCandidateClassFilesProvider(
37+
project.provider(
38+
() -> project.getTasks()
39+
.withType(Test.class)
40+
.matching(Task::getEnabled)
41+
.stream()
42+
.collect(Collectors.toMap(Task::getPath, task -> task.getCandidateClassFiles().getFiles()))
43+
)
44+
);
3645
SourceSetContainer javaSourceSets = GradleUtils.getJavaSourceSets(project);
3746
t.setSourceSets(javaSourceSets);
3847
// Run only after everything is compiled

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/TestingConventionsTasks.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,16 @@
1111

1212
import org.gradle.api.DefaultTask;
1313
import org.gradle.api.NamedDomainObjectContainer;
14-
import org.gradle.api.Task;
1514
import org.gradle.api.file.FileCollection;
1615
import org.gradle.api.file.FileTree;
1716
import org.gradle.api.file.ProjectLayout;
17+
import org.gradle.api.provider.Provider;
1818
import org.gradle.api.tasks.Classpath;
1919
import org.gradle.api.tasks.Input;
2020
import org.gradle.api.tasks.OutputFile;
2121
import org.gradle.api.tasks.SourceSet;
2222
import org.gradle.api.tasks.SourceSetContainer;
2323
import org.gradle.api.tasks.TaskAction;
24-
import org.gradle.api.tasks.TaskCollection;
25-
import org.gradle.api.tasks.testing.Test;
2624

2725
import java.io.File;
2826
import java.io.IOException;
@@ -59,7 +57,12 @@ public class TestingConventionsTasks extends DefaultTask {
5957
private ProjectLayout projectLayout;
6058

6159
private SourceSetContainer sourceSets;
62-
private TaskCollection<Test> testTasks;
60+
private Provider<Map<String, Set<File>>> candidateClassFilesProvider;
61+
private Map<String, Set<File>> candidateClassFiles;
62+
63+
public void setCandidateClassFilesProvider(Provider<Map<String, Set<File>>> candidateClassFilesProvider) {
64+
this.candidateClassFilesProvider = candidateClassFilesProvider;
65+
}
6366

6467
@Inject
6568
public TestingConventionsTasks(ProjectLayout projectLayout) {
@@ -69,7 +72,8 @@ public TestingConventionsTasks(ProjectLayout projectLayout) {
6972

7073
@Input
7174
public Map<String, Set<File>> getClassFilesPerEnabledTask() {
72-
return testTasks.stream().collect(Collectors.toMap(Task::getPath, task -> task.getCandidateClassFiles().getFiles()));
75+
candidateClassFiles = candidateClassFilesProvider.get();
76+
return candidateClassFiles;
7377
}
7478

7579
@Input
@@ -147,7 +151,7 @@ public void doCheck() throws IOException {
147151
.collect(Collectors.toList())
148152
).getAsFileTree();
149153

150-
final Map<String, Set<File>> classFilesPerTask = getClassFilesPerEnabledTask();
154+
final Map<String, Set<File>> classFilesPerTask = candidateClassFiles;
151155

152156
final Set<File> testSourceSetFiles = sourceSets.getByName(SourceSet.TEST_SOURCE_SET_NAME).getRuntimeClasspath().getFiles();
153157
final Map<String, Set<Class<?>>> testClassesPerTask = classFilesPerTask.entrySet()
@@ -410,10 +414,6 @@ private URL fileToUrl(File file) {
410414
}
411415
}
412416

413-
public void setTestTasks(TaskCollection<Test> testTasks) {
414-
this.testTasks = testTasks;
415-
}
416-
417417
public void setSourceSets(SourceSetContainer sourceSets) {
418418
this.sourceSets = sourceSets;
419419
}

0 commit comments

Comments
 (0)