Merge 'getTestJdkKind' and 'getJdkKind' and move to base class

This commit is contained in:
Mikhael Bogdanov
2020-02-25 11:32:41 +01:00
parent 6e855f3bbd
commit 999b762288
15 changed files with 31 additions and 39 deletions
@@ -219,7 +219,7 @@ class CodegenTestsOnAndroidGenerator private constructor(private val pathManager
if (hasBoxMethod(fullFileText)) {
val testFiles = createTestFiles(file, fullFileText)
val kind = extractConfigurationKind(testFiles)
val jdkKind = getJdkKind(testFiles)
val jdkKind = getTestJdkKind(testFiles)
val keyConfiguration = CompilerConfiguration()
updateConfigurationByDirectivesInTestFiles(testFiles, keyConfiguration)
@@ -7,14 +7,13 @@ package org.jetbrains.kotlin.fir
import org.jetbrains.kotlin.test.ConfigurationKind
import org.jetbrains.kotlin.test.TestJdkKind
import java.io.File
abstract class AbstractFirDiagnosticsWithStdlibTest : AbstractFirDiagnosticsTest() {
override fun getConfigurationKind(): ConfigurationKind {
return ConfigurationKind.ALL
}
override fun getTestJdkKind(file: File): TestJdkKind {
override fun getTestJdkKind(testFiles: MutableList<TestFile>): TestJdkKind {
return TestJdkKind.FULL_JDK
}
}
@@ -16,11 +16,9 @@ import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.utils.rethrow
import java.io.File
import java.nio.file.Paths
import java.util.*
import java.util.concurrent.TimeUnit
abstract class AbstractCompileKotlinAgainstKlibTest : AbstractBlackBoxCodegenTest() {
lateinit var klibName: String
@@ -35,7 +33,7 @@ abstract class AbstractCompileKotlinAgainstKlibTest : AbstractBlackBoxCodegenTes
val classpath: MutableList<File> = ArrayList()
classpath.add(KotlinTestUtils.getAnnotationsJar())
val configuration = createConfiguration(
configurationKind, CodegenTestCase.getJdkKind(files),
configurationKind, getTestJdkKind(files),
classpath,
listOf(outputDir),
files
@@ -36,7 +36,7 @@ abstract class AbstractCompilerLightClassTest : KotlinMultiFileTestWithJava<Kotl
override fun isKotlinSourceRootNeeded(): Boolean = true
override fun doMultiFileTest(file: File, files: List<TestFile>) {
val environment = createEnvironment(file)
val environment = createEnvironment(file, files)
val expectedFile = KotlinTestUtils.replaceExtension(file, "java")
val allowFrontendExceptions = InTextDirectivesUtils.isDirectiveDefined(file.readText(), "// ALLOW_FRONTEND_EXCEPTION")
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.checkers.AbstractDiagnosticsTest;
import org.jetbrains.kotlin.test.ConfigurationKind;
import org.jetbrains.kotlin.test.TestJdkKind;
import java.io.File;
import java.util.List;
public abstract class AbstractDiagnosticsWithModifiedMockJdkTest extends AbstractDiagnosticsTest {
@NotNull
@@ -32,7 +32,7 @@ public abstract class AbstractDiagnosticsWithModifiedMockJdkTest extends Abstrac
@NotNull
@Override
protected TestJdkKind getTestJdkKind(@NotNull File file) {
protected TestJdkKind getTestJdkKind(@NotNull List<TestFile> testFiles) {
return TestJdkKind.MODIFIED_MOCK_JDK;
}
}
@@ -20,7 +20,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.test.ConfigurationKind;
import org.jetbrains.kotlin.test.TestJdkKind;
import java.io.File;
import java.util.List;
public abstract class AbstractDiagnosticsWithJdk9Test extends AbstractDiagnosticsTest {
@NotNull
@@ -31,7 +31,7 @@ public abstract class AbstractDiagnosticsWithJdk9Test extends AbstractDiagnostic
@NotNull
@Override
protected TestJdkKind getTestJdkKind(@NotNull File file) {
protected TestJdkKind getTestJdkKind(@NotNull List<TestFile> testFiles) {
return TestJdkKind.FULL_JDK_9;
}
}
@@ -54,7 +54,7 @@ abstract class AbstractForeignAnnotationsTest : AbstractDiagnosticsTest() {
override fun getConfigurationKind(): ConfigurationKind = ConfigurationKind.ALL
override fun getTestJdkKind(file: File): TestJdkKind = TestJdkKind.FULL_JDK
override fun getTestJdkKind(testFiles: MutableList<TestFile>): TestJdkKind = TestJdkKind.FULL_JDK
open protected val annotationsPath: String
get() = FOREIGN_ANNOTATIONS_SOURCES_PATH
@@ -91,7 +91,7 @@ abstract class BaseDiagnosticsTest : KotlinMultiFileTestWithJava<TestModule, Tes
wholeFile: File,
files: List<TestFile>
) {
environment = createEnvironment(wholeFile)
environment = createEnvironment(wholeFile, files)
//after environment initialization cause of `tearDown` logic, maybe it's obsolete
if (shouldSkipTest(wholeFile, files)) {
println("${wholeFile.name} test is skipped")
@@ -63,10 +63,13 @@ public abstract class KotlinMultiFileTestWithJava<M extends KotlinBaseTest.TestM
}
@NotNull
protected KotlinCoreEnvironment createEnvironment(@NotNull File file) {
protected KotlinCoreEnvironment createEnvironment(
@NotNull File file,
@NotNull List<TestFile> files
) {
CompilerConfiguration configuration = KotlinTestUtils.newConfiguration(
getConfigurationKind(),
getTestJdkKind(file),
getTestJdkKind(files),
getClasspath(file),
isJavaSourceRootNeeded() ? Collections.singletonList(javaFilesDir) : Collections.emptyList()
);
@@ -106,13 +109,6 @@ public abstract class KotlinMultiFileTestWithJava<M extends KotlinBaseTest.TestM
return ConfigurationKind.JDK_ONLY;
}
@NotNull
protected TestJdkKind getTestJdkKind(@NotNull File file) {
return InTextDirectivesUtils.isDirectiveDefined(FilesKt.readText(file, Charsets.UTF_8), "FULL_JDK")
? TestJdkKind.FULL_JDK
: TestJdkKind.MOCK_JDK;
}
private List<File> getClasspath(File file) {
List<File> result = new ArrayList<>();
result.add(KotlinTestUtils.getAnnotationsJar());
@@ -98,7 +98,7 @@ public abstract class AbstractCompileKotlinAgainstKotlinTest extends CodegenTest
private ClassFileFactory compileA(@NotNull TestFile testFile, List<TestFile> files) {
Disposable compileDisposable = createDisposable("compileA");
CompilerConfiguration configuration = createConfiguration(
ConfigurationKind.ALL, getJdkKind(files), Collections.singletonList(KotlinTestUtils.getAnnotationsJar()),
ConfigurationKind.ALL, getTestJdkKind(files), Collections.singletonList(KotlinTestUtils.getAnnotationsJar()),
Collections.emptyList(), Collections.singletonList(testFile)
);
@@ -120,7 +120,7 @@ public abstract class AbstractCompileKotlinAgainstKotlinTest extends CodegenTest
private ClassFileFactory compileB(@NotNull TestFile testFile, List<TestFile> files) {
String commonHeader = StringsKt.substringBefore(files.get(0).content, "FILE:", "");
CompilerConfiguration configuration = createConfiguration(
ConfigurationKind.ALL, getJdkKind(files), Lists.newArrayList(KotlinTestUtils.getAnnotationsJar(), aDir),
ConfigurationKind.ALL, getTestJdkKind(files), Lists.newArrayList(KotlinTestUtils.getAnnotationsJar(), aDir),
Collections.emptyList(), Lists.newArrayList(testFile, new TestFile("header", commonHeader))
);
@@ -53,7 +53,7 @@ abstract class AbstractLightAnalysisModeTest : CodegenTestCase() {
assert(!relativePath.startsWith(".."))
val configuration = createConfiguration(
configurationKind, getJdkKind(files), listOf(getAnnotationsJar()), listOfNotNull(writeJavaFiles(files)), files
configurationKind, getTestJdkKind(files), listOf(getAnnotationsJar()), listOfNotNull(writeJavaFiles(files)), files
)
val environment = KotlinCoreEnvironment.createForTests(testRootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)
AnalysisHandlerExtension.registerExtension(environment.project, PartialAnalysisHandlerExtension())
@@ -97,16 +97,6 @@ public abstract class CodegenTestCase extends KotlinBaseTest<KotlinBaseTest.Test
createEnvironmentWithMockJdkAndIdeaAnnotations(configurationKind, Collections.emptyList(), TestJdkKind.MOCK_JDK, javaSourceRoots);
}
@NotNull
protected static TestJdkKind getJdkKind(@NotNull List<TestFile> files) {
for (TestFile file : files) {
if (InTextDirectivesUtils.isDirectiveDefined(file.content, "FULL_JDK")) {
return TestJdkKind.FULL_JDK;
}
}
return TestJdkKind.MOCK_JDK;
}
protected final void createEnvironmentWithMockJdkAndIdeaAnnotations(
@NotNull ConfigurationKind configurationKind,
@NotNull List<TestFile> testFilesWithConfigurationDirectives,
@@ -699,7 +689,7 @@ public abstract class CodegenTestCase extends KotlinBaseTest<KotlinBaseTest.Test
}
CompilerConfiguration configuration = createConfiguration(
configurationKind, getJdkKind(files),
configurationKind, getTestJdkKind(files),
classpath,
ArraysKt.filterNotNull(new File[] {javaSourceDir}),
files
@@ -48,7 +48,7 @@ abstract class AbstractIrGeneratorTestCase : CodegenTestCase() {
}
private fun setupEnvironment(files: List<TestFile>) {
val jdkKind = getJdkKind(files)
val jdkKind = getTestJdkKind(files)
val javacOptions = ArrayList<String>(0)
var addRuntime = false
@@ -46,6 +46,15 @@ abstract class KotlinBaseTest<F : KotlinBaseTest.TestFile> : KtUsefulTestCase()
throw UnsupportedOperationException("Multi-file test cases are not supported in this test")
}
protected open fun getTestJdkKind(files: List<F>): TestJdkKind {
for (file in files) {
if (InTextDirectivesUtils.isDirectiveDefined(file.content, "FULL_JDK")) {
return TestJdkKind.FULL_JDK
}
}
return TestJdkKind.MOCK_JDK
}
open class TestFile(@JvmField val name: String, @JvmField val content: String) : Comparable<TestFile> {
override operator fun compareTo(other: TestFile): Int {
return name.compareTo(other.name)
@@ -27,7 +27,7 @@ abstract class AbstractVisualizer : KotlinMultiFileTestWithJava<KotlinBaseTest.T
override fun doMultiFileTest(file: File, files: List<TestFile>) {
val environment = createEnvironment(file)
val environment = createEnvironment(file, files)
doVisualizerTest(file, environment)
}
@@ -37,7 +37,7 @@ abstract class AbstractVisualizer : KotlinMultiFileTestWithJava<KotlinBaseTest.T
return true
}
override fun getTestJdkKind(file: File): TestJdkKind {
override fun getTestJdkKind(testFiles: MutableList<TestFile>): TestJdkKind {
return TestJdkKind.FULL_JDK
}