Support for custom default jvmTarget in jvm backend tests

This commit is contained in:
Mikhael Bogdanov
2017-04-12 11:47:09 +02:00
parent 2bb5b3881a
commit 806db3852d
2 changed files with 17 additions and 3 deletions
@@ -78,12 +78,15 @@ import static org.jetbrains.kotlin.test.KotlinTestUtils.getAnnotationsJar;
public abstract class CodegenTestCase extends KtUsefulTestCase { public abstract class CodegenTestCase extends KtUsefulTestCase {
private static final String DEFAULT_TEST_FILE_NAME = "a_test"; private static final String DEFAULT_TEST_FILE_NAME = "a_test";
public static final String DEFAULT_JVM_TARGET_FOR_TEST = "kotlin.test.default.jvm.target";
protected KotlinCoreEnvironment myEnvironment; protected KotlinCoreEnvironment myEnvironment;
protected CodegenTestFiles myFiles; protected CodegenTestFiles myFiles;
protected ClassFileFactory classFileFactory; protected ClassFileFactory classFileFactory;
protected GeneratedClassLoader initializedClassLoader; protected GeneratedClassLoader initializedClassLoader;
protected ConfigurationKind configurationKind = ConfigurationKind.JDK_ONLY; protected ConfigurationKind configurationKind = ConfigurationKind.JDK_ONLY;
public final String defaultJvmTarget = System.getProperty(DEFAULT_JVM_TARGET_FOR_TEST);
protected final void createEnvironmentWithMockJdkAndIdeaAnnotations( protected final void createEnvironmentWithMockJdkAndIdeaAnnotations(
@NotNull ConfigurationKind configurationKind, @NotNull ConfigurationKind configurationKind,
@@ -125,7 +128,7 @@ public abstract class CodegenTestCase extends KtUsefulTestCase {
} }
@NotNull @NotNull
protected static CompilerConfiguration createConfiguration( protected CompilerConfiguration createConfiguration(
@NotNull ConfigurationKind kind, @NotNull ConfigurationKind kind,
@NotNull TestJdkKind jdkKind, @NotNull TestJdkKind jdkKind,
@NotNull List<File> classpath, @NotNull List<File> classpath,
@@ -135,6 +138,8 @@ public abstract class CodegenTestCase extends KtUsefulTestCase {
CompilerConfiguration configuration = KotlinTestUtils.newConfiguration(kind, jdkKind, classpath, javaSource); CompilerConfiguration configuration = KotlinTestUtils.newConfiguration(kind, jdkKind, classpath, javaSource);
updateConfigurationByDirectivesInTestFiles(testFilesWithConfigurationDirectives, configuration); updateConfigurationByDirectivesInTestFiles(testFilesWithConfigurationDirectives, configuration);
updateConfiguration(configuration);
setCustomDefaultJvmTarget(configuration);
return configuration; return configuration;
} }
@@ -495,6 +500,15 @@ public abstract class CodegenTestCase extends KtUsefulTestCase {
} }
protected void setCustomDefaultJvmTarget(CompilerConfiguration configuration) {
JvmTarget target = configuration.get(JVMConfigurationKeys.JVM_TARGET);
if (target == null && defaultJvmTarget != null) {
JvmTarget value = JvmTarget.fromString(defaultJvmTarget);
assert value != null : "Can't construct JvmTarget for " + defaultJvmTarget;
configuration.put(JVMConfigurationKeys.JVM_TARGET, value);
}
}
protected void compile( protected void compile(
@NotNull List<TestFile> files, @NotNull List<TestFile> files,
@Nullable File javaSourceDir, @Nullable File javaSourceDir,
@@ -508,7 +522,6 @@ public abstract class CodegenTestCase extends KtUsefulTestCase {
ArraysKt.filterNotNull(new File[] {javaSourceDir}), ArraysKt.filterNotNull(new File[] {javaSourceDir}),
files files
); );
updateConfiguration(configuration);
myEnvironment = KotlinCoreEnvironment.createForTests( myEnvironment = KotlinCoreEnvironment.createForTests(
getTestRootDisposable(), configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES getTestRootDisposable(), configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES
@@ -16,13 +16,14 @@
package org.jetbrains.kotlin.codegen.ir; package org.jetbrains.kotlin.codegen.ir;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.codegen.AbstractBlackBoxCodegenTest; import org.jetbrains.kotlin.codegen.AbstractBlackBoxCodegenTest;
import org.jetbrains.kotlin.config.CompilerConfiguration; import org.jetbrains.kotlin.config.CompilerConfiguration;
import org.jetbrains.kotlin.config.JVMConfigurationKeys; import org.jetbrains.kotlin.config.JVMConfigurationKeys;
public abstract class AbstractIrBlackBoxCodegenTest extends AbstractBlackBoxCodegenTest { public abstract class AbstractIrBlackBoxCodegenTest extends AbstractBlackBoxCodegenTest {
@Override @Override
protected void updateConfiguration(CompilerConfiguration configuration) { protected void updateConfiguration(@NotNull CompilerConfiguration configuration) {
configuration.put(JVMConfigurationKeys.IR, true); configuration.put(JVMConfigurationKeys.IR, true);
} }
} }