diff --git a/compiler/tests-against-klib/tests/org/jetbrains/kotlin/generators/tests/GenerateCompilerTestsAgainstKlib.kt b/compiler/tests-against-klib/tests/org/jetbrains/kotlin/generators/tests/GenerateCompilerTestsAgainstKlib.kt index 0aa0b6811e3..a626b5eeb46 100644 --- a/compiler/tests-against-klib/tests/org/jetbrains/kotlin/generators/tests/GenerateCompilerTestsAgainstKlib.kt +++ b/compiler/tests-against-klib/tests/org/jetbrains/kotlin/generators/tests/GenerateCompilerTestsAgainstKlib.kt @@ -6,13 +6,13 @@ package org.jetbrains.kotlin.generators.tests import org.jetbrains.kotlin.codegen.ir.AbstractCompileKotlinAgainstKlibTest -import org.jetbrains.kotlin.generators.tests.generator.testGroupSuite +import org.jetbrains.kotlin.generators.tests.generator.generateTestGroupSuite import org.jetbrains.kotlin.test.TargetBackend fun main(args: Array) { System.setProperty("java.awt.headless", "true") - testGroupSuite(args) { + generateTestGroupSuite(args) { testGroup("compiler/tests-against-klib/tests", "compiler/testData") { testClass { model("codegen/boxKlib", targetBackend = TargetBackend.JVM_IR) diff --git a/compiler/tests-java8/tests/org/jetbrains/kotlin/generators/tests/GenerateJava8Tests.kt b/compiler/tests-java8/tests/org/jetbrains/kotlin/generators/tests/GenerateJava8Tests.kt index 4bcae72e317..6b3ea576df3 100644 --- a/compiler/tests-java8/tests/org/jetbrains/kotlin/generators/tests/GenerateJava8Tests.kt +++ b/compiler/tests-java8/tests/org/jetbrains/kotlin/generators/tests/GenerateJava8Tests.kt @@ -21,7 +21,7 @@ import org.jetbrains.kotlin.checkers.AbstractForeignJava8AnnotationsNoAnnotation import org.jetbrains.kotlin.checkers.AbstractForeignJava8AnnotationsTest import org.jetbrains.kotlin.checkers.AbstractJspecifyAnnotationsTest import org.jetbrains.kotlin.checkers.javac.AbstractJavacForeignJava8AnnotationsTest -import org.jetbrains.kotlin.generators.tests.generator.testGroupSuite +import org.jetbrains.kotlin.generators.tests.generator.generateTestGroupSuite import org.jetbrains.kotlin.jvm.compiler.AbstractLoadJava8Test import org.jetbrains.kotlin.jvm.compiler.AbstractLoadJava8WithPsiClassReadingTest import org.jetbrains.kotlin.jvm.compiler.javac.AbstractLoadJava8UsingJavacTest @@ -30,7 +30,7 @@ import org.jetbrains.kotlin.resolve.calls.AbstractEnhancedSignaturesResolvedCall fun main(args: Array) { System.setProperty("java.awt.headless", "true") - testGroupSuite(args) { + generateTestGroupSuite(args) { testGroup("compiler/tests-java8/tests", "compiler/testData") { testClass { model("foreignAnnotationsJava8/tests", excludeDirs = listOf("jspecify")) diff --git a/compiler/tests-spec/tests/org/jetbrains/kotlin/spec/utils/tasks/GenerateSpecTests.kt b/compiler/tests-spec/tests/org/jetbrains/kotlin/spec/utils/tasks/GenerateSpecTests.kt index 9c00eefb727..911ab6d5df2 100644 --- a/compiler/tests-spec/tests/org/jetbrains/kotlin/spec/utils/tasks/GenerateSpecTests.kt +++ b/compiler/tests-spec/tests/org/jetbrains/kotlin/spec/utils/tasks/GenerateSpecTests.kt @@ -5,7 +5,7 @@ package org.jetbrains.kotlin.spec.utils.tasks -import org.jetbrains.kotlin.generators.tests.generator.testGroupSuite +import org.jetbrains.kotlin.generators.tests.generator.generateTestGroupSuite import org.jetbrains.kotlin.spec.checkers.AbstractDiagnosticsTestSpec import org.jetbrains.kotlin.spec.checkers.AbstractFirDiagnosticsTestSpec import org.jetbrains.kotlin.spec.codegen.AbstractBlackBoxCodegenTestSpec @@ -39,7 +39,7 @@ fun detectDirsWithTestsMapFileOnly(dirName: String): List { fun generateTests() { val excludedFirTestdataPattern = "^(.+)\\.fir\\.kts?\$" - testGroupSuite { + generateTestGroupSuite { testGroup(SPEC_TEST_PATH, SPEC_TESTDATA_PATH) { testClass { model( diff --git a/compiler/tests/org/jetbrains/kotlin/generators/tests/GenerateCompilerTests.kt b/compiler/tests/org/jetbrains/kotlin/generators/tests/GenerateCompilerTests.kt index 74186a873d9..e5c647abf35 100644 --- a/compiler/tests/org/jetbrains/kotlin/generators/tests/GenerateCompilerTests.kt +++ b/compiler/tests/org/jetbrains/kotlin/generators/tests/GenerateCompilerTests.kt @@ -30,7 +30,7 @@ import org.jetbrains.kotlin.fir.java.AbstractFirOldFrontendLightClassesTest import org.jetbrains.kotlin.fir.java.AbstractFirTypeEnhancementTest import org.jetbrains.kotlin.fir.java.AbstractOwnFirTypeEnhancementTest import org.jetbrains.kotlin.fir.lightTree.AbstractLightTree2FirConverterTestCase -import org.jetbrains.kotlin.generators.tests.generator.testGroupSuite +import org.jetbrains.kotlin.generators.tests.generator.generateTestGroupSuite import org.jetbrains.kotlin.generators.util.KT_OR_KTS_WITHOUT_DOTS_IN_NAME import org.jetbrains.kotlin.generators.util.KT_WITHOUT_DOTS_IN_NAME import org.jetbrains.kotlin.integration.AbstractAntTaskTest @@ -68,7 +68,7 @@ fun main(args: Array) { val excludedFirTestdataPattern = "^(.+)\\.fir\\.kts?\$" - testGroupSuite(args) { + generateTestGroupSuite(args) { testGroup("compiler/tests-gen", "compiler/testData") { testClass(suiteTestClassName = "DiagnosticsTestGenerated") { model("diagnostics/tests", pattern = "^(.*)\\.kts?$", excludedPattern = excludedFirTestdataPattern) diff --git a/core/descriptors.runtime/tests/org/jetbrains/kotlin/generators/tests/GenerateRuntimeDescriptorTests.kt b/core/descriptors.runtime/tests/org/jetbrains/kotlin/generators/tests/GenerateRuntimeDescriptorTests.kt index 1820496d249..8be52e056a7 100644 --- a/core/descriptors.runtime/tests/org/jetbrains/kotlin/generators/tests/GenerateRuntimeDescriptorTests.kt +++ b/core/descriptors.runtime/tests/org/jetbrains/kotlin/generators/tests/GenerateRuntimeDescriptorTests.kt @@ -16,14 +16,14 @@ package org.jetbrains.kotlin.generators.tests -import org.jetbrains.kotlin.generators.tests.generator.testGroupSuite +import org.jetbrains.kotlin.generators.tests.generator.generateTestGroupSuite import org.jetbrains.kotlin.jvm.runtime.AbstractJvm8RuntimeDescriptorLoaderTest import org.jetbrains.kotlin.jvm.runtime.AbstractJvmRuntimeDescriptorLoaderTest fun main(args: Array) { System.setProperty("java.awt.headless", "true") - testGroupSuite(args) { + generateTestGroupSuite(args) { testGroup("core/descriptors.runtime/tests", "compiler/testData") { testClass { model("loadJava/compiledKotlin") diff --git a/generators/test-generator/tests/org/jetbrains/kotlin/generators/tests/generator/TestGenerationDSL.kt b/generators/test-generator/tests/org/jetbrains/kotlin/generators/tests/generator/TestGenerationDSL.kt index 9d8b5b5d1a3..2e7c0a75ab6 100644 --- a/generators/test-generator/tests/org/jetbrains/kotlin/generators/tests/generator/TestGenerationDSL.kt +++ b/generators/test-generator/tests/org/jetbrains/kotlin/generators/tests/generator/TestGenerationDSL.kt @@ -8,7 +8,6 @@ package org.jetbrains.kotlin.generators.tests.generator import junit.framework.TestCase import org.jetbrains.kotlin.generators.tests.generator.InconsistencyChecker.Companion.hasDryRunArg import org.jetbrains.kotlin.generators.tests.generator.InconsistencyChecker.Companion.inconsistencyChecker -import org.jetbrains.kotlin.generators.tests.generator.generators.TestGenerator import org.jetbrains.kotlin.generators.tests.generator.generators.impl.* import org.jetbrains.kotlin.test.TargetBackend import java.io.File @@ -21,8 +20,11 @@ class TestGroup( val testRunnerMethodName: String, val additionalRunnerArguments: List = emptyList(), val annotations: List = emptyList(), - private val dryRun: Boolean = false ) { + private val _testClasses: MutableList = mutableListOf() + val testClasses: List + get() = _testClasses + inline fun testClass( suiteTestClassName: String = getDefaultSuiteTestClassName(T::class.java.simpleName), useJunit4: Boolean = false, @@ -39,11 +41,7 @@ class TestGroup( annotations: List = emptyList(), init: TestClass.() -> Unit ) { - val testClass = TestClass(baseTestClassName, suiteTestClassName, useJunit4, annotations).apply(init) - val (changed, testSourceFilePath) = TestGeneratorImpl.generateAndSave(testClass, dryRun) - if (changed) { - inconsistencyChecker(dryRun).add(testSourceFilePath) - } + _testClasses += TestClass(baseTestClassName, suiteTestClassName, useJunit4, annotations).apply(init) } inner class TestClass( @@ -99,20 +97,38 @@ class TestGroup( } fun testGroupSuite( + init: TestGroupSuite.() -> Unit +): TestGroupSuite { + return TestGroupSuite().apply(init) +} + +fun generateTestGroupSuite( args: Array, init: TestGroupSuite.() -> Unit ) { - testGroupSuite(hasDryRunArg(args), init) + generateTestGroupSuite(hasDryRunArg(args), init) } -fun testGroupSuite( +fun generateTestGroupSuite( dryRun: Boolean = false, init: TestGroupSuite.() -> Unit ) { - TestGroupSuite(dryRun).init() + val suite = testGroupSuite(init) + for (testGroup in suite.testGroups) { + for (testClass in testGroup.testClasses) { + val (changed, testSourceFilePath) = TestGeneratorImpl.generateAndSave(testClass, dryRun) + if (changed) { + inconsistencyChecker(dryRun).add(testSourceFilePath) + } + } + } } -class TestGroupSuite(private val dryRun: Boolean) { +class TestGroupSuite { + private val _testGroups = mutableListOf() + val testGroups: List + get() = _testGroups + fun testGroup( testsRoot: String, testDataRoot: String, @@ -120,13 +136,12 @@ class TestGroupSuite(private val dryRun: Boolean) { additionalRunnerArguments: List = emptyList(), init: TestGroup.() -> Unit ) { - TestGroup( + _testGroups += TestGroup( testsRoot, testDataRoot, testRunnerMethodName, additionalRunnerArguments, - dryRun = dryRun - ).init() + ).apply(init) } } diff --git a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt index 6546fe93f51..0c357ac10e4 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt +++ b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt @@ -26,7 +26,7 @@ import org.jetbrains.kotlin.formatter.AbstractFormatterTest import org.jetbrains.kotlin.formatter.AbstractTypingIndentationTestBase import org.jetbrains.kotlin.generators.tests.generator.TestGroup import org.jetbrains.kotlin.generators.tests.generator.muteExtraSuffix -import org.jetbrains.kotlin.generators.tests.generator.testGroupSuite +import org.jetbrains.kotlin.generators.tests.generator.generateTestGroupSuite import org.jetbrains.kotlin.generators.util.KT_OR_KTS import org.jetbrains.kotlin.generators.util.KT_OR_KTS_WITHOUT_DOTS_IN_NAME import org.jetbrains.kotlin.generators.util.KT_WITHOUT_DOTS_IN_NAME @@ -195,7 +195,7 @@ import org.jetbrains.kotlinx.serialization.AbstractSerializationPluginDiagnostic fun main(args: Array) { System.setProperty("java.awt.headless", "true") - testGroupSuite(args) { + generateTestGroupSuite(args) { testGroup("idea/jvm-debugger/jvm-debugger-test/test", "idea/jvm-debugger/jvm-debugger-test/testData") { testClass { model( diff --git a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as41 b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as41 index 12c50084cc5..a63098ddd2d 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as41 +++ b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as41 @@ -31,7 +31,7 @@ import org.jetbrains.kotlin.formatter.AbstractFormatterTest import org.jetbrains.kotlin.formatter.AbstractTypingIndentationTestBase import org.jetbrains.kotlin.generators.tests.generator.TestGroup import org.jetbrains.kotlin.generators.tests.generator.muteExtraSuffix -import org.jetbrains.kotlin.generators.tests.generator.testGroupSuite +import org.jetbrains.kotlin.generators.tests.generator.generateTestGroupSuite import org.jetbrains.kotlin.generators.util.KT_OR_KTS import org.jetbrains.kotlin.generators.util.KT_OR_KTS_WITHOUT_DOTS_IN_NAME import org.jetbrains.kotlin.generators.util.KT_WITHOUT_DOTS_IN_NAME @@ -167,7 +167,7 @@ import org.jetbrains.kotlinx.serialization.AbstractSerializationIrBytecodeListin fun main(args: Array) { System.setProperty("java.awt.headless", "true") - testGroupSuite(args) { + generateTestGroupSuite(args) { testGroup("idea/jvm-debugger/jvm-debugger-test/test", "idea/jvm-debugger/jvm-debugger-test/testData") { testClass { model( diff --git a/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt b/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt index e341e544492..31eee6f2f80 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt @@ -5,7 +5,7 @@ package org.jetbrains.kotlin.generators.tests -import org.jetbrains.kotlin.generators.tests.generator.testGroupSuite +import org.jetbrains.kotlin.generators.tests.generator.generateTestGroupSuite import org.jetbrains.kotlin.js.test.AbstractDceTest import org.jetbrains.kotlin.js.test.AbstractJsLineNumberTest import org.jetbrains.kotlin.js.test.es6.semantics.* @@ -20,7 +20,7 @@ fun main(args: Array) { // TODO: repair these tests //generateTestDataForReservedWords() - testGroupSuite(args) { + generateTestGroupSuite(args) { testGroup("js/js.tests/tests-gen", "js/js.translator/testData", testRunnerMethodName = "runTest0") { testClass { model("box/", pattern = "^([^_](.+))\\.kt$", targetBackend = TargetBackend.JS) diff --git a/libraries/tools/kotlinp/test/org/jetbrains/kotlin/kotlinp/test/GenerateKotlinpTests.kt b/libraries/tools/kotlinp/test/org/jetbrains/kotlin/kotlinp/test/GenerateKotlinpTests.kt index fe977b1279a..d8447c04020 100644 --- a/libraries/tools/kotlinp/test/org/jetbrains/kotlin/kotlinp/test/GenerateKotlinpTests.kt +++ b/libraries/tools/kotlinp/test/org/jetbrains/kotlin/kotlinp/test/GenerateKotlinpTests.kt @@ -5,12 +5,12 @@ package org.jetbrains.kotlin.kotlinp.test -import org.jetbrains.kotlin.generators.tests.generator.testGroupSuite +import org.jetbrains.kotlin.generators.tests.generator.generateTestGroupSuite fun main(args: Array) { System.setProperty("java.awt.headless", "true") - testGroupSuite(args) { + generateTestGroupSuite(args) { testGroup("libraries/tools/kotlinp/test", "libraries/tools/kotlinp/testData") { testClass { model("")