Always apply retry plugin but only retry on CI
Previously, the retry plugin was only applied on CI as we do not want tests to be retried in local builds. Unfortunately, this arrangement led to test tasks from CI builds having additional doFirst and doLast actions and an additional property. These differences meant that the output from a test task that has run on CI could not be used by a local build. This commit changes our configuration of the test retry plugin so that it is now always applied. To retain the behaviour of only retrying tests on CI, max retries is configured to 3 on CI and 0 for local builds. Closes gh-21698
This commit is contained in:
parent
4d37430bfe
commit
c0f748e143
|
@ -109,15 +109,17 @@ class JavaConventions {
|
|||
test.useJUnitPlatform();
|
||||
test.setMaxHeapSize("1024M");
|
||||
});
|
||||
if (Boolean.parseBoolean(System.getenv("CI"))) {
|
||||
project.getPlugins().apply(TestRetryPlugin.class);
|
||||
project.getTasks().withType(Test.class,
|
||||
(test) -> project.getPlugins().withType(TestRetryPlugin.class, (testRetryPlugin) -> {
|
||||
TestRetryTaskExtension testRetry = test.getExtensions().getByType(TestRetryTaskExtension.class);
|
||||
testRetry.getFailOnPassedAfterRetry().set(true);
|
||||
testRetry.getMaxRetries().set(3);
|
||||
}));
|
||||
}
|
||||
project.getPlugins().apply(TestRetryPlugin.class);
|
||||
project.getTasks().withType(Test.class,
|
||||
(test) -> project.getPlugins().withType(TestRetryPlugin.class, (testRetryPlugin) -> {
|
||||
TestRetryTaskExtension testRetry = test.getExtensions().getByType(TestRetryTaskExtension.class);
|
||||
testRetry.getFailOnPassedAfterRetry().set(true);
|
||||
testRetry.getMaxRetries().set(isCi() ? 3 : 0);
|
||||
}));
|
||||
}
|
||||
|
||||
private boolean isCi() {
|
||||
return Boolean.parseBoolean(System.getenv("CI"));
|
||||
}
|
||||
|
||||
private void configureJavadocConventions(Project project) {
|
||||
|
|
|
@ -78,7 +78,7 @@ class ConventionsPluginTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
void testRetryIsConfiguredOnCI() throws IOException {
|
||||
void testRetryIsConfiguredWithThreeRetriesOnCI() throws IOException {
|
||||
try (PrintWriter out = new PrintWriter(new FileWriter(this.buildFile))) {
|
||||
out.println("plugins {");
|
||||
out.println(" id 'java'");
|
||||
|
@ -101,7 +101,7 @@ class ConventionsPluginTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
void testRetryIsNotConfiguredLocally() throws IOException {
|
||||
void testRetryIsConfiguredWithZeroRetriesLocally() throws IOException {
|
||||
try (PrintWriter out = new PrintWriter(new FileWriter(this.buildFile))) {
|
||||
out.println("plugins {");
|
||||
out.println(" id 'java'");
|
||||
|
@ -111,11 +111,16 @@ class ConventionsPluginTests {
|
|||
out.println("task retryConfig {");
|
||||
out.println(" doLast {");
|
||||
out.println(" println \"Retry plugin applied: ${plugins.hasPlugin('org.gradle.test-retry')}\"");
|
||||
out.println(" test.retry {");
|
||||
out.println(" println \"maxRetries: ${maxRetries.get()}\"");
|
||||
out.println(" println \"failOnPassedAfterRetry: ${failOnPassedAfterRetry.get()}\"");
|
||||
out.println(" }");
|
||||
out.println(" }");
|
||||
out.println("}");
|
||||
}
|
||||
assertThat(runGradle(Collections.singletonMap("CI", "local"), "retryConfig", "--stacktrace").getOutput())
|
||||
.contains("Retry plugin applied: false");
|
||||
.contains("Retry plugin applied: true").contains("maxRetries: 0")
|
||||
.contains("failOnPassedAfterRetry: true");
|
||||
}
|
||||
|
||||
private BuildResult runGradle(String... args) {
|
||||
|
|
Loading…
Reference in New Issue