diff --git a/buildSrc/src/main/groovy/TestSummaryListener.groovy b/buildSrc/src/main/groovy/TestSummaryListener.groovy index caf5a383e..f1071bf1c 100644 --- a/buildSrc/src/main/groovy/TestSummaryListener.groovy +++ b/buildSrc/src/main/groovy/TestSummaryListener.groovy @@ -4,21 +4,34 @@ import org.gradle.api.tasks.testing.TestResult class TestSummaryListener implements TestListener, Serializable { + private final List failedTests = Collections.synchronizedList(new ArrayList<>()) + @Override void beforeSuite(TestDescriptor suite) {} @Override void afterSuite(TestDescriptor desc, TestResult result) { - if (desc.parent == null) { - def output = "Results: ${result.resultType} (${result.testCount} tests, ${result.successfulTestCount} passed, ${result.failedTestCount} failed, ${result.skippedTestCount} skipped)" - def startItem = '| ' - def endItem = ' |' - def repeatLength = startItem.length() + output.length() + endItem.length() - - println '\n' + - ('-' * repeatLength) + '\n' + - startItem + output + endItem + '\n' + - ('-' * repeatLength) + if (desc.parent != null) { + return + } + + def output = "Results: ${result.resultType} (${result.testCount} tests, ${result.successfulTestCount} passed, ${result.failedTestCount} failed, ${result.skippedTestCount} skipped)" + def startItem = '| ' + def endItem = ' |' + def repeatLength = startItem.length() + output.length() + endItem.length() + + println '\n' + + ('-' * repeatLength) + '\n' + + startItem + output + endItem + '\n' + + ('-' * repeatLength) + + def failures = new ArrayList<>(failedTests).sort() + + if (!failures.empty) { + println '\nFailed tests:' + failures.each { failure -> + println " - ${failure}" + } } } @@ -27,6 +40,11 @@ class TestSummaryListener implements TestListener, Serializable { @Override void afterTest(TestDescriptor desc, TestResult result) { + if (result.resultType == TestResult.ResultType.FAILURE) { + def className = desc.className ?: desc.parent?.name ?: '' + failedTests.add("${className} > ${desc.name}") + } + println "${desc.className} > ${desc.name} took: ${(result.endTime - result.startTime)}ms" } }