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