backend/tests: Added test group running
This commit is contained in:
@@ -79,6 +79,10 @@ task run_external () {
|
||||
}
|
||||
}
|
||||
|
||||
task run_external_group (type: RunExternalTestGroup) {
|
||||
groupDirectory = "external/codegen/blackbox/binaryOp"
|
||||
}
|
||||
|
||||
task sum (type:RunKonanTest) {
|
||||
source = "codegen/function/sum.kt"
|
||||
}
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
package org.jetbrains.kotlin
|
||||
|
||||
import groovy.io.FileType
|
||||
import org.gradle.api.DefaultTask
|
||||
import org.gradle.api.internal.tasks.testing.detection.DefaultTestExecuter
|
||||
import org.gradle.api.tasks.ParallelizableTask
|
||||
import org.gradle.api.tasks.TaskAction
|
||||
import org.gradle.api.tasks.testing.Test
|
||||
|
||||
abstract class KonanTest extends DefaultTask {
|
||||
protected String source
|
||||
@@ -157,7 +161,7 @@ class RunExternalTest extends RunKonanTest {
|
||||
def nextFileExists = matcher.find()
|
||||
def end = nextFileExists ? matcher.start() : srcText.length()
|
||||
def fileText = srcText.substring(start, end)
|
||||
processedChars = end;
|
||||
processedChars = end
|
||||
createFile(filePath, fileText)
|
||||
if (fileText =~ boxPattern && fileText =~ packagePattern){
|
||||
boxPackage = (fileText =~ packagePattern)[0][1]
|
||||
@@ -181,3 +185,43 @@ class RunExternalTest extends RunKonanTest {
|
||||
}
|
||||
}
|
||||
|
||||
class RunExternalTestGroup extends RunExternalTest {
|
||||
def groupDirectory = "."
|
||||
def logFileName = "test-result.md"
|
||||
String filter = project.property("filter")
|
||||
|
||||
@TaskAction
|
||||
void executeTest() {
|
||||
def logFile = project.file(logFileName)
|
||||
logFile.write("|Test|Status|Comment|\n|----|------|-------|")
|
||||
def ktFiles = project.file(groupDirectory).listFiles(new FileFilter() {
|
||||
@Override
|
||||
boolean accept(File pathname) {
|
||||
pathname.isFile() && pathname.name.endsWith(".kt")
|
||||
}
|
||||
})
|
||||
if (filter != null) {
|
||||
def pattern = ~filter
|
||||
ktFiles = ktFiles.findAll {
|
||||
it.name =~ pattern
|
||||
}
|
||||
}
|
||||
def current = 0
|
||||
def passed = 0
|
||||
def total = ktFiles.size()
|
||||
ktFiles.each {
|
||||
source = project.relativePath(it)
|
||||
println("TEST: ${++current}/$total (passed: $passed)")
|
||||
try {
|
||||
super.executeTest()
|
||||
logFile.append("\n|$it.name|PASSED||")
|
||||
println("TEST PASSED\n")
|
||||
passed++
|
||||
} catch (Exception ex) {
|
||||
println("TEST FAILED\n")
|
||||
logFile.append("\n|$it.name|FAILED|${ex.getMessage()}. Cause: ${ex.getCause()?.getMessage()}|")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user