TestGen: JUnit 3 only + static check for the superclass
This commit is contained in:
@@ -188,8 +188,7 @@ public abstract class AbstractJetDiagnosticsTest extends JetLiteFixture {
|
||||
new SimpleTestClassModel(new File("compiler/testData/diagnostics/tests"), true, "kt", "doTest"),
|
||||
new SimpleTestClassModel(new File("compiler/testData/diagnostics/tests/script"), true, "ktscript", "doTest")
|
||||
),
|
||||
AbstractJetDiagnosticsTest.class,
|
||||
TestGenerator.TargetTestFrameworks.JUNIT_3
|
||||
AbstractJetDiagnosticsTest.class
|
||||
).generateAndSave();
|
||||
}
|
||||
|
||||
|
||||
@@ -120,8 +120,7 @@ public abstract class AbstractReadJavaBinaryClassTest extends TestCaseWithTmpdir
|
||||
Arrays.asList(
|
||||
new SimpleTestClassModel(new File("compiler/testData/readJavaBinaryClass"), true, extension, "doTest")
|
||||
),
|
||||
AbstractReadJavaBinaryClassTest.class,
|
||||
TestGenerator.TargetTestFrameworks.JUNIT_3
|
||||
AbstractReadJavaBinaryClassTest.class
|
||||
).generateAndSave();
|
||||
}
|
||||
}
|
||||
|
||||
+28
-69
@@ -15,124 +15,83 @@
|
||||
*/
|
||||
package org.jetbrains.jet.lang.resolve.lazy;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.Suite;
|
||||
import junit.framework.Assert;
|
||||
import junit.framework.Test;
|
||||
import junit.framework.TestSuite;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import org.jetbrains.jet.JetTestUtils;
|
||||
import org.jetbrains.jet.test.TestMetadata;
|
||||
|
||||
/* This class is generated by LazyResolveTestGenerator. DO NOT MODIFY MANUALLY */
|
||||
@RunWith(Suite.class)
|
||||
@Suite.SuiteClasses({
|
||||
LazyResolveDescriptorRendererTestGenerated.Renderer.class,
|
||||
LazyResolveDescriptorRendererTestGenerated.DescriptorRenderer.class
|
||||
})
|
||||
public class LazyResolveDescriptorRendererTestGenerated {
|
||||
import org.jetbrains.jet.lang.resolve.lazy.AbstractLazyResolveDescriptorRendererTest;
|
||||
|
||||
/** This class is generated by {@link org.jetbrains.jet.lang.resolve.lazy.LazyResolveTestGenerator}. DO NOT MODIFY MANUALLY */
|
||||
public class LazyResolveDescriptorRendererTestGenerated extends AbstractLazyResolveDescriptorRendererTest {
|
||||
@TestMetadata("compiler/testData/renderer")
|
||||
public static class Renderer extends AbstractLazyResolveDescriptorRendererTest {
|
||||
@Test
|
||||
public void testAllFilesPresentInRenderer() throws Exception {
|
||||
allTestsPresent(Renderer.class, new File("compiler/testData/renderer"), true);
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.lang.resolve.lazy.LazyResolveTestGenerator", new File("compiler/testData/renderer"), "kt", false);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("Classes.kt")
|
||||
public void testClasses() throws Exception {
|
||||
doTest("compiler/testData/renderer/Classes.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("Enum.kt")
|
||||
public void testEnum() throws Exception {
|
||||
doTest("compiler/testData/renderer/Enum.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("ErrorType.kt")
|
||||
public void testErrorType() throws Exception {
|
||||
doTest("compiler/testData/renderer/ErrorType.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("FunctionTypes.kt")
|
||||
public void testFunctionTypes() throws Exception {
|
||||
doTest("compiler/testData/renderer/FunctionTypes.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("GlobalFunctions.kt")
|
||||
public void testGlobalFunctions() throws Exception {
|
||||
doTest("compiler/testData/renderer/GlobalFunctions.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("GlobalProperties.kt")
|
||||
public void testGlobalProperties() throws Exception {
|
||||
doTest("compiler/testData/renderer/GlobalProperties.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("InheritedMembersVisibility.kt")
|
||||
public void testInheritedMembersVisibility() throws Exception {
|
||||
doTest("compiler/testData/renderer/InheritedMembersVisibility.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("TupleTypes.kt")
|
||||
public void testTupleTypes() throws Exception {
|
||||
doTest("compiler/testData/renderer/TupleTypes.kt");
|
||||
}
|
||||
|
||||
public static void allTestsPresent(Class<?> clazz, File testDataDir, boolean recursive) {
|
||||
Set<String> methodNames = new HashSet<String>();
|
||||
for (Method method : clazz.getDeclaredMethods()) {
|
||||
if (method.isAnnotationPresent(Test.class)) {
|
||||
methodNames.add(method.getName().toLowerCase() + ".kt");
|
||||
}
|
||||
}
|
||||
for (File file : testDataDir.listFiles()) {
|
||||
if (file.isDirectory()) {
|
||||
if (recursive) {
|
||||
allTestsPresent(clazz, file, recursive);
|
||||
}
|
||||
}
|
||||
else {
|
||||
String name = file.getName();
|
||||
if (name.endsWith(".kt") && !methodNames.contains("test" + name.toLowerCase())) {
|
||||
Assert.fail("Test data file missing from the generated test class: " + file + "\nPlease re-run the generator: LazyResolveTestGenerator");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/lazyResolve/descriptorRenderer")
|
||||
public static class DescriptorRenderer extends AbstractLazyResolveDescriptorRendererTest {
|
||||
@Test
|
||||
public void testAllFilesPresentInDescriptorRenderer() throws Exception {
|
||||
allTestsPresent(DescriptorRenderer.class, new File("compiler/testData/lazyResolve/descriptorRenderer"), true);
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.lang.resolve.lazy.LazyResolveTestGenerator", new File("compiler/testData/lazyResolve/descriptorRenderer"), "kt", false);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("ClassObject.kt")
|
||||
public void testClassObject() throws Exception {
|
||||
doTest("compiler/testData/lazyResolve/descriptorRenderer/ClassObject.kt");
|
||||
}
|
||||
|
||||
public static void allTestsPresent(Class<?> clazz, File testDataDir, boolean recursive) {
|
||||
Set<String> methodNames = new HashSet<String>();
|
||||
for (Method method : clazz.getDeclaredMethods()) {
|
||||
if (method.isAnnotationPresent(Test.class)) {
|
||||
methodNames.add(method.getName().toLowerCase() + ".kt");
|
||||
}
|
||||
}
|
||||
for (File file : testDataDir.listFiles()) {
|
||||
if (file.isDirectory()) {
|
||||
if (recursive) {
|
||||
allTestsPresent(clazz, file, recursive);
|
||||
}
|
||||
}
|
||||
else {
|
||||
String name = file.getName();
|
||||
if (name.endsWith(".kt") && !methodNames.contains("test" + name.toLowerCase())) {
|
||||
Assert.fail("Test data file missing from the generated test class: " + file + "\nPlease re-run the generator: LazyResolveTestGenerator");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static Test suite() {
|
||||
TestSuite suite = new TestSuite("LazyResolveDescriptorRendererTestGenerated");
|
||||
suite.addTestSuite(Renderer.class);
|
||||
suite.addTestSuite(DescriptorRenderer.class);
|
||||
return suite;
|
||||
}
|
||||
}
|
||||
|
||||
+1143
-1014
File diff suppressed because it is too large
Load Diff
@@ -18,6 +18,7 @@ package org.jetbrains.jet.test.generator;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import junit.framework.TestCase;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.File;
|
||||
@@ -29,100 +30,11 @@ import java.util.*;
|
||||
*/
|
||||
public class TestGenerator {
|
||||
|
||||
public interface TargetTestFramework {
|
||||
List<String> getImports();
|
||||
|
||||
void generateSuiteClassAnnotations(@NotNull TestGenerator testGenerator, @NotNull Printer p);
|
||||
void generateExtraSuiteClassMethods(@NotNull TestGenerator testGenerator, @NotNull Printer p);
|
||||
void generateTestMethodAnnotations(@NotNull TestGenerator testGenerator, @NotNull Printer p);
|
||||
String getIsTestMethodCondition(@NotNull String methodVariableName);
|
||||
}
|
||||
|
||||
public enum TargetTestFrameworks implements TargetTestFramework {
|
||||
JUNIT_3 {
|
||||
@Override
|
||||
public List<String> getImports() {
|
||||
return Arrays.asList(
|
||||
"junit.framework.Assert",
|
||||
"junit.framework.Test",
|
||||
"junit.framework.TestSuite"
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateSuiteClassAnnotations(@NotNull TestGenerator testGenerator, @NotNull Printer p) {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateExtraSuiteClassMethods(@NotNull TestGenerator testGenerator, @NotNull Printer p) {
|
||||
p.println("public static Test suite() {");
|
||||
p.pushIndent();
|
||||
p.println("TestSuite suite = new TestSuite();");
|
||||
|
||||
for (TestClassModel testDataSource : testGenerator.testClassModels) {
|
||||
p.println("suite.addTestSuite(", testDataSource.getName(), ".class);");
|
||||
}
|
||||
|
||||
p.println("return suite;");
|
||||
p.popIndent();
|
||||
p.println("}");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateTestMethodAnnotations(@NotNull TestGenerator testGenerator, @NotNull Printer p) {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIsTestMethodCondition(@NotNull String methodVariableName) {
|
||||
return "method.getName().startsWith(\"test\")";
|
||||
}
|
||||
},
|
||||
JUNIT_4 {
|
||||
@Override
|
||||
public List<String> getImports() {
|
||||
return Arrays.asList(
|
||||
"org.junit.Assert",
|
||||
"org.junit.Test",
|
||||
"org.junit.runner.RunWith",
|
||||
"org.junit.runners.Suite"
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateSuiteClassAnnotations(@NotNull TestGenerator testGenerator, @NotNull Printer p) {
|
||||
p.println("@RunWith(Suite.class)");
|
||||
p.println("@Suite.SuiteClasses({");
|
||||
p.pushIndent();
|
||||
for (Iterator<? extends TestClassModel> iterator = testGenerator.testClassModels.iterator(); iterator.hasNext(); ) {
|
||||
TestClassModel testClassModel = iterator.next();
|
||||
p.print(testGenerator.suiteClassName, ".", testClassModel.getName(), ".class");
|
||||
if (iterator.hasNext()) {
|
||||
p.printWithNoIndent(",");
|
||||
}
|
||||
p.println();
|
||||
}
|
||||
p.popIndent();
|
||||
p.println("})");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateExtraSuiteClassMethods(@NotNull TestGenerator testGenerator, @NotNull Printer p) {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateTestMethodAnnotations(@NotNull TestGenerator testGenerator, @NotNull Printer p) {
|
||||
p.println("@Test");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIsTestMethodCondition(@NotNull String methodVariableName) {
|
||||
return "method.isAnnotationPresent(Test.class)";
|
||||
}
|
||||
}
|
||||
}
|
||||
private static final List<String> JUNIT3_IMPORTS = Arrays.asList(
|
||||
"junit.framework.Assert",
|
||||
"junit.framework.Test",
|
||||
"junit.framework.TestSuite"
|
||||
);
|
||||
|
||||
private final String baseDir;
|
||||
private final String suiteClassPackage;
|
||||
@@ -131,28 +43,14 @@ public class TestGenerator {
|
||||
private final String baseTestClassName;
|
||||
private final Collection<TestClassModel> testClassModels;
|
||||
private final String generatorName;
|
||||
private final TargetTestFramework targetTestFramework;
|
||||
|
||||
public TestGenerator(
|
||||
@NotNull String baseDir,
|
||||
@NotNull String suiteClassPackage,
|
||||
@NotNull String suiteClassName,
|
||||
@NotNull Class<?> baseTestClass,
|
||||
@NotNull Class<? extends TestCase> baseTestClass,
|
||||
@NotNull Collection<? extends TestClassModel> testClassModels,
|
||||
@NotNull Class<?> generatorClass
|
||||
) {
|
||||
this(baseDir, suiteClassPackage, suiteClassName, baseTestClass, testClassModels,
|
||||
generatorClass, TargetTestFrameworks.JUNIT_4);
|
||||
}
|
||||
|
||||
public TestGenerator(
|
||||
@NotNull String baseDir,
|
||||
@NotNull String suiteClassPackage,
|
||||
@NotNull String suiteClassName,
|
||||
@NotNull Class<?> baseTestClass,
|
||||
@NotNull Collection<? extends TestClassModel> testClassModels,
|
||||
@NotNull Class<?> generatorClass,
|
||||
@NotNull TargetTestFramework targetTestFramework
|
||||
) {
|
||||
this.baseDir = baseDir;
|
||||
this.suiteClassPackage = suiteClassPackage;
|
||||
@@ -161,7 +59,6 @@ public class TestGenerator {
|
||||
this.baseTestClassName = baseTestClass.getSimpleName();
|
||||
this.testClassModels = Lists.newArrayList(testClassModels);
|
||||
this.generatorName = generatorClass.getCanonicalName();
|
||||
this.targetTestFramework = targetTestFramework;
|
||||
}
|
||||
|
||||
public void generateAndSave() throws IOException {
|
||||
@@ -171,7 +68,7 @@ public class TestGenerator {
|
||||
p.print(FileUtil.loadFile(new File("injector-generator/copyright.txt")));
|
||||
p.println("package ", suiteClassPackage, ";");
|
||||
p.println();
|
||||
for (String importedClassName : targetTestFramework.getImports()) {
|
||||
for (String importedClassName : JUNIT3_IMPORTS) {
|
||||
p.println("import ", importedClassName, ";");
|
||||
}
|
||||
p.println();
|
||||
@@ -185,7 +82,6 @@ public class TestGenerator {
|
||||
p.println();
|
||||
|
||||
p.println("/** This class is generated by {@link ", generatorName, "}. DO NOT MODIFY MANUALLY */");
|
||||
targetTestFramework.generateSuiteClassAnnotations(this, p);
|
||||
if (testClassModels.size() == 1) {
|
||||
TestClassModel theOnlyTestClass = testClassModels.iterator().next();
|
||||
generateTestClass(p, new DelegatingTestClassModel(theOnlyTestClass) {
|
||||
@@ -288,7 +184,6 @@ public class TestGenerator {
|
||||
}
|
||||
|
||||
private void generateTestMethod(Printer p, TestMethodModel testMethodModel) {
|
||||
targetTestFramework.generateTestMethodAnnotations(this, p);
|
||||
generateMetadata(p, testMethodModel);
|
||||
p.println("public void ", testMethodModel.getName(), "() throws Exception {");
|
||||
p.pushIndent();
|
||||
|
||||
Reference in New Issue
Block a user