diff --git a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt index 45ad922dc60..6a6f3d11e45 100755 --- a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt +++ b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt @@ -311,11 +311,11 @@ fun main(args: Array) { model("ir/box", targetBackend = TargetBackend.JVM) } - testClass("BlackBoxInlineCodegenTestGenerated") { + testClass { model("codegen/boxInline") } - testClass("CompileKotlinAgainstInlineKotlinTestGenerated") { + testClass { model("codegen/boxInline") } @@ -962,19 +962,19 @@ fun main(args: Array) { model("expressionSelection", testMethod = "doTestExpressionSelection", pattern = KT_WITHOUT_DOTS_IN_NAME) } - testClass(AbstractCommonDecompiledTextTest::class.java) { + testClass { model("decompiler/decompiledText", pattern = """^([^\.]+)$""") } - testClass(AbstractJvmDecompiledTextTest::class.java) { + testClass { model("decompiler/decompiledTextJvm", pattern = """^([^\.]+)$""") } - testClass(AbstractCommonDecompiledTextFromJsMetadataTest::class.java) { + testClass { model("decompiler/decompiledText", pattern = """^([^\.]+)$""", targetBackend = TargetBackend.JS) } - testClass(AbstractJsDecompiledTextFromJsMetadataTest::class.java) { + testClass { model("decompiler/decompiledTextJs", pattern = """^([^\.]+)$""", targetBackend = TargetBackend.JS) } @@ -1226,7 +1226,7 @@ fun main(args: Array) { model("smartMultiFile", extension = null, recursive = false) } - testClass("org.jetbrains.kotlin.idea.completion.test.KDocCompletionTestGenerated") { + testClass("KDocCompletionTestGenerated") { model("kdoc") } @@ -1234,7 +1234,7 @@ fun main(args: Array) { model("basic/java8") } - testClass() { + testClass { model("incrementalResolve") } } @@ -1282,12 +1282,12 @@ fun main(args: Array) { model("incremental/lookupTracker/js", extension = null, recursive = false) } - testClass(AbstractIncrementalLazyCachesTest::class.java) { + testClass { model("incremental/lazyKotlinCaches", extension = null, excludeParentDirs = true) model("incremental/changeIncrementalOption", extension = null, excludeParentDirs = true) } - testClass(AbstractIncrementalCacheVersionChangedTest::class.java) { + testClass { model("incremental/cacheVersionChanged", extension = null, excludeParentDirs = true) } @@ -1529,32 +1529,24 @@ fun main(args: Array) { } } -class TestGroup(val testsRoot: String, val testDataRoot: String) { +class TestGroup(private val testsRoot: String, val testDataRoot: String) { inline fun testClass( - suiteTestClass: String = getDefaultSuiteTestClass(T::class.java), + suiteTestClassName: String = getDefaultSuiteTestClassName(T::class.java.simpleName), noinline init: TestClass.() -> Unit ) { - testClass(T::class.java, suiteTestClass, init) + testClass(T::class.java.name, suiteTestClassName, init) } fun testClass( - baseTestClass: Class, - suiteTestClass: String = getDefaultSuiteTestClass(baseTestClass), + baseTestClassName: String, + suiteTestClassName: String = getDefaultSuiteTestClassName(baseTestClassName.substringAfterLast('.')), init: TestClass.() -> Unit ) { - val testClass = TestClass() - testClass.init() - - val lastDot = suiteTestClass.lastIndexOf('.') - val suiteTestClassName = if (lastDot == -1) suiteTestClass else suiteTestClass.substring(lastDot+1) - val suiteTestClassPackage = if (lastDot == -1) baseTestClass.`package`.name else suiteTestClass.substring(0, lastDot) - TestGenerator( testsRoot, - suiteTestClassPackage, suiteTestClassName, - baseTestClass, - testClass.testModels + baseTestClassName, + TestClass().apply(init).testModels ).generateAndSave() } @@ -1592,17 +1584,15 @@ class TestGroup(val testsRoot: String, val testDataRoot: String) { ) } } - } fun testGroup(testsRoot: String, testDataRoot: String, init: TestGroup.() -> Unit) { TestGroup(testsRoot, testDataRoot).init() } -fun getDefaultSuiteTestClass(baseTestClass:Class<*>): String { - val baseName = baseTestClass.simpleName - if (!baseName.startsWith("Abstract")) { - throw IllegalArgumentException("Doesn't start with \"Abstract\": $baseName") +fun getDefaultSuiteTestClassName(baseTestClassName: String): String { + if (!baseTestClassName.startsWith("Abstract")) { + throw IllegalArgumentException("Doesn't start with \"Abstract\": $baseTestClassName") } - return baseName.substring("Abstract".length) + "Generated" + return baseTestClassName.substringAfter("Abstract") + "Generated" } diff --git a/generators/src/org/jetbrains/kotlin/generators/tests/generator/TestGenerator.java b/generators/src/org/jetbrains/kotlin/generators/tests/generator/TestGenerator.java index 25ffe3d487a..96cec604542 100644 --- a/generators/src/org/jetbrains/kotlin/generators/tests/generator/TestGenerator.java +++ b/generators/src/org/jetbrains/kotlin/generators/tests/generator/TestGenerator.java @@ -16,10 +16,8 @@ package org.jetbrains.kotlin.generators.tests.generator; -import com.google.common.collect.Lists; import com.intellij.openapi.util.io.FileUtil; -import com.intellij.util.containers.ContainerUtil; -import junit.framework.TestCase; +import kotlin.text.StringsKt; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil; @@ -32,15 +30,12 @@ import org.junit.runner.RunWith; import java.io.File; import java.io.IOException; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.Set; +import java.util.*; import static kotlin.collections.CollectionsKt.single; public class TestGenerator { - private static final Set GENERATED_FILES = ContainerUtil.newHashSet(); + private static final Set GENERATED_FILES = new HashSet<>(); private static final Class RUNNER = JUnit3RunnerWithInners.class; private final String baseTestClassPackage; @@ -52,16 +47,15 @@ public class TestGenerator { public TestGenerator( @NotNull String baseDir, - @NotNull String suiteClassPackage, - @NotNull String suiteClassName, - @NotNull Class baseTestClass, + @NotNull String suiteTestClassFqName, + @NotNull String baseTestClassFqName, @NotNull Collection testClassModels ) { - this.suiteClassPackage = suiteClassPackage; - this.suiteClassName = suiteClassName; - this.baseTestClassPackage = baseTestClass.getPackage().getName(); - this.baseTestClassName = baseTestClass.getSimpleName(); - this.testClassModels = Lists.newArrayList(testClassModels); + this.baseTestClassPackage = StringsKt.substringBeforeLast(baseTestClassFqName, '.', ""); + this.baseTestClassName = StringsKt.substringAfterLast(baseTestClassFqName, '.', baseTestClassFqName); + this.suiteClassPackage = StringsKt.substringBeforeLast(suiteTestClassFqName, '.', baseTestClassPackage); + this.suiteClassName = StringsKt.substringAfterLast(suiteTestClassFqName, '.', suiteTestClassFqName); + this.testClassModels = new ArrayList<>(testClassModels); this.testSourceFilePath = baseDir + "/" + this.suiteClassPackage.replace(".", "/") + "/" + this.suiteClassName + ".java"; @@ -163,9 +157,7 @@ public class TestGenerator { boolean first = true; - for (Iterator iterator = testMethods.iterator(); iterator.hasNext(); ) { - MethodModel methodModel = iterator.next(); - + for (MethodModel methodModel : testMethods) { if (!methodModel.shouldBeGenerated()) continue; if (first) { @@ -178,8 +170,7 @@ public class TestGenerator { generateTestMethod(p, methodModel); } - for (Iterator iterator = innerTestClasses.iterator(); iterator.hasNext(); ) { - TestClassModel innerTestClass = iterator.next(); + for (TestClassModel innerTestClass : innerTestClasses) { if (!innerTestClass.isEmpty()) { if (first) { first = false;