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 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"
}
@@ -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")
}
}