backend/tests: Added task generation for test groups instead of tests

This commit is contained in:
Ilya Matveev
2017-01-18 14:10:20 +03:00
parent b6587252c0
commit bfdda21da1
2 changed files with 18 additions and 41 deletions
+13 -39
View File
@@ -19,7 +19,8 @@ task regenerate_external_tests() {
def gradleGenerated = externalTestsProject.file("build.gradle") def gradleGenerated = externalTestsProject.file("build.gradle")
def externalTestsDir = externalTestsProject.file("codegen/blackbox") def externalTestsDir = externalTestsProject.file("codegen/blackbox")
gradleGenerated.write("import org.jetbrains.kotlin.*\n\n") gradleGenerated.write("import org.jetbrains.kotlin.*\n\n")
gradleGenerated.append("configurations {\n" + gradleGenerated.append(
"configurations {\n" +
" cli_bc\n" + " cli_bc\n" +
"}\n" + "}\n" +
"\n" + "\n" +
@@ -28,22 +29,19 @@ task regenerate_external_tests() {
"}\n\n") "}\n\n")
externalTestsDir.eachDirRecurse { 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 return
} }
def directoryGradleGenerated = project.file("$it.absolutePath/build-generated.gradle") def taskDirectory = externalTestsProject.relativePath(it)
directoryGradleGenerated.write("import org.jetbrains.kotlin.*\n\n") def taskName = taskDirectory.replace('/', '_').replace('-', '_')
gradleGenerated.append("\napply from: \"${externalTestsProject.relativePath(directoryGradleGenerated)}\"")
it.eachFile(FileType.FILES) { gradleGenerated.append(
if (it.name.endsWith(".kt")) { "task $taskName (type: RunExternalTestGroup) {\n" +
def taskSourcePath = externalTestsProject.relativePath(it) " groupDirectory = \"$taskDirectory\"\n" +
//remove filename extension. TODO make better replacement " logFileName = \"$taskDirectory/test-result.md\"\n" +
def taskName = taskSourcePath.replace('/', '_').replace('-', '_').replaceFirst(~/\.[^\.]+$/, '') "}\n\n")
directoryGradleGenerated.append("task $taskName (type: RunExternalTest) {\n source = \"$taskSourcePath\"\n}\n\n")
}
}
} }
} }
} }
@@ -54,35 +52,11 @@ task run() {
} }
task run_external () { task run_external () {
doLast { project.subprojects {
//TODO make better output / make as dependencies dependsOn(it.tasks.withType(RunExternalTestGroup).matching { it.enabled })
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")
} }
} }
task run_external_group (type: RunExternalTestGroup) {
groupDirectory = "external/codegen/blackbox/binaryOp"
}
task sum (type:RunKonanTest) { task sum (type:RunKonanTest) {
source = "codegen/function/sum.kt" source = "codegen/function/sum.kt"
} }
@@ -185,12 +185,14 @@ class RunExternalTest extends RunKonanTest {
} }
} }
@ParallelizableTask
class RunExternalTestGroup extends RunExternalTest { class RunExternalTestGroup extends RunExternalTest {
def groupDirectory = "." def groupDirectory = "."
def logFileName = "test-result.md" def logFileName = "test-result.md"
String filter = project.property("filter") String filter = project.findProperty("filter")
@TaskAction @TaskAction
@Override
void executeTest() { void executeTest() {
def logFile = project.file(logFileName) def logFile = project.file(logFileName)
logFile.write("|Test|Status|Comment|\n|----|------|-------|") logFile.write("|Test|Status|Comment|\n|----|------|-------|")
@@ -211,7 +213,7 @@ class RunExternalTestGroup extends RunExternalTest {
def total = ktFiles.size() def total = ktFiles.size()
ktFiles.each { ktFiles.each {
source = project.relativePath(it) source = project.relativePath(it)
println("TEST: ${++current}/$total (passed: $passed)") println("TEST: $it.name (${++current}/$total, passed: $passed)")
try { try {
super.executeTest() super.executeTest()
logFile.append("\n|$it.name|PASSED||") 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()}|") logFile.append("\n|$it.name|FAILED|${ex.getMessage()}. Cause: ${ex.getCause()?.getMessage()}|")
} }
} }
print("TOTAL PASSED: $passed/$total")
} }
} }