Support FULL_JDK directive in diagnostic tests

This commit is contained in:
Alexander Udalov
2017-07-31 13:01:14 -07:00
parent 7601666ec0
commit 8db736e2b4
8 changed files with 21 additions and 12 deletions
@@ -72,7 +72,7 @@ abstract class BaseDiagnosticsTest : KotlinMultiFileTestWithJava<TestModule, Tes
}) })
} }
environment = createEnvironment() environment = createEnvironment(file)
analyzeAndCheck(file, testFiles) analyzeAndCheck(file, testFiles)
} }
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.config.ContentRootsKt;
import org.jetbrains.kotlin.config.JVMConfigurationKeys; import org.jetbrains.kotlin.config.JVMConfigurationKeys;
import org.jetbrains.kotlin.script.StandardScriptDefinition; import org.jetbrains.kotlin.script.StandardScriptDefinition;
import org.jetbrains.kotlin.test.ConfigurationKind; import org.jetbrains.kotlin.test.ConfigurationKind;
import org.jetbrains.kotlin.test.InTextDirectivesUtils;
import org.jetbrains.kotlin.test.KotlinTestUtils; import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.TestJdkKind; import org.jetbrains.kotlin.test.TestJdkKind;
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase; import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase;
@@ -73,10 +74,10 @@ public abstract class KotlinMultiFileTestWithJava<M, F> extends KtUsefulTestCase
} }
@NotNull @NotNull
protected KotlinCoreEnvironment createEnvironment() { protected KotlinCoreEnvironment createEnvironment(@NotNull File file) {
CompilerConfiguration configuration = KotlinTestUtils.newConfiguration( CompilerConfiguration configuration = KotlinTestUtils.newConfiguration(
getConfigurationKind(), getConfigurationKind(),
getTestJdkKind(), getTestJdkKind(file),
CollectionsKt.plus(Collections.singletonList(KotlinTestUtils.getAnnotationsJar()), getExtraClasspath()), CollectionsKt.plus(Collections.singletonList(KotlinTestUtils.getAnnotationsJar()), getExtraClasspath()),
isJavaSourceRootNeeded() ? Collections.singletonList(javaFilesDir) : Collections.emptyList() isJavaSourceRootNeeded() ? Collections.singletonList(javaFilesDir) : Collections.emptyList()
); );
@@ -108,8 +109,10 @@ public abstract class KotlinMultiFileTestWithJava<M, F> extends KtUsefulTestCase
} }
@NotNull @NotNull
protected TestJdkKind getTestJdkKind() { protected TestJdkKind getTestJdkKind(@NotNull File file) {
return TestJdkKind.MOCK_JDK; return InTextDirectivesUtils.isDirectiveDefined(FilesKt.readText(file, Charsets.UTF_8), "FULL_JDK")
? TestJdkKind.FULL_JDK
: TestJdkKind.MOCK_JDK;
} }
@NotNull @NotNull
@@ -52,7 +52,7 @@ public abstract class AbstractCompilerLightClassTest extends KotlinMultiFileTest
@Override @Override
protected void doMultiFileTest(File file, Map<String, ModuleAndDependencies> modules, List<Void> files) throws IOException { protected void doMultiFileTest(File file, Map<String, ModuleAndDependencies> modules, List<Void> files) throws IOException {
KotlinCoreEnvironment environment = createEnvironment(); KotlinCoreEnvironment environment = createEnvironment(file);
File expectedFile = KotlinTestUtils.replaceExtension(file, "java"); File expectedFile = KotlinTestUtils.replaceExtension(file, "java");
LightClassTestCommon.INSTANCE.testLightClass(expectedFile, file, s -> { LightClassTestCommon.INSTANCE.testLightClass(expectedFile, file, s -> {
try { try {
@@ -21,6 +21,8 @@ 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;
public abstract class AbstractDiagnosticsWithModifiedMockJdkTest extends AbstractDiagnosticsTest { public abstract class AbstractDiagnosticsWithModifiedMockJdkTest extends AbstractDiagnosticsTest {
@NotNull @NotNull
@Override @Override
@@ -30,7 +32,7 @@ public abstract class AbstractDiagnosticsWithModifiedMockJdkTest extends Abstrac
@NotNull @NotNull
@Override @Override
protected TestJdkKind getTestJdkKind() { protected TestJdkKind getTestJdkKind(@NotNull File file) {
return TestJdkKind.MODIFIED_MOCK_JDK; return TestJdkKind.MODIFIED_MOCK_JDK;
} }
} }
@@ -20,6 +20,8 @@ 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;
public abstract class AbstractDiagnosticsWithFullJdkTest extends AbstractDiagnosticsTest { public abstract class AbstractDiagnosticsWithFullJdkTest extends AbstractDiagnosticsTest {
@NotNull @NotNull
@Override @Override
@@ -29,7 +31,7 @@ public abstract class AbstractDiagnosticsWithFullJdkTest extends AbstractDiagnos
@NotNull @NotNull
@Override @Override
protected TestJdkKind getTestJdkKind() { protected TestJdkKind getTestJdkKind(@NotNull File file) {
return TestJdkKind.FULL_JDK; return TestJdkKind.FULL_JDK;
} }
} }
@@ -34,7 +34,7 @@ public abstract class AbstractDiagnosticsWithJdk9Test extends AbstractDiagnostic
@NotNull @NotNull
@Override @Override
protected TestJdkKind getTestJdkKind() { protected TestJdkKind getTestJdkKind(@NotNull File file) {
return TestJdkKind.FULL_JDK_9; return TestJdkKind.FULL_JDK_9;
} }
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.checkers.AbstractDiagnosticsTest
import org.jetbrains.kotlin.config.JVMConfigurationKeys import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate
import java.io.File
import kotlin.script.extensions.SamWithReceiverAnnotations import kotlin.script.extensions.SamWithReceiverAnnotations
import kotlin.script.templates.ScriptTemplateDefinition import kotlin.script.templates.ScriptTemplateDefinition
@@ -28,7 +29,7 @@ abstract class AbstractSamWithReceiverScriptTest : AbstractDiagnosticsTest() {
private val TEST_ANNOTATIONS = emptyList<String>() private val TEST_ANNOTATIONS = emptyList<String>()
} }
override fun createEnvironment() = super.createEnvironment().apply { override fun createEnvironment(file: File) = super.createEnvironment(file).apply {
StorageComponentContainerContributor.registerExtension(project, CliSamWithReceiverComponentContributor(TEST_ANNOTATIONS)) StorageComponentContainerContributor.registerExtension(project, CliSamWithReceiverComponentContributor(TEST_ANNOTATIONS))
val def = KotlinScriptDefinitionFromAnnotatedTemplate(ScriptForSamWithReceivers::class, null, null, emptyMap()) val def = KotlinScriptDefinitionFromAnnotatedTemplate(ScriptForSamWithReceivers::class, null, null, emptyMap())
configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, def) configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, def)
@@ -18,13 +18,14 @@ package org.jetbrains.kotlin.samWithReceiver
import org.jetbrains.kotlin.checkers.AbstractDiagnosticsTest import org.jetbrains.kotlin.checkers.AbstractDiagnosticsTest
import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
import java.io.File
abstract class AbstractSamWithReceiverTest : AbstractDiagnosticsTest() { abstract class AbstractSamWithReceiverTest : AbstractDiagnosticsTest() {
private companion object { private companion object {
private val TEST_ANNOTATIONS = listOf("SamWithReceiver") private val TEST_ANNOTATIONS = listOf("SamWithReceiver")
} }
override fun createEnvironment() = super.createEnvironment().apply { override fun createEnvironment(file: File) = super.createEnvironment(file).apply {
StorageComponentContainerContributor.registerExtension(project, CliSamWithReceiverComponentContributor(TEST_ANNOTATIONS)) StorageComponentContainerContributor.registerExtension(project, CliSamWithReceiverComponentContributor(TEST_ANNOTATIONS))
} }
} }