Skip to content

Commit 77ca5dc

Browse files
authored
Move test error reporting to java plugin (#57259)
This commit moves the global hook for reporting failed test cases to the ElasticsearchJavaPlugin. It should always be applied for all java projects since the Test class is what emits the failures logged.
1 parent 3045eb5 commit 77ca5dc

File tree

2 files changed

+31
-32
lines changed

2 files changed

+31
-32
lines changed

buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,6 @@ class BuildPlugin implements Plugin<Project> {
6868
project.pluginManager.apply('elasticsearch.publish')
6969
project.pluginManager.apply(DependenciesInfoPlugin)
7070

71-
// apply global test task failure listener
72-
project.rootProject.pluginManager.apply(TestFailureReportingPlugin)
73-
7471
project.getTasks().register("buildResources", ExportElasticsearchBuildResourcesTask)
7572

7673
project.extensions.getByType(ExtraPropertiesExtension).set('versions', VersionProperties.versions)
@@ -122,35 +119,6 @@ class BuildPlugin implements Plugin<Project> {
122119
}
123120
}
124121

125-
private static class TestFailureReportingPlugin implements Plugin<Project> {
126-
@Override
127-
void apply(Project project) {
128-
if (project != project.rootProject) {
129-
throw new IllegalStateException("${this.class.getName()} can only be applied to the root project.")
130-
}
131-
132-
project.gradle.addListener(new TaskActionListener() {
133-
@Override
134-
void beforeActions(Task task) {
135-
136-
}
137-
138-
@Override
139-
void afterActions(Task task) {
140-
if (task instanceof Test) {
141-
ErrorReportingTestListener listener = task.extensions.findByType(ErrorReportingTestListener)
142-
if (listener != null && listener.getFailedTests().size() > 0) {
143-
task.logger.lifecycle("\nTests with failures:")
144-
listener.getFailedTests().each {
145-
task.logger.lifecycle(" - ${it.getFullName()}")
146-
}
147-
}
148-
}
149-
}
150-
})
151-
}
152-
}
153-
154122
private static inFipsJvm(){
155123
return Boolean.parseBoolean(System.getProperty("tests.fips.enabled"));
156124
}

buildSrc/src/main/java/org/elasticsearch/gradle/ElasticsearchJavaPlugin.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.gradle.api.artifacts.dsl.RepositoryHandler;
4040
import org.gradle.api.artifacts.repositories.IvyArtifactRepository;
4141
import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
42+
import org.gradle.api.execution.TaskActionListener;
4243
import org.gradle.api.file.FileCollection;
4344
import org.gradle.api.plugins.BasePlugin;
4445
import org.gradle.api.plugins.JavaPlugin;
@@ -79,8 +80,11 @@ public class ElasticsearchJavaPlugin implements Plugin<Project> {
7980
public void apply(Project project) {
8081
// make sure the global build info plugin is applied to the root project
8182
project.getRootProject().getPluginManager().apply(GlobalBuildInfoPlugin.class);
83+
// apply global test task failure listener
84+
project.getRootProject().getPluginManager().apply(TestFailureReportingPlugin.class);
8285

8386
project.getPluginManager().apply(JavaPlugin.class);
87+
8488
configureConfigurations(project);
8589
configureRepositories(project);
8690
configureCompile(project);
@@ -541,4 +545,31 @@ private static void configureJavadoc(Project project) {
541545
// ensure javadoc task is run with 'check'
542546
project.getTasks().named(LifecycleBasePlugin.CHECK_TASK_NAME).configure(t -> t.dependsOn(javadoc));
543547
}
548+
549+
static class TestFailureReportingPlugin implements Plugin<Project> {
550+
@Override
551+
public void apply(Project project) {
552+
if (project != project.getRootProject()) {
553+
throw new IllegalStateException(this.getClass().getName() + " can only be applied to the root project.");
554+
}
555+
556+
project.getGradle().addListener(new TaskActionListener() {
557+
@Override
558+
public void beforeActions(Task task) {}
559+
560+
@Override
561+
public void afterActions(Task task) {
562+
if (task instanceof Test) {
563+
ErrorReportingTestListener listener = task.getExtensions().findByType(ErrorReportingTestListener.class);
564+
if (listener != null && listener.getFailedTests().size() > 0) {
565+
task.getLogger().lifecycle("\nTests with failures:");
566+
for (ErrorReportingTestListener.Descriptor failure : listener.getFailedTests()) {
567+
task.getLogger().lifecycle(" - " + failure.getFullName());
568+
}
569+
}
570+
}
571+
}
572+
});
573+
}
574+
}
544575
}

0 commit comments

Comments
 (0)