backend/tests: Added task generation for test groups instead of tests
This commit is contained in:
@@ -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")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user