From b6587252c083e53562a824cb92b7c27b2cccdf6b Mon Sep 17 00:00:00 2001 From: Ilya Matveev Date: Wed, 18 Jan 2017 12:48:38 +0300 Subject: [PATCH] backend/tests: Added test group running --- backend.native/tests/build.gradle | 4 ++ .../org/jetbrains/kotlin/KonanTest.groovy | 46 ++++++++++++++++++- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index 676a7272511..6dc356a4494 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -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" } diff --git a/buildSrc/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy b/buildSrc/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy index 9e0f8a2f703..d38bd2b3a63 100644 --- a/buildSrc/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy +++ b/buildSrc/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy @@ -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()}|") + } + } + } +} +