Skip to content

Commit c602caf

Browse files
committed
Merge remote-tracking branch 'es/master' into ccr_autofollow_coordinator_stats
2 parents 3a15fe6 + d8dc042 commit c602caf

File tree

63 files changed

+3438
-385
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+3438
-385
lines changed

buildSrc/src/main/groovy/org/elasticsearch/gradle/precommit/JarHellTask.groovy

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

buildSrc/src/main/groovy/org/elasticsearch/gradle/precommit/LoggerUsageTask.groovy

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

buildSrc/src/main/groovy/org/elasticsearch/gradle/precommit/PrecommitTasks.groovy

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818
*/
1919
package org.elasticsearch.gradle.precommit
2020

21+
import com.github.jengelman.gradle.plugins.shadow.ShadowPlugin
2122
import org.elasticsearch.gradle.ExportElasticsearchBuildResourcesTask
2223
import org.gradle.api.Project
2324
import org.gradle.api.Task
24-
import org.gradle.api.artifacts.Configuration
2525
import org.gradle.api.plugins.JavaBasePlugin
2626
import org.gradle.api.plugins.quality.Checkstyle
2727
/**
@@ -70,19 +70,29 @@ class PrecommitTasks {
7070
precommitTasks.add(configureLoggerUsage(project))
7171
}
7272

73+
// We want to get any compilation error before running the pre-commit checks.
74+
project.sourceSets.all { sourceSet ->
75+
precommitTasks.each { task ->
76+
task.shouldRunAfter(sourceSet.getClassesTaskName())
77+
}
78+
}
7379

74-
Map<String, Object> precommitOptions = [
80+
return project.tasks.create([
7581
name: 'precommit',
7682
group: JavaBasePlugin.VERIFICATION_GROUP,
7783
description: 'Runs all non-test checks.',
7884
dependsOn: precommitTasks
79-
]
80-
return project.tasks.create(precommitOptions)
85+
])
8186
}
8287

8388
private static Task configureJarHell(Project project) {
8489
Task task = project.tasks.create('jarHell', JarHellTask.class)
8590
task.classpath = project.sourceSets.test.runtimeClasspath
91+
if (project.plugins.hasPlugin(ShadowPlugin)) {
92+
task.classpath += project.configurations.bundle
93+
}
94+
task.dependsOn(project.sourceSets.test.classesTaskName)
95+
task.javaHome = project.runtimeJavaHome
8696
return task
8797
}
8898

@@ -201,22 +211,20 @@ class PrecommitTasks {
201211

202212
private static Task configureNamingConventions(Project project) {
203213
if (project.sourceSets.findByName("test")) {
204-
return project.tasks.create('namingConventions', NamingConventionsTask)
214+
Task namingConventionsTask = project.tasks.create('namingConventions', NamingConventionsTask)
215+
namingConventionsTask.javaHome = project.runtimeJavaHome
216+
return namingConventionsTask
205217
}
206218
return null
207219
}
208220

209221
private static Task configureLoggerUsage(Project project) {
210-
Task loggerUsageTask = project.tasks.create('loggerUsageCheck', LoggerUsageTask.class)
211-
212222
project.configurations.create('loggerUsagePlugin')
213223
project.dependencies.add('loggerUsagePlugin',
214224
"org.elasticsearch.test:logger-usage:${org.elasticsearch.gradle.VersionProperties.elasticsearch}")
215-
216-
loggerUsageTask.configure {
225+
return project.tasks.create('loggerUsageCheck', LoggerUsageTask.class) {
217226
classpath = project.configurations.loggerUsagePlugin
227+
javaHome = project.runtimeJavaHome
218228
}
219-
220-
return loggerUsageTask
221229
}
222230
}

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

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,26 @@
11
package org.elasticsearch.gradle;
22

3+
import org.gradle.api.Action;
34
import org.gradle.api.GradleException;
5+
import org.gradle.api.Project;
46
import org.gradle.api.tasks.Exec;
7+
import org.gradle.process.BaseExecSpec;
8+
import org.gradle.process.ExecResult;
9+
import org.gradle.process.ExecSpec;
10+
import org.gradle.process.JavaExecSpec;
511

612
import java.io.ByteArrayOutputStream;
713
import java.io.UnsupportedEncodingException;
14+
import java.util.function.Function;
815

916
/**
1017
* A wrapper around gradle's Exec task to capture output and log on error.
1118
*/
1219
@SuppressWarnings("unchecked")
1320
public class LoggedExec extends Exec {
1421

15-
protected ByteArrayOutputStream output = new ByteArrayOutputStream();
16-
1722
public LoggedExec() {
23+
ByteArrayOutputStream output = new ByteArrayOutputStream();
1824
if (getLogger().isInfoEnabled() == false) {
1925
setStandardOutput(output);
2026
setErrorOutput(output);
@@ -41,4 +47,39 @@ public LoggedExec() {
4147
);
4248
}
4349
}
50+
51+
public static ExecResult exec(Project project, Action<ExecSpec> action) {
52+
return genericExec(project, project::exec, action);
53+
}
54+
55+
public static ExecResult javaexec(Project project, Action<JavaExecSpec> action) {
56+
return genericExec(project, project::javaexec, action);
57+
}
58+
59+
private static <T extends BaseExecSpec> ExecResult genericExec(
60+
Project project,
61+
Function<Action<T>,ExecResult> function,
62+
Action<T> action
63+
) {
64+
if (project.getLogger().isInfoEnabled()) {
65+
return function.apply(action);
66+
}
67+
ByteArrayOutputStream output = new ByteArrayOutputStream();
68+
try {
69+
return function.apply(spec -> {
70+
spec.setStandardOutput(output);
71+
spec.setErrorOutput(output);
72+
action.execute(spec);
73+
});
74+
} catch (Exception e) {
75+
try {
76+
for (String line : output.toString("UTF-8").split("\\R")) {
77+
project.getLogger().error(line);
78+
}
79+
} catch (UnsupportedEncodingException ue) {
80+
throw new GradleException("Failed to read exec output", ue);
81+
}
82+
throw e;
83+
}
84+
}
4485
}

buildSrc/src/main/java/org/elasticsearch/gradle/precommit/ForbiddenApisCliTask.java

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,30 +18,26 @@
1818
*/
1919
package org.elasticsearch.gradle.precommit;
2020

21-
import org.gradle.api.DefaultTask;
21+
import org.elasticsearch.gradle.LoggedExec;
2222
import org.gradle.api.JavaVersion;
2323
import org.gradle.api.artifacts.Configuration;
2424
import org.gradle.api.file.FileCollection;
2525
import org.gradle.api.logging.Logger;
2626
import org.gradle.api.logging.Logging;
2727
import org.gradle.api.tasks.Input;
2828
import org.gradle.api.tasks.InputFiles;
29-
import org.gradle.api.tasks.OutputFile;
3029
import org.gradle.api.tasks.SkipWhenEmpty;
3130
import org.gradle.api.tasks.SourceSet;
3231
import org.gradle.api.tasks.TaskAction;
3332
import org.gradle.process.JavaExecSpec;
3433

3534
import java.io.File;
36-
import java.io.IOException;
37-
import java.nio.file.Files;
3835
import java.util.ArrayList;
39-
import java.util.Collections;
4036
import java.util.LinkedHashSet;
4137
import java.util.List;
4238
import java.util.Set;
4339

44-
public class ForbiddenApisCliTask extends DefaultTask {
40+
public class ForbiddenApisCliTask extends PrecommitTask {
4541

4642
private final Logger logger = Logging.getLogger(ForbiddenApisCliTask.class);
4743
private FileCollection signaturesFiles;
@@ -71,14 +67,6 @@ public void setTargetCompatibility(JavaVersion targetCompatibility) {
7167
}
7268
}
7369

74-
@OutputFile
75-
public File getMarkerFile() {
76-
return new File(
77-
new File(getProject().getBuildDir(), "precommit"),
78-
getName()
79-
);
80-
}
81-
8270
@InputFiles
8371
@SkipWhenEmpty
8472
public FileCollection getClassesDirs() {
@@ -152,8 +140,8 @@ public void setJavaHome(Object javaHome) {
152140
}
153141

154142
@TaskAction
155-
public void runForbiddenApisAndWriteMarker() throws IOException {
156-
getProject().javaexec((JavaExecSpec spec) -> {
143+
public void runForbiddenApisAndWriteMarker() {
144+
LoggedExec.javaexec(getProject(), (JavaExecSpec spec) -> {
157145
spec.classpath(
158146
getForbiddenAPIsConfiguration(),
159147
getClassPathFromSourceSet()
@@ -184,7 +172,6 @@ public void runForbiddenApisAndWriteMarker() throws IOException {
184172
spec.args("-d", dir)
185173
);
186174
});
187-
Files.write(getMarkerFile().toPath(), Collections.emptyList());
188175
}
189176

190177
}

0 commit comments

Comments
 (0)