Introduce base class for codegen and diagnostic tests

Extract base TestFile and TestModule classes.
 Move coroutinePackage related logic to base class
This commit is contained in:
Mikhael Bogdanov
2020-02-20 17:01:07 +01:00
parent b031706ea9
commit a795c38eb7
29 changed files with 257 additions and 188 deletions
@@ -22,7 +22,6 @@ import com.sun.jdi.ObjectReference
import org.jetbrains.eval4j.ObjectValue
import org.jetbrains.eval4j.Value
import org.jetbrains.eval4j.jdi.asValue
import org.jetbrains.kotlin.codegen.CodegenTestCase.TestFile
import org.jetbrains.kotlin.idea.KotlinFileType
import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinCodeFragmentFactory
import org.jetbrains.kotlin.idea.debugger.test.preference.DebuggerPreferences
@@ -32,6 +31,7 @@ import org.jetbrains.kotlin.idea.debugger.test.util.SteppingInstruction
import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.test.InTextDirectivesUtils.findLinesWithPrefixesRemoved
import org.jetbrains.kotlin.test.InTextDirectivesUtils.findStringWithPrefixes
import org.jetbrains.kotlin.test.KotlinBaseTest
import java.io.File
import javax.swing.tree.TreeNode
@@ -254,7 +254,7 @@ abstract class AbstractKotlinEvaluateExpressionTest : KotlinDescriptorTestCaseWi
return this.toString()
}
private fun loadExpressions(testFile: TestFile): List<CodeFragment> {
private fun loadExpressions(testFile: KotlinBaseTest.TestFile): List<CodeFragment> {
val directives = findLinesWithPrefixesRemoved(testFile.content, "// EXPRESSION: ")
val expected = findLinesWithPrefixesRemoved(testFile.content, "// RESULT: ")
assert(directives.size == expected.size) { "Sizes of test directives are different" }
@@ -276,7 +276,7 @@ abstract class AbstractKotlinEvaluateExpressionTest : KotlinDescriptorTestCaseWi
return codeFragments
}
private fun loadDebugLabels(testFile: TestFile): List<DebugLabel> {
private fun loadDebugLabels(testFile: KotlinBaseTest.TestFile): List<DebugLabel> {
return findLinesWithPrefixesRemoved(testFile.content, "// DEBUG_LABEL: ")
.map { text ->
val labelParts = text.split("=")
@@ -19,7 +19,6 @@ import org.jetbrains.kotlin.caches.resolve.KotlinCacheService
import org.jetbrains.kotlin.cli.common.output.writeAllTo
import org.jetbrains.kotlin.cli.jvm.compiler.findMainClass
import org.jetbrains.kotlin.codegen.ClassBuilderFactories
import org.jetbrains.kotlin.codegen.CodegenTestCase.TestFile
import org.jetbrains.kotlin.codegen.CodegenTestUtil
import org.jetbrains.kotlin.codegen.DefaultCodegenFactory
import org.jetbrains.kotlin.codegen.KotlinCodegenFacade
@@ -30,6 +29,7 @@ import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.config.JvmTarget
import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.KotlinBaseTest.TestFile
import org.jetbrains.kotlin.test.MockLibraryUtil
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
import java.io.File
@@ -21,7 +21,6 @@ import com.intellij.openapi.vfs.VfsUtil
import com.intellij.psi.PsiFile
import com.intellij.testFramework.EdtTestUtil
import com.intellij.xdebugger.XDebugSession
import org.jetbrains.kotlin.codegen.CodegenTestCase.TestFile
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime
import org.jetbrains.kotlin.config.JvmTarget
import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinDebuggerCaches
@@ -31,6 +30,7 @@ import org.jetbrains.kotlin.idea.debugger.test.util.KotlinOutputChecker
import org.jetbrains.kotlin.idea.debugger.test.util.LogPropagator
import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
import org.jetbrains.kotlin.test.KotlinBaseTest.TestFile
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.TestMetadata
import org.jetbrains.kotlin.test.isIgnoredInDatabaseWithLog
@@ -125,7 +125,7 @@ abstract class KotlinDescriptorTestCase : DescriptorTestCase() {
}
private fun createTestFiles(wholeFile: File, wholeFileContents: String): TestFiles {
val testFiles = org.jetbrains.kotlin.test.TestFiles.createTestFiles<Void, TestFile>(
val testFiles = org.jetbrains.kotlin.test.TestFiles.createTestFiles(
wholeFile.name,
wholeFileContents,
object : org.jetbrains.kotlin.test.TestFiles.TestFileFactoryNoModules<TestFile>() {
@@ -5,7 +5,7 @@
package org.jetbrains.kotlin.idea.debugger.test.util
import org.jetbrains.kotlin.codegen.CodegenTestCase
import org.jetbrains.kotlin.test.KotlinBaseTest.TestFile
enum class SteppingInstructionKind(val directiveName: String) {
StepInto("STEP_INTO"),
@@ -19,11 +19,11 @@ enum class SteppingInstructionKind(val directiveName: String) {
class SteppingInstruction(val kind: SteppingInstructionKind, val arg: Int) {
companion object {
fun parse(file: CodegenTestCase.TestFile): List<SteppingInstruction> {
fun parse(file: TestFile): List<SteppingInstruction> {
return parse(file, Companion::parseLine)
}
fun parseSingle(file: CodegenTestCase.TestFile, kind: SteppingInstructionKind): SteppingInstruction? {
fun parseSingle(file: TestFile, kind: SteppingInstructionKind): SteppingInstruction? {
val instructions = parse(file) { line -> parseKind(line, kind) }
if (instructions.size > 1) {
error("Several instructions found for kind $kind")
@@ -32,7 +32,7 @@ class SteppingInstruction(val kind: SteppingInstructionKind, val arg: Int) {
return instructions.singleOrNull()
}
private fun parse(file: CodegenTestCase.TestFile, processor: (String) -> SteppingInstruction?): List<SteppingInstruction> {
private fun parse(file: TestFile, processor: (String) -> SteppingInstruction?): List<SteppingInstruction> {
return file.content.lineSequence()
.map { it.trimStart() }
.filter { it.startsWith("// ") }