Support multi-file tests with Java in CodegenTestCase

This commit is contained in:
Alexander Udalov
2012-10-01 19:29:22 +04:00
parent 19a6a3f390
commit 1cf5e92981
@@ -174,6 +174,11 @@ public abstract class CodegenTestCase extends UsefulTestCase {
blackBox(); blackBox();
} }
protected void blackBoxMultiFile(String expected, boolean classPathInTheSameClassLoader, String... filenames) {
loadFiles(filenames);
blackBox(expected, classPathInTheSameClassLoader);
}
@NotNull @NotNull
private Class<?> loadClassFromType(@NotNull Type type) { private Class<?> loadClassFromType(@NotNull Type type) {
try { try {
@@ -287,19 +292,25 @@ public abstract class CodegenTestCase extends UsefulTestCase {
} }
protected void blackBoxFileWithJava(@NotNull String ktFile, boolean classPathInTheSameClassLoader) throws Exception { protected void blackBoxFileWithJava(@NotNull String ktFile, boolean classPathInTheSameClassLoader) throws Exception {
File javaClassesTempDirectory = compileJava(ktFile.replaceFirst("\\.kt$", ".java"));
myEnvironment = new JetCoreEnvironment(getTestRootDisposable(), CompileCompilerDependenciesTest.compilerConfigurationForTests(
ConfigurationKind.JDK_ONLY, TestJdkKind.MOCK_JDK, JetTestUtils.getAnnotationsJar(), javaClassesTempDirectory));
blackBoxFile(ktFile, "OK", classPathInTheSameClassLoader);
}
protected File compileJava(@NotNull String filename) throws IOException {
File javaClassesTempDirectory = new File(FileUtil.getTempDirectory(), "java-classes"); File javaClassesTempDirectory = new File(FileUtil.getTempDirectory(), "java-classes");
JetTestUtils.mkdirs(javaClassesTempDirectory); JetTestUtils.mkdirs(javaClassesTempDirectory);
List<String> options = Arrays.asList( List<String> options = Arrays.asList(
"-d", javaClassesTempDirectory.getPath() "-d", javaClassesTempDirectory.getPath()
); );
File javaFile = new File("compiler/testData/codegen/" + ktFile.replaceFirst("\\.kt$", ".java")); File javaFile = new File("compiler/testData/codegen/" + filename);
JetTestUtils.compileJavaFiles(Collections.singleton(javaFile), options); JetTestUtils.compileJavaFiles(Collections.singleton(javaFile), options);
myEnvironment = new JetCoreEnvironment(getTestRootDisposable(), CompileCompilerDependenciesTest.compilerConfigurationForTests( return javaClassesTempDirectory;
ConfigurationKind.JDK_ONLY, TestJdkKind.MOCK_JDK, JetTestUtils.getAnnotationsJar(), javaClassesTempDirectory));
blackBoxFile(ktFile, "OK", classPathInTheSameClassLoader);
} }
protected GeneratedClassLoader createClassLoader(ClassFileFactory codegens) { protected GeneratedClassLoader createClassLoader(ClassFileFactory codegens) {