Fix ScriptGen tests

This commit is contained in:
Ilya Chernikov
2017-09-15 15:14:49 +02:00
parent bcf08c2246
commit c4de5ee6b7
2 changed files with 14 additions and 1 deletions
@@ -92,6 +92,7 @@ public abstract class CodegenTestCase extends KtUsefulTestCase {
protected ClassFileFactory classFileFactory; protected ClassFileFactory classFileFactory;
protected GeneratedClassLoader initializedClassLoader; protected GeneratedClassLoader initializedClassLoader;
protected File javaClassesOutputDirectory = null; protected File javaClassesOutputDirectory = null;
protected List<File> additionalDependencies = null;
protected ConfigurationKind configurationKind = ConfigurationKind.JDK_ONLY; protected ConfigurationKind configurationKind = ConfigurationKind.JDK_ONLY;
private final String defaultJvmTarget = System.getProperty(DEFAULT_JVM_TARGET_FOR_TEST); private final String defaultJvmTarget = System.getProperty(DEFAULT_JVM_TARGET_FOR_TEST);
@@ -360,6 +361,9 @@ public abstract class CodegenTestCase extends KtUsefulTestCase {
if (javaClassesOutputDirectory != null) { if (javaClassesOutputDirectory != null) {
files.add(javaClassesOutputDirectory); files.add(javaClassesOutputDirectory);
} }
if (additionalDependencies != null) {
files.addAll(additionalDependencies);
}
ScriptDependenciesProvider externalImportsProvider = ScriptDependenciesProvider externalImportsProvider =
ScriptDependenciesProvider.Companion.getInstance(myEnvironment.getProject()); ScriptDependenciesProvider.Companion.getInstance(myEnvironment.getProject());
@@ -16,11 +16,13 @@
package org.jetbrains.kotlin.codegen package org.jetbrains.kotlin.codegen
import java.io.File
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.messages.MessageRenderer import org.jetbrains.kotlin.cli.common.messages.MessageRenderer
import org.jetbrains.kotlin.cli.common.messages.PrintingMessageCollector import org.jetbrains.kotlin.cli.common.messages.PrintingMessageCollector
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
import org.jetbrains.kotlin.config.JVMConfigurationKeys import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.config.addKotlinSourceRoots import org.jetbrains.kotlin.config.addKotlinSourceRoots
import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate
@@ -38,6 +40,12 @@ class ScriptGenTest : CodegenTestCase() {
override fun setUp() { override fun setUp() {
super.setUp() super.setUp()
additionalDependencies =
System.getenv("PROJECT_CLASSES_DIRS")?.split(File.pathSeparator)?.map { File(it) }
?: listOf("compiler/build/classes/kotlin/test", "build/compiler/classes/kotlin/test")
.mapNotNull { File(it).canonicalFile.takeIf { it.isDirectory } }
.takeIf { it.isNotEmpty() }
?: throw IllegalStateException("Unable to get classes output dirs, set PROJECT_CLASSES_DIRS environment variable")
} }
fun testLanguage() { fun testLanguage() {
@@ -101,13 +109,14 @@ class ScriptGenTest : CodegenTestCase() {
} }
private fun setUpEnvironment(sourcePaths: List<String>) { private fun setUpEnvironment(sourcePaths: List<String>) {
val configuration = KotlinTestUtils.newConfiguration(ConfigurationKind.JDK_ONLY, TestJdkKind.FULL_JDK).apply { val configuration = KotlinTestUtils.newConfiguration(ConfigurationKind.ALL, TestJdkKind.FULL_JDK).apply {
put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, PrintingMessageCollector(System.err, MessageRenderer.PLAIN_FULL_PATHS, false)) put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, PrintingMessageCollector(System.err, MessageRenderer.PLAIN_FULL_PATHS, false))
add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, FIB_SCRIPT_DEFINITION) add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, FIB_SCRIPT_DEFINITION)
add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, NO_PARAM_SCRIPT_DEFINITION) add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, NO_PARAM_SCRIPT_DEFINITION)
put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true) put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true)
addKotlinSourceRoots(sourcePaths.map { "${KotlinTestUtils.getTestDataPathBase()}/codegen/$it" }) addKotlinSourceRoots(sourcePaths.map { "${KotlinTestUtils.getTestDataPathBase()}/codegen/$it" })
addJvmClasspathRoots(additionalDependencies)
} }
myEnvironment = KotlinCoreEnvironment.createForTests(testRootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES) myEnvironment = KotlinCoreEnvironment.createForTests(testRootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)