[TEST-GEN] Move all generation data to TestGroup.TestClass

This commit is contained in:
Dmitriy Novozhilov
2020-11-09 11:45:24 +03:00
parent c51ea6b142
commit 2a73aaba4d
3 changed files with 19 additions and 26 deletions
@@ -39,20 +39,22 @@ class TestGroup(
annotations: List<AnnotationModel> = emptyList(), annotations: List<AnnotationModel> = emptyList(),
init: TestClass.() -> Unit init: TestClass.() -> Unit
) { ) {
val generationData = TestGenerator.GenerationData( val testClass = TestClass(baseTestClassName, suiteTestClassName, useJunit4, annotations).apply(init)
testsRoot, val (changed, testSourceFilePath) = TestGeneratorImpl.generateAndSave(testClass, dryRun)
suiteTestClassName,
baseTestClassName,
TestClass(annotations).apply(init).testModels,
useJunit4,
)
val (changed, testSourceFilePath) = TestGeneratorImpl.generateAndSave(generationData, dryRun)
if (changed) { if (changed) {
inconsistencyChecker(dryRun).add(testSourceFilePath) inconsistencyChecker(dryRun).add(testSourceFilePath)
} }
} }
inner class TestClass(val annotations: List<AnnotationModel>) { inner class TestClass(
val baseTestClassName: String,
val suiteTestClassName: String,
val useJunit4: Boolean,
val annotations: List<AnnotationModel>
) {
val baseDir: String
get() = this@TestGroup.testsRoot
val testModels = ArrayList<TestClassModel>() val testModels = ArrayList<TestClassModel>()
fun model( fun model(
@@ -6,7 +6,7 @@
package org.jetbrains.kotlin.generators.tests.generator.generators package org.jetbrains.kotlin.generators.tests.generator.generators
import org.jetbrains.kotlin.generators.tests.generator.MethodModel import org.jetbrains.kotlin.generators.tests.generator.MethodModel
import org.jetbrains.kotlin.generators.tests.generator.TestClassModel import org.jetbrains.kotlin.generators.tests.generator.TestGroup
abstract class TestGenerator( abstract class TestGenerator(
methodGenerators: List<MethodGenerator<*>> methodGenerators: List<MethodGenerator<*>>
@@ -14,15 +14,7 @@ abstract class TestGenerator(
protected val methodGenerators: Map<MethodModel.Kind, MethodGenerator<*>> = protected val methodGenerators: Map<MethodModel.Kind, MethodGenerator<*>> =
methodGenerators.associateBy { it.kind }.withDefault { error("Generator for method with kind $it not found") } methodGenerators.associateBy { it.kind }.withDefault { error("Generator for method with kind $it not found") }
abstract fun generateAndSave(data: GenerationData, dryRun: Boolean): GenerationResult abstract fun generateAndSave(testClass: TestGroup.TestClass, dryRun: Boolean): GenerationResult
data class GenerationData(
val baseDir: String,
val suiteTestClassFqName: String,
val baseTestClassFqName: String,
val testClassModels: Collection<TestClassModel>,
val useJunit4: Boolean
)
data class GenerationResult(val newFileGenerated: Boolean, val testSourceFilePath: String) data class GenerationResult(val newFileGenerated: Boolean, val testSourceFilePath: String)
} }
@@ -28,14 +28,13 @@ private val METHOD_GENERATORS = listOf(
) )
object TestGeneratorImpl : TestGenerator(METHOD_GENERATORS) { object TestGeneratorImpl : TestGenerator(METHOD_GENERATORS) {
override fun generateAndSave(data: GenerationData, dryRun: Boolean): GenerationResult { override fun generateAndSave(testClass: TestGroup.TestClass, dryRun: Boolean): GenerationResult {
val (baseDir, suiteTestClassFqName, baseTestClassFqName, testClassModels, useJunit4) = data
val generatorInstance = TestGeneratorImplInstance( val generatorInstance = TestGeneratorImplInstance(
baseDir, testClass.baseDir,
suiteTestClassFqName, testClass.suiteTestClassName,
baseTestClassFqName, testClass.baseTestClassName,
testClassModels, testClass.testModels,
useJunit4, testClass.useJunit4,
methodGenerators methodGenerators
) )
return generatorInstance.generateAndSave(dryRun) return generatorInstance.generateAndSave(dryRun)