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 GeneratedClassLoader initializedClassLoader;
protected File javaClassesOutputDirectory = null;
protected List<File> additionalDependencies = null;
protected ConfigurationKind configurationKind = ConfigurationKind.JDK_ONLY;
private final String defaultJvmTarget = System.getProperty(DEFAULT_JVM_TARGET_FOR_TEST);
@@ -360,6 +361,9 @@ public abstract class CodegenTestCase extends KtUsefulTestCase {
if (javaClassesOutputDirectory != null) {
files.add(javaClassesOutputDirectory);
}
if (additionalDependencies != null) {
files.addAll(additionalDependencies);
}
ScriptDependenciesProvider externalImportsProvider =
ScriptDependenciesProvider.Companion.getInstance(myEnvironment.getProject());
@@ -16,11 +16,13 @@
package org.jetbrains.kotlin.codegen
import java.io.File
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.messages.MessageRenderer
import org.jetbrains.kotlin.cli.common.messages.PrintingMessageCollector
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
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.addKotlinSourceRoots
import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate
@@ -38,6 +40,12 @@ class ScriptGenTest : CodegenTestCase() {
override fun 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() {
@@ -101,13 +109,14 @@ class ScriptGenTest : CodegenTestCase() {
}
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))
add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, FIB_SCRIPT_DEFINITION)
add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, NO_PARAM_SCRIPT_DEFINITION)
put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true)
addKotlinSourceRoots(sourcePaths.map { "${KotlinTestUtils.getTestDataPathBase()}/codegen/$it" })
addJvmClasspathRoots(additionalDependencies)
}
myEnvironment = KotlinCoreEnvironment.createForTests(testRootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)