Refactor test framework to process directives in one place
Perform directive processing in base test class
This commit is contained in:
+13
-20
@@ -16,33 +16,26 @@
|
||||
|
||||
package org.jetbrains.kotlin.codegen
|
||||
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||
import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
import org.jetbrains.kotlin.test.TestJdkKind
|
||||
import java.io.File
|
||||
|
||||
abstract class AbstractBlackBoxAgainstJavaCodegenTest : AbstractBlackBoxCodegenTest() {
|
||||
override fun compileAndRun(
|
||||
files: List<CodegenTestCase.TestFile>,
|
||||
javaSourceDir: File?,
|
||||
jdkKind: TestJdkKind,
|
||||
javacOptions: List<String>
|
||||
) {
|
||||
val javaOutputDir = javaSourceDir?.let { directory ->
|
||||
CodegenTestUtil.compileJava(findJavaSourcesInDirectory(directory), emptyList(), javacOptions)
|
||||
private lateinit var javaOutputDir: File
|
||||
override fun doMultiFileTest(wholeFile: File, files: MutableList<TestFile>, javaFilesDir: File?) {
|
||||
javaOutputDir = javaFilesDir!!.let { directory ->
|
||||
CodegenTestUtil.compileJava(findJavaSourcesInDirectory(directory), emptyList(), extractJavacOptions(files))
|
||||
}
|
||||
|
||||
val configuration = createConfiguration(
|
||||
ConfigurationKind.ALL, jdkKind,
|
||||
/* classpath = */ listOf(KotlinTestUtils.getAnnotationsJar(), javaOutputDir),
|
||||
/* javaSource = */ emptyList(),
|
||||
files)
|
||||
super.doMultiFileTest(wholeFile, files, null)
|
||||
}
|
||||
|
||||
myEnvironment = KotlinCoreEnvironment.createForTests(testRootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)
|
||||
override fun updateConfiguration(configuration: CompilerConfiguration) {
|
||||
configuration.addJvmClasspathRoots(listOf(javaOutputDir!!))
|
||||
}
|
||||
|
||||
loadMultiFiles(files)
|
||||
blackBox()
|
||||
override fun extractConfigurationKind(files: MutableList<TestFile>): ConfigurationKind {
|
||||
return ConfigurationKind.ALL
|
||||
}
|
||||
}
|
||||
|
||||
+8
-9
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.codegen
|
||||
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||
import org.jetbrains.kotlin.resolve.jvm.extensions.AnalysisHandlerExtension
|
||||
import org.jetbrains.kotlin.resolve.jvm.extensions.PartialAnalysisHandlerExtension
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
@@ -30,17 +31,15 @@ abstract class AbstractKapt3BuilderModeBytecodeShapeTest : CodegenTestCase() {
|
||||
|
||||
override fun doMultiFileTest(wholeFile: File, files: MutableList<TestFile>, javaFilesDir: File?) {
|
||||
val txtFile = File(wholeFile.parentFile, wholeFile.nameWithoutExtension + ".txt")
|
||||
KotlinTestUtils.assertEqualsToFile(txtFile, compile(files, javaFilesDir))
|
||||
compile(files, javaFilesDir)
|
||||
KotlinTestUtils.assertEqualsToFile(txtFile, BytecodeListingTextCollectingVisitor.getText(classFileFactory))
|
||||
}
|
||||
|
||||
private fun compile(files: List<TestFile>, javaFilesDir: File?): String {
|
||||
val classFileFactory = AbstractBytecodeListingTest.compileClasses(
|
||||
testRootDisposable, files, javaFilesDir,
|
||||
TEST_LIGHT_ANALYSIS,
|
||||
setupEnvironment = { env -> AnalysisHandlerExtension.registerExtension(env.project, PartialAnalysisHandlerExtension()) }
|
||||
)
|
||||
|
||||
return BytecodeListingTextCollectingVisitor.getText(classFileFactory)
|
||||
override fun setupEnvironment(environment: KotlinCoreEnvironment) {
|
||||
AnalysisHandlerExtension.registerExtension(environment.project, PartialAnalysisHandlerExtension())
|
||||
}
|
||||
|
||||
override fun getClassBuilderFactory(): ClassBuilderFactory {
|
||||
return TEST_LIGHT_ANALYSIS
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user