Skip to content

Commit b174af6

Browse files
authored
Apply precommit checks for non productive projects (#85533) (#86027)
Ensure projects with only yaml, java or cluster tests also apply precommit checks. We only apply testingconventions now for projects with existing src test folder as the TestingConventionsTask is incompatible with projects with no test sourceSet. This is a prerequisite to port more projects away from using StandaloneRestTestPlugin and RestTestPlugin in favor of yaml, java or cluster tests with dedicated sourceSets. Also we fix deprecation warnings for forbiddenPattern and filePermissions tasks about implicit non declared dependencies on resources tasks
1 parent a8be2fa commit b174af6

File tree

20 files changed

+161
-128
lines changed

20 files changed

+161
-128
lines changed

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

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
package org.elasticsearch.gradle.internal;
1010

11+
import org.elasticsearch.gradle.internal.precommit.TestingConventionsPrecommitPlugin;
1112
import org.elasticsearch.gradle.internal.precommit.TestingConventionsTasks;
1213
import org.gradle.api.Project;
1314

@@ -17,15 +18,22 @@ public void apply(Project project) {
1718
project.getPluginManager().apply(BuildPlugin.class);
1819
project.getPluginManager().apply(BaseInternalPluginBuildPlugin.class);
1920

20-
project.getTasks().withType(TestingConventionsTasks.class).named("testingConventions").configure(t -> {
21-
t.getNaming().clear();
22-
t.getNaming()
23-
.create("Tests", testingConventionRule -> testingConventionRule.baseClass("org.apache.lucene.tests.util.LuceneTestCase"));
24-
t.getNaming().create("IT", testingConventionRule -> {
25-
testingConventionRule.baseClass("org.elasticsearch.test.ESIntegTestCase");
26-
testingConventionRule.baseClass("org.elasticsearch.test.rest.ESRestTestCase");
27-
testingConventionRule.baseClass("org.elasticsearch.test.ESSingleNodeTestCase");
28-
});
29-
});
21+
project.getPlugins()
22+
.withType(
23+
TestingConventionsPrecommitPlugin.class,
24+
plugin -> project.getTasks().withType(TestingConventionsTasks.class).named("testingConventions").configure(t -> {
25+
t.getNaming().clear();
26+
t.getNaming()
27+
.create(
28+
"Tests",
29+
testingConventionRule -> testingConventionRule.baseClass("org.apache.lucene.tests.util.LuceneTestCase")
30+
);
31+
t.getNaming().create("IT", testingConventionRule -> {
32+
testingConventionRule.baseClass("org.elasticsearch.test.ESIntegTestCase");
33+
testingConventionRule.baseClass("org.elasticsearch.test.rest.ESRestTestCase");
34+
testingConventionRule.baseClass("org.elasticsearch.test.ESSingleNodeTestCase");
35+
});
36+
})
37+
);
3038
}
3139
}

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

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,19 @@ public FilePermissionsPrecommitPlugin(ProviderFactory providerFactory) {
3232

3333
@Override
3434
public TaskProvider<? extends Task> createTask(Project project) {
35-
return project.getTasks()
36-
.register(
37-
FILEPERMISSIONS_TASK_NAME,
38-
FilePermissionsTask.class,
39-
filePermissionsTask -> filePermissionsTask.getSources()
40-
.addAll(
41-
providerFactory.provider(
42-
() -> GradleUtils.getJavaSourceSets(project).stream().map(s -> s.getAllSource()).collect(Collectors.toList())
43-
)
35+
return project.getTasks().register(FILEPERMISSIONS_TASK_NAME, FilePermissionsTask.class, t -> {
36+
t.getSources()
37+
.addAll(
38+
providerFactory.provider(
39+
() -> GradleUtils.getJavaSourceSets(project).stream().map(s -> s.getAllSource()).collect(Collectors.toList())
4440
)
41+
);
42+
t.dependsOn(
43+
GradleUtils.getJavaSourceSets(project)
44+
.stream()
45+
.map(sourceSet -> sourceSet.getProcessResourcesTaskName())
46+
.collect(Collectors.toList())
4547
);
48+
});
4649
}
4750
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ public TaskProvider<? extends Task> createTask(Project project) {
3939
() -> GradleUtils.getJavaSourceSets(project).stream().map(s -> s.getAllSource()).collect(Collectors.toList())
4040
)
4141
);
42+
forbiddenPatternsTask.dependsOn(
43+
GradleUtils.getJavaSourceSets(project)
44+
.stream()
45+
.map(sourceSet -> sourceSet.getProcessResourcesTaskName())
46+
.collect(Collectors.toList())
47+
);
4248
forbiddenPatternsTask.getRootDir().set(project.getRootDir());
4349
});
4450
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public abstract class ForbiddenPatternsTask extends DefaultTask {
6666
.exclude("**/*.zip")
6767
.exclude("**/*.jks")
6868
.exclude("**/*.crt")
69+
.exclude("**/*.p12")
6970
.exclude("**/*.keystore")
7071
.exclude("**/*.png")
7172
// vim swap file - included here to stop the build falling over if you happen to have a file open :-|

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

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,22 @@ public static void create(Project project, boolean withProductiveCode) {
2525
project.getPluginManager().apply(ForbiddenPatternsPrecommitPlugin.class);
2626
project.getPluginManager().apply(LicenseHeadersPrecommitPlugin.class);
2727
project.getPluginManager().apply(FilePermissionsPrecommitPlugin.class);
28-
project.getPluginManager().apply(TestingConventionsPrecommitPlugin.class);
2928
project.getPluginManager().apply(LoggerUsagePrecommitPlugin.class);
30-
project.getPluginManager().apply(JarHellPrecommitPlugin.class);
29+
30+
// TestingConventionsPlugin is incompatible with projects without
31+
// test source sets. We wanna remove this plugin once we moved away from
32+
// StandaloneRestTest plugin and RestTestPlugin. For apply this plugin only
33+
// when tests are available.
34+
// Long Term we want remove the need for most of this plugins functionality
35+
// and not rely on multiple test tasks against a sourceSet.
36+
if (project.file("src/test").exists()) {
37+
project.getPluginManager().apply(TestingConventionsPrecommitPlugin.class);
38+
}
3139

3240
// tasks with just tests don't need certain tasks to run, so this flag makes adding
3341
// the task optional
3442
if (withProductiveCode) {
43+
project.getPluginManager().apply(JarHellPrecommitPlugin.class);
3544
project.getPluginManager().apply(ThirdPartyAuditPrecommitPlugin.class);
3645
project.getPluginManager().apply(DependencyLicensesPrecommitPlugin.class);
3746
project.getPluginManager().apply(SplitPackagesAuditPrecommitPlugin.class);

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/RestTestBasePlugin.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.elasticsearch.gradle.internal.ElasticsearchTestBasePlugin;
1313
import org.elasticsearch.gradle.internal.FixtureStop;
1414
import org.elasticsearch.gradle.internal.InternalTestClustersPlugin;
15+
import org.elasticsearch.gradle.internal.precommit.InternalPrecommitTasks;
1516
import org.elasticsearch.gradle.test.SystemPropertyCommandLineArgumentProvider;
1617
import org.elasticsearch.gradle.testclusters.ElasticsearchCluster;
1718
import org.elasticsearch.gradle.testclusters.StandaloneRestIntegTestTask;
@@ -48,6 +49,7 @@ public void apply(Project project) {
4849
project.getPluginManager().apply(ElasticsearchJavaBasePlugin.class);
4950
project.getPluginManager().apply(ElasticsearchTestBasePlugin.class);
5051
project.getPluginManager().apply(InternalTestClustersPlugin.class);
52+
InternalPrecommitTasks.create(project, false);
5153
project.getTasks().withType(RestIntegTestTask.class).configureEach(restIntegTestTask -> {
5254
@SuppressWarnings("unchecked")
5355
NamedDomainObjectContainer<ElasticsearchCluster> testClusters = (NamedDomainObjectContainer<ElasticsearchCluster>) project

build-tools/src/main/java/org/elasticsearch/gradle/plugin/PluginBuildPlugin.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ public void execute(Task task) {
185185
});
186186
}
187187
});
188+
188189
final var buildProperties = project.getTasks().register("pluginProperties", Copy.class, copy -> {
189190
copy.dependsOn(copyPluginPropertiesTemplate);
190191
copy.from(templateFile);

modules/runtime-fields-common/build.gradle

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,4 @@ dependencies {
2020
compileOnly project(':modules:lang-painless:spi')
2121
api project(':libs:elasticsearch-grok')
2222
api project(':libs:elasticsearch-dissect')
23-
}
24-
25-
//this plugin is here only for the painless extension, there are no unit tests
26-
tasks.named("testingConventions").configure { enabled = false }
23+
}

rest-api-spec/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ testClusters.configureEach {
4040
}
4141

4242
tasks.named("test").configure { enabled = false }
43-
tasks.named("jarHell").configure { enabled = false }
4443

4544
tasks.named("yamlRestTestV7CompatTransform").configure { task ->
4645

test/x-content/build.gradle

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,6 @@ tasks.named("dependencyLicenses").configure { enabled = false }
3232
tasks.named("dependenciesInfo").configure { enabled = false }
3333
tasks.named("dependenciesGraph").configure { enabled = false }
3434

35-
// no tests of the tests, yet
36-
tasks.named("testingConventions").configure { enabled = false }
37-
3835
tasks.named("thirdPartyAudit").configure {
3936
ignoreMissingClasses(
4037
// classes are missing

0 commit comments

Comments
 (0)