Skip to content

Commit 746de41

Browse files
committed
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 2cececd commit 746de41

File tree

2 files changed

+31
-33
lines changed

2 files changed

+31
-33
lines changed

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

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,6 @@ class BuildPlugin implements Plugin<Project> {
7171
project.pluginManager.apply('elasticsearch.publish')
7272
project.pluginManager.apply(DependenciesInfoPlugin)
7373

74-
// apply global test task failure listener
75-
project.rootProject.pluginManager.apply(TestFailureReportingPlugin)
76-
7774
project.getTasks().register("buildResources", ExportElasticsearchBuildResourcesTask)
7875

7976
project.extensions.getByType(ExtraPropertiesExtension).set('versions', VersionProperties.versions)
@@ -141,36 +138,6 @@ class BuildPlugin implements Plugin<Project> {
141138
}
142139
}
143140

144-
145-
private static class TestFailureReportingPlugin implements Plugin<Project> {
146-
@Override
147-
void apply(Project project) {
148-
if (project != project.rootProject) {
149-
throw new IllegalStateException("${this.class.getName()} can only be applied to the root project.")
150-
}
151-
152-
project.gradle.addListener(new TaskActionListener() {
153-
@Override
154-
void beforeActions(Task task) {
155-
156-
}
157-
158-
@Override
159-
void afterActions(Task task) {
160-
if (task instanceof Test) {
161-
ErrorReportingTestListener listener = task.extensions.findByType(ErrorReportingTestListener)
162-
if (listener != null && listener.getFailedTests().size() > 0) {
163-
task.logger.lifecycle("\nTests with failures:")
164-
listener.getFailedTests().each {
165-
task.logger.lifecycle(" - ${it.getFullName()}")
166-
}
167-
}
168-
}
169-
}
170-
})
171-
}
172-
}
173-
174141
private static inFipsJvm(){
175142
return Boolean.parseBoolean(System.getProperty("tests.fips.enabled"));
176143
}

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;
@@ -78,8 +79,11 @@ public class ElasticsearchJavaPlugin implements Plugin<Project> {
7879
public void apply(Project project) {
7980
// make sure the global build info plugin is applied to the root project
8081
project.getRootProject().getPluginManager().apply(GlobalBuildInfoPlugin.class);
82+
// apply global test task failure listener
83+
project.getRootProject().getPluginManager().apply(TestFailureReportingPlugin.class);
8184

8285
project.getPluginManager().apply(JavaPlugin.class);
86+
8387
configureConfigurations(project);
8488
configureRepositories(project);
8589
configureCompile(project);
@@ -545,4 +549,31 @@ private static void configureJavadoc(Project project) {
545549
.named(LifecycleBasePlugin.CHECK_TASK_NAME)
546550
.configure(t -> t.dependsOn(project.getTasks().withType(Javadoc.class)));
547551
}
552+
553+
static class TestFailureReportingPlugin implements Plugin<Project> {
554+
@Override
555+
public void apply(Project project) {
556+
if (project != project.getRootProject()) {
557+
throw new IllegalStateException(this.getClass().getName() + " can only be applied to the root project.");
558+
}
559+
560+
project.getGradle().addListener(new TaskActionListener() {
561+
@Override
562+
public void beforeActions(Task task) {}
563+
564+
@Override
565+
public void afterActions(Task task) {
566+
if (task instanceof Test) {
567+
ErrorReportingTestListener listener = task.getExtensions().findByType(ErrorReportingTestListener.class);
568+
if (listener != null && listener.getFailedTests().size() > 0) {
569+
task.getLogger().lifecycle("\nTests with failures:");
570+
for (ErrorReportingTestListener.Descriptor failure : listener.getFailedTests()) {
571+
task.getLogger().lifecycle(" - " + failure.getFullName());
572+
}
573+
}
574+
}
575+
}
576+
});
577+
}
578+
}
548579
}

0 commit comments

Comments
 (0)