From 709afdfa45fe517e89bc9b86a3e530e25d3655c1 Mon Sep 17 00:00:00 2001 From: Sergey Rostov Date: Wed, 22 May 2019 13:55:07 +0300 Subject: [PATCH] Gradle, testing test execution: support asserting reports from multiple tasks at once --- .../jetbrains/kotlin/gradle/BaseGradleIT.kt | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt index 880d4526c17..4d04b578ae9 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt @@ -601,30 +601,35 @@ abstract class BaseGradleIT { * @param assertionFileName path to xml with expected test results, relative to test resources root */ fun CompiledProject.assertTestResults( - @TestDataFile assertionFileName: String, - testReportName: String + @TestDataFile assertionFileName: String, + vararg testReportNames: String ) { val projectDir = project.projectDir - val testReportDir = projectDir.resolve("build/test-results/$testReportName") + val testReportDirs = testReportNames.map { projectDir.resolve("build/test-results/$it") } - if (!testReportDir.isDirectory) { - error("Test report dir $testReportDir was not created") + testReportDirs.forEach { + if (!it.isDirectory) { + error("Test report dir $it was not created") + } } - val actualTestResults = readAndCleanupTestResults(testReportDir, projectDir) + val actualTestResults = readAndCleanupTestResults(testReportDirs, projectDir) val expectedTestResults = prettyPrintXml(resourcesRootFile.resolve(assertionFileName).readText()) assertEquals(expectedTestResults, actualTestResults) } - private fun readAndCleanupTestResults(testReportDir: File, projectDir: File): String { - val files = testReportDir - .listFiles() - .filter { it.isFile && it.name.endsWith(".xml") } - .sortedBy { - // let containing test suite be first - it.name.replace(".xml", ".A.xml") + private fun readAndCleanupTestResults(testReportDirs: List, projectDir: File): String { + val files = testReportDirs + .flatMap { + (it.listFiles() ?: arrayOf()).filter { + it.isFile && it.name.endsWith(".xml") } + } + .sortedBy { + // let containing test suite be first + it.name.replace(".xml", ".A.xml") + } val xmlString = buildString { appendln("")