diff --git a/build.gradle b/build.gradle index 9681bdd85a7..b1bcf2e338b 100644 --- a/build.gradle +++ b/build.gradle @@ -546,6 +546,7 @@ subprojects { task quarantinedTest(type: Test, dependsOn: compileJava) { ext { isGithubActions = System.getenv('GITHUB_ACTIONS') != null + hadFailure = false // Used to track if any tests failed, see afterSuite below } // Disable caching and up-to-date for this task. We always want quarantined tests @@ -584,6 +585,13 @@ subprojects { } } + // As we process results, check if there were any test failures. + afterSuite { desc, result -> + if (result.resultType == TestResult.ResultType.FAILURE) { + ext.hadFailure = true + } + } + // This closure will copy JUnit XML files out of the sub-project's build directory and into // a top-level build/junit-xml directory. This is necessary to avoid reporting on tests which // were not run, but instead were restored via FROM-CACHE. See KAFKA-17479 for more details. @@ -597,6 +605,11 @@ subprojects { ant.include(name: "**/*.xml") } } + // If there were any test failures, we want to fail the task to prevent the failures + // from being cached. + if (ext.hadFailure) { + throw new GradleException("Failing this task since '${project.name}:${name}' had test failures.") + } } } }