Minor, extract method in CodegenTestCase
This commit is contained in:
@@ -38,8 +38,7 @@ public class AnnotationGenTest extends CodegenTestCase {
|
||||
|
||||
private ClassLoader loadFileGetClassLoader(@NotNull String text) {
|
||||
loadText(text);
|
||||
ClassFileFactory state = generateClassesInFile();
|
||||
return createClassLoader(state);
|
||||
return generateAndCreateClassLoader();
|
||||
}
|
||||
|
||||
private Class<?> getPackageClass(@NotNull ClassLoader loader) throws ClassNotFoundException {
|
||||
|
||||
@@ -53,8 +53,7 @@ public class ClassGenTest extends CodegenTestCase {
|
||||
|
||||
public void testDelegationToVal() throws Exception {
|
||||
loadFile("classes/delegationToVal.kt");
|
||||
ClassFileFactory state = generateClassesInFile();
|
||||
GeneratedClassLoader loader = createClassLoader(state);
|
||||
GeneratedClassLoader loader = generateAndCreateClassLoader();
|
||||
Class aClass = loader.loadClass(PackageClassUtils.getPackageClassName(FqName.ROOT));
|
||||
assertEquals("OK", aClass.getMethod("box").invoke(null));
|
||||
|
||||
@@ -139,7 +138,7 @@ public class ClassGenTest extends CodegenTestCase {
|
||||
|
||||
public void testClassObjectIsInnerClass() throws Exception {
|
||||
loadFile("classes/classObjectIsInnerClass.kt");
|
||||
GeneratedClassLoader loader = createClassLoader(generateClassesInFile());
|
||||
GeneratedClassLoader loader = generateAndCreateClassLoader();
|
||||
Class<?> a = loader.loadClass("A");
|
||||
Class<?> aClassObject = loader.loadClass("A" + JvmAbi.CLASS_OBJECT_SUFFIX);
|
||||
assertSameElements(a.getDeclaredClasses(), aClassObject);
|
||||
|
||||
@@ -115,6 +115,11 @@ public abstract class CodegenTestCase extends UsefulTestCase {
|
||||
return initializedClassLoader;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected GeneratedClassLoader generateAndCreateClassLoader() {
|
||||
return createClassLoader(generateClassesInFile());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected URL[] getClassPathURLs() {
|
||||
List<URL> urls = Lists.newArrayList();
|
||||
@@ -159,7 +164,7 @@ public abstract class CodegenTestCase extends UsefulTestCase {
|
||||
@NotNull
|
||||
protected Class<?> generateClass(@NotNull String name) {
|
||||
try {
|
||||
return createClassLoader(generateClassesInFile()).loadClass(name);
|
||||
return generateAndCreateClassLoader().loadClass(name);
|
||||
} catch (ClassNotFoundException e) {
|
||||
fail("No class file was generated for: " + name);
|
||||
return null;
|
||||
|
||||
@@ -19,7 +19,6 @@ package org.jetbrains.jet.codegen;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.asm4.Opcodes;
|
||||
import org.jetbrains.asm4.Type;
|
||||
import org.jetbrains.jet.ConfigurationKind;
|
||||
import org.jetbrains.jet.lang.parsing.JetScriptDefinition;
|
||||
import org.jetbrains.jet.lang.parsing.JetScriptDefinitionProvider;
|
||||
@@ -52,14 +51,8 @@ public class ScriptGenTest extends CodegenTestCase {
|
||||
private void blackBoxScript(String filename) {
|
||||
loadFile(filename);
|
||||
|
||||
ClassFileFactory factory = generateClassesInFile();
|
||||
|
||||
GeneratedClassLoader loader = createClassLoader(factory);
|
||||
|
||||
String scriptClassName = ScriptNameUtil.classNameForScript(myFiles.getPsiFile());
|
||||
|
||||
try {
|
||||
Class<?> scriptClass = loader.loadClass(scriptClassName);
|
||||
Class<?> scriptClass = generateClass(ScriptNameUtil.classNameForScript(myFiles.getPsiFile()));
|
||||
|
||||
Constructor constructor = getConstructor(scriptClass);
|
||||
scriptInstance = constructor.newInstance(myFiles.getScriptParameterValues().toArray());
|
||||
@@ -88,13 +81,14 @@ public class ScriptGenTest extends CodegenTestCase {
|
||||
}
|
||||
catch (Throwable e) {
|
||||
System.out.println(generateToText());
|
||||
ExceptionUtils.rethrow(e);
|
||||
throw ExceptionUtils.rethrow(e);
|
||||
}
|
||||
}
|
||||
|
||||
protected Constructor getConstructor(@NotNull Class<?> clazz) {
|
||||
Constructor [] constructors = clazz.getConstructors();
|
||||
if (constructors == null || constructors.length != 1) {
|
||||
@NotNull
|
||||
protected static Constructor getConstructor(@NotNull Class<?> clazz) {
|
||||
Constructor[] constructors = clazz.getConstructors();
|
||||
if (constructors.length != 1) {
|
||||
throw new IllegalArgumentException("Script class should have one constructor: " + clazz);
|
||||
}
|
||||
return constructors[0];
|
||||
|
||||
@@ -23,9 +23,7 @@ import org.jetbrains.jet.ConfigurationKind;
|
||||
import org.jetbrains.jet.JetTestUtils;
|
||||
import org.jetbrains.jet.TestJdkKind;
|
||||
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
|
||||
import org.jetbrains.jet.codegen.ClassFileFactory;
|
||||
import org.jetbrains.jet.codegen.CodegenTestCase;
|
||||
import org.jetbrains.jet.codegen.GeneratedClassLoader;
|
||||
import org.jetbrains.jet.lang.psi.JetFile;
|
||||
import org.jetbrains.jet.lang.psi.JetPsiUtil;
|
||||
import org.jetbrains.jet.utils.ExceptionUtils;
|
||||
@@ -92,22 +90,17 @@ public abstract class AbstractBlackBoxCodegenTest extends CodegenTestCase {
|
||||
}
|
||||
|
||||
private void blackBox() {
|
||||
ClassFileFactory factory = generateClassesInFile();
|
||||
GeneratedClassLoader loader = createClassLoader(factory);
|
||||
|
||||
// If there are many files, the first of them should contain the 'box(): String' function
|
||||
JetFile firstFile = myFiles.getPsiFiles().get(0);
|
||||
String fqName = getPackageClassFqName(JetPsiUtil.getFQName(firstFile)).asString();
|
||||
|
||||
try {
|
||||
Class<?> namespaceClass = loader.loadClass(fqName);
|
||||
Method method = namespaceClass.getMethod("box");
|
||||
|
||||
Method method = generateClass(fqName).getMethod("box");
|
||||
String r = (String) method.invoke(null);
|
||||
assertEquals("OK", r);
|
||||
} catch (Throwable e) {
|
||||
System.out.println(generateToText());
|
||||
ExceptionUtils.rethrow(e);
|
||||
throw ExceptionUtils.rethrow(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user