From bfdda21da187158f5950ea93e6884d4dd79bdf13 Mon Sep 17 00:00:00 2001 From: Ilya Matveev Date: Wed, 18 Jan 2017 14:10:20 +0300 Subject: [PATCH] backend/tests: Added task generation for test groups instead of tests --- backend.native/tests/build.gradle | 52 +++++-------------- .../org/jetbrains/kotlin/KonanTest.groovy | 7 ++- 2 files changed, 18 insertions(+), 41 deletions(-) diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index 6dc356a4494..3fe46205a39 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -19,7 +19,8 @@ task regenerate_external_tests() { def gradleGenerated = externalTestsProject.file("build.gradle") def externalTestsDir = externalTestsProject.file("codegen/blackbox") gradleGenerated.write("import org.jetbrains.kotlin.*\n\n") - gradleGenerated.append("configurations {\n" + + gradleGenerated.append( + "configurations {\n" + " cli_bc\n" + "}\n" + "\n" + @@ -28,22 +29,19 @@ task regenerate_external_tests() { "}\n\n") externalTestsDir.eachDirRecurse { - if (it.name == "build") { + // Skip build directory and directories without *.kt files + if (it.name == "build" || it.listFiles().findAll { it.name.endsWith(".kt") }.isEmpty()) { return } - def directoryGradleGenerated = project.file("$it.absolutePath/build-generated.gradle") - directoryGradleGenerated.write("import org.jetbrains.kotlin.*\n\n") - gradleGenerated.append("\napply from: \"${externalTestsProject.relativePath(directoryGradleGenerated)}\"") + def taskDirectory = externalTestsProject.relativePath(it) + def taskName = taskDirectory.replace('/', '_').replace('-', '_') - it.eachFile(FileType.FILES) { - if (it.name.endsWith(".kt")) { - def taskSourcePath = externalTestsProject.relativePath(it) - //remove filename extension. TODO make better replacement - def taskName = taskSourcePath.replace('/', '_').replace('-', '_').replaceFirst(~/\.[^\.]+$/, '') - directoryGradleGenerated.append("task $taskName (type: RunExternalTest) {\n source = \"$taskSourcePath\"\n}\n\n") - } - } + gradleGenerated.append( + "task $taskName (type: RunExternalTestGroup) {\n" + + " groupDirectory = \"$taskDirectory\"\n" + + " logFileName = \"$taskDirectory/test-result.md\"\n" + + "}\n\n") } } } @@ -54,35 +52,11 @@ task run() { } task run_external () { - doLast { - //TODO make better output / make as dependencies - def externalTestsProject = project.childProjects["external"] - def logFile = externalTestsProject.file("test-result.md") - logFile.write("|Test|Status|Comment|\n|----|------|-------|") - def current = 1 - def passed = 0 - def total = externalTestsProject.tasks.size() - externalTestsProject.tasks.each { - println("TEST: $current/$total (passed: $passed)") - try { - (it as RunExternalTest).executeTest() - logFile.append("\n|$it.name|PASSED||") - println("TEST PASSED") - passed++ - } catch (Exception ex) { - println("TEST FAILED") - logFile.append("\n|$it.name|FAILED|${ex.getMessage()}. Cause: ${ex.getCause()?.getMessage()}|") - } - current++ - } - logFile.append("\nPASSED: $passed/$total") + project.subprojects { + dependsOn(it.tasks.withType(RunExternalTestGroup).matching { it.enabled }) } } -task run_external_group (type: RunExternalTestGroup) { - groupDirectory = "external/codegen/blackbox/binaryOp" -} - task sum (type:RunKonanTest) { source = "codegen/function/sum.kt" } diff --git a/buildSrc/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy b/buildSrc/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy index d38bd2b3a63..f4f19a174eb 100644 --- a/buildSrc/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy +++ b/buildSrc/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy @@ -185,12 +185,14 @@ class RunExternalTest extends RunKonanTest { } } +@ParallelizableTask class RunExternalTestGroup extends RunExternalTest { def groupDirectory = "." def logFileName = "test-result.md" - String filter = project.property("filter") + String filter = project.findProperty("filter") @TaskAction + @Override void executeTest() { def logFile = project.file(logFileName) logFile.write("|Test|Status|Comment|\n|----|------|-------|") @@ -211,7 +213,7 @@ class RunExternalTestGroup extends RunExternalTest { def total = ktFiles.size() ktFiles.each { source = project.relativePath(it) - println("TEST: ${++current}/$total (passed: $passed)") + println("TEST: $it.name (${++current}/$total, passed: $passed)") try { super.executeTest() logFile.append("\n|$it.name|PASSED||") @@ -222,6 +224,7 @@ class RunExternalTestGroup extends RunExternalTest { logFile.append("\n|$it.name|FAILED|${ex.getMessage()}. Cause: ${ex.getCause()?.getMessage()}|") } } + print("TOTAL PASSED: $passed/$total") } }