Reduce classpath for class loader in CodegenTestCase

There's no point in adding JDK (mock or full) roots to it, as well as
stdlib/reflect/test (they are loaded by the parent class loader, created
in ForTestCompileRuntime)
This commit is contained in:
Alexander Udalov
2017-07-11 13:08:28 +03:00
parent 743278d456
commit c9b14c5a45
5 changed files with 50 additions and 37 deletions
@@ -16,15 +16,14 @@
package org.jetbrains.kotlin.codegen
import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoot
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.test.ConfigurationKind
import java.io.File
abstract class AbstractBlackBoxAgainstJavaCodegenTest : AbstractBlackBoxCodegenTest() {
private lateinit var javaOutputDir: File
override fun doMultiFileTest(wholeFile: File, files: MutableList<TestFile>, javaFilesDir: File?) {
javaOutputDir = javaFilesDir!!.let { directory ->
javaClassesOutputDirectory = javaFilesDir!!.let { directory ->
CodegenTestUtil.compileJava(findJavaSourcesInDirectory(directory), emptyList(), extractJavacOptions(files))
}
@@ -32,7 +31,7 @@ abstract class AbstractBlackBoxAgainstJavaCodegenTest : AbstractBlackBoxCodegenT
}
override fun updateConfiguration(configuration: CompilerConfiguration) {
configuration.addJvmClasspathRoots(listOf(javaOutputDir))
configuration.addJvmClasspathRoot(javaClassesOutputDirectory)
}
override fun extractConfigurationKind(files: MutableList<TestFile>): ConfigurationKind {
@@ -47,7 +47,8 @@ public class GenerateNotNullAssertionsTest extends CodegenTestCase {
return "notNullAssertions";
}
private void setUpEnvironment(boolean disableCallAssertions, boolean disableParamAssertions, File... extraClassPath) {
private void setUpEnvironment(boolean disableCallAssertions, boolean disableParamAssertions) {
File[] extraClassPath = javaClassesOutputDirectory != null ? new File[] {javaClassesOutputDirectory} : new File[0];
CompilerConfiguration configuration =
KotlinTestUtils.newConfiguration(ConfigurationKind.JDK_ONLY, TestJdkKind.MOCK_JDK, extraClassPath);
@@ -62,9 +63,8 @@ public class GenerateNotNullAssertionsTest extends CodegenTestCase {
loadFileByFullPath(KotlinTestUtils.getTestDataPathBase() + "/codegen/" + getPrefix() + "/" + fileName);
}
@NotNull
private File compileJava0(@NotNull String fileName) {
return CodegenTestUtil.compileJava(
private void compileJava(@NotNull String fileName) {
javaClassesOutputDirectory = CodegenTestUtil.compileJava(
Collections.singletonList(KotlinTestUtils.getTestDataPathBase() + "/codegen/" + getPrefix() + "/" + fileName),
Collections.emptyList(),
Collections.emptyList()
@@ -72,8 +72,8 @@ public class GenerateNotNullAssertionsTest extends CodegenTestCase {
}
private void doTestCallAssertions(boolean disableCallAssertions) throws Exception {
File javaOut = compileJava0("A.java");
setUpEnvironment(disableCallAssertions, true, javaOut);
compileJava("A.java");
setUpEnvironment(disableCallAssertions, true);
loadSource("AssertionChecker.kt");
generateFunction("checkAssertions").invoke(null, !disableCallAssertions);
@@ -99,18 +99,18 @@ public class GenerateNotNullAssertionsTest extends CodegenTestCase {
setUpEnvironment(false, true);
loadSource("noAssertionsForKotlin.kt");
OutputFileCollection outputFiles = generateClassesInFile();
File compiledDirectory = new File(FileUtil.getTempDirectory(), "kotlin-classes");
OutputUtilsKt.writeAllTo(outputFiles, compiledDirectory);
javaClassesOutputDirectory = new File(FileUtil.getTempDirectory(), "kotlin-classes");
OutputUtilsKt.writeAllTo(outputFiles, javaClassesOutputDirectory);
setUpEnvironment(false, true, compiledDirectory);
setUpEnvironment(false, true);
loadSource("noAssertionsForKotlinMain.kt");
assertNoIntrinsicsMethodIsCalledInMyClasses(false);
}
public void testGenerateParamAssertions() throws Exception {
File javaOut = compileJava0("doGenerateParamAssertions.java");
setUpEnvironment(true, false, javaOut);
compileJava("doGenerateParamAssertions.java");
setUpEnvironment(true, false);
loadSource("doGenerateParamAssertions.kt");
generateFunction().invoke(null);
@@ -143,8 +143,8 @@ public class GenerateNotNullAssertionsTest extends CodegenTestCase {
}
public void testJavaMultipleSubstitutions() {
File javaOut = compileJava0("javaMultipleSubstitutions.java");
setUpEnvironment(false, false, javaOut);
compileJava("javaMultipleSubstitutions.java");
setUpEnvironment(false, false);
loadSource("javaMultipleSubstitutions.kt");
String text = generateToText();