diff --git a/compiler/java8-tests/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsWithFullJdkTest.java b/compiler/java8-tests/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsWithFullJdkTest.java index 42c76577741..67b54168212 100644 --- a/compiler/java8-tests/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsWithFullJdkTest.java +++ b/compiler/java8-tests/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsWithFullJdkTest.java @@ -16,27 +16,20 @@ package org.jetbrains.kotlin.checkers; -import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles; -import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment; +import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.test.ConfigurationKind; -import org.jetbrains.kotlin.test.KotlinTestUtils; import org.jetbrains.kotlin.test.TestJdkKind; -import java.io.File; -import java.util.Arrays; - public abstract class AbstractDiagnosticsWithFullJdkTest extends AbstractDiagnosticsTest { + @NotNull @Override - protected KotlinCoreEnvironment createEnvironment() { - File javaFilesDir = createJavaFilesDir(); - return KotlinCoreEnvironment.createForTests(getTestRootDisposable(), - KotlinTestUtils.compilerConfigurationForTests( - ConfigurationKind.ALL, - TestJdkKind.FULL_JDK, - Arrays.asList(KotlinTestUtils.getAnnotationsJar()), - Arrays.asList(javaFilesDir) - ), - EnvironmentConfigFiles.JVM_CONFIG_FILES); + protected ConfigurationKind getConfigurationKind() { + return ConfigurationKind.ALL; + } + + @NotNull + @Override + protected TestJdkKind getTestJdkKind() { + return TestJdkKind.FULL_JDK; } } - diff --git a/compiler/tests/org/jetbrains/kotlin/asJava/AbstractCompilerLightClassTest.java b/compiler/tests/org/jetbrains/kotlin/asJava/AbstractCompilerLightClassTest.java index 285fab07adb..0bc9973e948 100644 --- a/compiler/tests/org/jetbrains/kotlin/asJava/AbstractCompilerLightClassTest.java +++ b/compiler/tests/org/jetbrains/kotlin/asJava/AbstractCompilerLightClassTest.java @@ -22,34 +22,25 @@ import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.checkers.KotlinMultiFileTestWithJava; import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment; -import org.jetbrains.kotlin.config.CompilerConfiguration; import org.jetbrains.kotlin.test.ConfigurationKind; import org.jetbrains.kotlin.test.KotlinTestUtils; -import org.jetbrains.kotlin.test.TestJdkKind; import org.jetbrains.kotlin.utils.ExceptionUtilsKt; import java.io.File; import java.io.IOException; -import java.util.Arrays; import java.util.List; import java.util.Map; public abstract class AbstractCompilerLightClassTest extends KotlinMultiFileTestWithJava { - @Override @NotNull - protected CompilerConfiguration createCompilerConfiguration(File javaFilesDir) { - return KotlinTestUtils.compilerConfigurationForTests( - ConfigurationKind.ALL, - TestJdkKind.MOCK_JDK, - Arrays.asList(KotlinTestUtils.getAnnotationsJar()), - Arrays.asList(javaFilesDir) - ); + @Override + protected ConfigurationKind getConfigurationKind() { + return ConfigurationKind.ALL; } - @NotNull @Override - protected File getKotlinSourceRoot() { - return createTmpDir("kotlin-src"); + protected boolean isKotlinSourceRootNeeded() { + return true; } @NotNull diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTestWithJsStdLib.java b/compiler/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTestWithJsStdLib.java index 127d0fce8b9..f6ebc00b9fa 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTestWithJsStdLib.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTestWithJsStdLib.java @@ -16,11 +16,8 @@ package org.jetbrains.kotlin.checkers; -import com.intellij.openapi.Disposable; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles; -import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment; -import org.jetbrains.kotlin.config.CompilerConfiguration; import org.jetbrains.kotlin.context.ModuleContext; import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl; import org.jetbrains.kotlin.js.analyze.TopDownAnalyzerFacadeForJS; @@ -55,8 +52,8 @@ public abstract class AbstractDiagnosticsTestWithJsStdLib extends AbstractDiagno @Override @NotNull - protected KotlinCoreEnvironment createEnvironment(@NotNull Disposable disposable, @NotNull CompilerConfiguration configuration) { - return KotlinCoreEnvironment.createForTests(disposable, configuration, EnvironmentConfigFiles.JS_CONFIG_FILES); + protected List getEnvironmentConfigFiles() { + return EnvironmentConfigFiles.JS_CONFIG_FILES; } @Override @@ -84,7 +81,7 @@ public abstract class AbstractDiagnosticsTestWithJsStdLib extends AbstractDiagno protected ModuleDescriptorImpl createSealedModule(@NotNull StorageManager storageManager) { ModuleDescriptorImpl module = createModule("", storageManager); - List dependencies = new ArrayList();; + List dependencies = new ArrayList(); dependencies.add(module); for (ModuleDescriptorImpl moduleDescriptor : config.getModuleDescriptors()) { diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTestWithStdLib.java b/compiler/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTestWithStdLib.java index 2dbf3ced15a..6dc148c20ee 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTestWithStdLib.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTestWithStdLib.java @@ -16,26 +16,13 @@ package org.jetbrains.kotlin.checkers; -import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles; -import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment; +import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.test.ConfigurationKind; -import org.jetbrains.kotlin.test.KotlinTestUtils; -import org.jetbrains.kotlin.test.TestJdkKind; - -import java.io.File; -import java.util.Arrays; public abstract class AbstractDiagnosticsTestWithStdLib extends AbstractDiagnosticsTest { + @NotNull @Override - protected KotlinCoreEnvironment createEnvironment() { - File javaFilesDir = createJavaFilesDir(); - return KotlinCoreEnvironment.createForTests(getTestRootDisposable(), - KotlinTestUtils.compilerConfigurationForTests( - ConfigurationKind.ALL, - TestJdkKind.MOCK_JDK, - Arrays.asList(KotlinTestUtils.getAnnotationsJar()), - Arrays.asList(javaFilesDir) - ), - EnvironmentConfigFiles.JVM_CONFIG_FILES); + protected ConfigurationKind getConfigurationKind() { + return ConfigurationKind.ALL; } } diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsWithFullJdkTest.java b/compiler/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsWithFullJdkTest.java index 42c76577741..67b54168212 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsWithFullJdkTest.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsWithFullJdkTest.java @@ -16,27 +16,20 @@ package org.jetbrains.kotlin.checkers; -import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles; -import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment; +import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.test.ConfigurationKind; -import org.jetbrains.kotlin.test.KotlinTestUtils; import org.jetbrains.kotlin.test.TestJdkKind; -import java.io.File; -import java.util.Arrays; - public abstract class AbstractDiagnosticsWithFullJdkTest extends AbstractDiagnosticsTest { + @NotNull @Override - protected KotlinCoreEnvironment createEnvironment() { - File javaFilesDir = createJavaFilesDir(); - return KotlinCoreEnvironment.createForTests(getTestRootDisposable(), - KotlinTestUtils.compilerConfigurationForTests( - ConfigurationKind.ALL, - TestJdkKind.FULL_JDK, - Arrays.asList(KotlinTestUtils.getAnnotationsJar()), - Arrays.asList(javaFilesDir) - ), - EnvironmentConfigFiles.JVM_CONFIG_FILES); + protected ConfigurationKind getConfigurationKind() { + return ConfigurationKind.ALL; + } + + @NotNull + @Override + protected TestJdkKind getTestJdkKind() { + return TestJdkKind.FULL_JDK; } } - diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/AbstractForeignAnnotationsTest.kt b/compiler/tests/org/jetbrains/kotlin/checkers/AbstractForeignAnnotationsTest.kt index 8848eb1c1b2..941fa2a5832 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/AbstractForeignAnnotationsTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/checkers/AbstractForeignAnnotationsTest.kt @@ -16,26 +16,14 @@ package org.jetbrains.kotlin.checkers -import org.jetbrains.kotlin.config.CompilerConfiguration -import org.jetbrains.kotlin.test.ConfigurationKind -import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.MockLibraryUtil -import org.jetbrains.kotlin.test.TestJdkKind import java.io.File - abstract class AbstractForeignAnnotationsTest : AbstractDiagnosticsTest() { - lateinit var annotationsFile: File - - override fun createCompilerConfiguration(javaFilesDir: File?): CompilerConfiguration { - val annotationsFile = MockLibraryUtil.compileLibraryToJar( + override fun getExtraClasspath(): List { + return listOf(MockLibraryUtil.compileLibraryToJar( "compiler/testData/foreignAnnotations/annotations", - "foreign-annotations", /* addSources = */false, /* allowKotlinPackage =*/ false) - - return KotlinTestUtils.compilerConfigurationForTests( - ConfigurationKind.JDK_ONLY, - TestJdkKind.MOCK_JDK, - listOf(KotlinTestUtils.getAnnotationsJar(), annotationsFile), - listOf(javaFilesDir)) + "foreign-annotations", /* addSources = */false, /* allowKotlinPackage = */ false + )) } -} \ No newline at end of file +} diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/KotlinMultiFileTestWithJava.java b/compiler/tests/org/jetbrains/kotlin/checkers/KotlinMultiFileTestWithJava.java index 9bd15f6a938..0d2d202f38a 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/KotlinMultiFileTestWithJava.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/KotlinMultiFileTestWithJava.java @@ -16,9 +16,9 @@ package org.jetbrains.kotlin.checkers; -import com.google.common.io.Files; -import com.intellij.openapi.Disposable; -import com.intellij.openapi.util.io.FileUtil; +import kotlin.collections.CollectionsKt; +import kotlin.io.FilesKt; +import kotlin.text.Charsets; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles; @@ -31,17 +31,17 @@ import org.jetbrains.kotlin.test.ConfigurationKind; import org.jetbrains.kotlin.test.KotlinLiteFixture; import org.jetbrains.kotlin.test.KotlinTestUtils; import org.jetbrains.kotlin.test.TestJdkKind; -import org.jetbrains.kotlin.utils.ExceptionUtilsKt; import java.io.File; -import java.io.IOException; -import java.nio.charset.Charset; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; public abstract class KotlinMultiFileTestWithJava extends KotlinLiteFixture { + private File javaFilesDir; + private File kotlinSourceRoot; + protected class ModuleAndDependencies { final M module; final List dependencies; @@ -52,69 +52,49 @@ public abstract class KotlinMultiFileTestWithJava extends KotlinLiteFixtur } } - protected static boolean writeSourceFile(@NotNull String fileName, @NotNull String content, @NotNull File targetDir) { - try { - File sourceFile = new File(targetDir, fileName); - KotlinTestUtils.mkdirs(sourceFile.getParentFile()); - Files.write(content, sourceFile, Charset.forName("utf-8")); - return true; - } - catch (Exception e) { - throw ExceptionUtilsKt.rethrow(e); - } - } - @Override - protected KotlinCoreEnvironment createEnvironment() { - File javaFilesDir = createJavaFilesDir(); - CompilerConfiguration configuration = createCompilerConfiguration(javaFilesDir); - configuration.add(CommonConfigurationKeys.SCRIPT_DEFINITIONS_KEY, StandardScriptDefinition.INSTANCE); - File kotlinSourceRoot = getKotlinSourceRoot(); - if (kotlinSourceRoot != null) { - ContentRootsKt.addKotlinSourceRoot(configuration, kotlinSourceRoot.getPath()); - } - return createEnvironment(getTestRootDisposable(), configuration); - } - - @NotNull - protected CompilerConfiguration createCompilerConfiguration(File javaFilesDir) { - return KotlinTestUtils.compilerConfigurationForTests( - ConfigurationKind.MOCK_RUNTIME, - TestJdkKind.MOCK_JDK, - Collections.singletonList(KotlinTestUtils.getAnnotationsJar()), + protected KotlinCoreEnvironment createEnvironment() throws Exception { + javaFilesDir = KotlinTestUtils.tmpDir("java-files"); + CompilerConfiguration configuration = KotlinTestUtils.compilerConfigurationForTests( + getConfigurationKind(), + getTestJdkKind(), + CollectionsKt.plus(Collections.singletonList(KotlinTestUtils.getAnnotationsJar()), getExtraClasspath()), Collections.singletonList(javaFilesDir) ); + configuration.add(CommonConfigurationKeys.SCRIPT_DEFINITIONS_KEY, StandardScriptDefinition.INSTANCE); + if (isKotlinSourceRootNeeded()) { + kotlinSourceRoot = KotlinTestUtils.tmpDir("kotlin-src"); + ContentRootsKt.addKotlinSourceRoot(configuration, kotlinSourceRoot.getPath()); + } + return KotlinCoreEnvironment.createForTests(getTestRootDisposable(), configuration, getEnvironmentConfigFiles()); } @NotNull - protected KotlinCoreEnvironment createEnvironment(@NotNull Disposable disposable, @NotNull CompilerConfiguration configuration) { - return KotlinCoreEnvironment.createForTests(disposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES); + protected ConfigurationKind getConfigurationKind() { + return ConfigurationKind.MOCK_RUNTIME; } - @Nullable - protected File getKotlinSourceRoot() { - return null; + @NotNull + protected TestJdkKind getTestJdkKind() { + return TestJdkKind.MOCK_JDK; } - protected File createJavaFilesDir() { - return createTmpDir("java-files"); + @NotNull + protected List getExtraClasspath() { + return Collections.emptyList(); } - protected static File createTmpDir(String dirName) { - File dir = new File(FileUtil.getTempDirectory(), dirName); - try { - KotlinTestUtils.mkdirs(dir); - } - catch (IOException e) { - throw ExceptionUtilsKt.rethrow(e); - } - return dir; + @NotNull + protected List getEnvironmentConfigFiles() { + return EnvironmentConfigFiles.JVM_CONFIG_FILES; + } + + protected boolean isKotlinSourceRootNeeded() { + return false; } protected void doTest(String filePath) throws Exception { File file = new File(filePath); - final File javaFilesDir = createJavaFilesDir(); - final File kotlinFilesDir = getKotlinSourceRoot(); String expectedText = KotlinTestUtils.doLoadFile(file); @@ -133,8 +113,8 @@ public abstract class KotlinMultiFileTestWithJava extends KotlinLiteFixtur writeSourceFile(fileName, text, javaFilesDir); } - if (fileName.endsWith(".kt") && kotlinFilesDir != null) { - writeSourceFile(fileName, text, kotlinFilesDir); + if (fileName.endsWith(".kt") && kotlinSourceRoot != null) { + writeSourceFile(fileName, text, kotlinSourceRoot); } return createTestFile(module, fileName, text, directives); @@ -148,6 +128,12 @@ public abstract class KotlinMultiFileTestWithJava extends KotlinLiteFixtur return module; } + + private void writeSourceFile(@NotNull String fileName, @NotNull String content, @NotNull File targetDir) { + File file = new File(targetDir, fileName); + KotlinTestUtils.mkdirs(file.getParentFile()); + FilesKt.writeText(file, content, Charsets.UTF_8); + } }); doMultiFileTest(file, modules, testFiles); diff --git a/compiler/tests/org/jetbrains/kotlin/resolve/lazy/KotlinTestWithEnvironment.java b/compiler/tests/org/jetbrains/kotlin/resolve/lazy/KotlinTestWithEnvironment.java index 798aaf5582c..a132591767c 100644 --- a/compiler/tests/org/jetbrains/kotlin/resolve/lazy/KotlinTestWithEnvironment.java +++ b/compiler/tests/org/jetbrains/kotlin/resolve/lazy/KotlinTestWithEnvironment.java @@ -36,7 +36,7 @@ public abstract class KotlinTestWithEnvironment extends KotlinTestWithEnvironmen super.tearDown(); } - protected abstract KotlinCoreEnvironment createEnvironment(); + protected abstract KotlinCoreEnvironment createEnvironment() throws Exception; @NotNull public KotlinCoreEnvironment getEnvironment() { diff --git a/compiler/tests/org/jetbrains/kotlin/test/KotlinTestUtils.java b/compiler/tests/org/jetbrains/kotlin/test/KotlinTestUtils.java index 598848a2fde..a096cb81764 100644 --- a/compiler/tests/org/jetbrains/kotlin/test/KotlinTestUtils.java +++ b/compiler/tests/org/jetbrains/kotlin/test/KotlinTestUtils.java @@ -337,15 +337,15 @@ public class KotlinTestUtils { return new File(getHomeDirectory(), "compiler/testData/mockJDK/jre/lib/annotations.jar"); } - public static void mkdirs(File file) throws IOException { + public static void mkdirs(@NotNull File file) { if (file.isDirectory()) { return; } if (!file.mkdirs()) { if (file.exists()) { - throw new IOException("failed to create " + file + " file exists and not a directory"); + throw new IllegalStateException("Failed to create " + file + ": file exists and not a directory"); } - throw new IOException(); + throw new IllegalStateException("Failed to create " + file); } }