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"), true, "kt", "doTest"),
|
||||||
new SimpleTestClassModel(new File("compiler/testData/diagnostics/tests/script"), true, "ktscript", "doTest")
|
new SimpleTestClassModel(new File("compiler/testData/diagnostics/tests/script"), true, "ktscript", "doTest")
|
||||||
),
|
),
|
||||||
AbstractJetDiagnosticsTest.class,
|
AbstractJetDiagnosticsTest.class
|
||||||
TestGenerator.TargetTestFrameworks.JUNIT_3
|
|
||||||
).generateAndSave();
|
).generateAndSave();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -120,8 +120,7 @@ public abstract class AbstractReadJavaBinaryClassTest extends TestCaseWithTmpdir
|
|||||||
Arrays.asList(
|
Arrays.asList(
|
||||||
new SimpleTestClassModel(new File("compiler/testData/readJavaBinaryClass"), true, extension, "doTest")
|
new SimpleTestClassModel(new File("compiler/testData/readJavaBinaryClass"), true, extension, "doTest")
|
||||||
),
|
),
|
||||||
AbstractReadJavaBinaryClassTest.class,
|
AbstractReadJavaBinaryClassTest.class
|
||||||
TestGenerator.TargetTestFrameworks.JUNIT_3
|
|
||||||
).generateAndSave();
|
).generateAndSave();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+28
-69
@@ -15,124 +15,83 @@
|
|||||||
*/
|
*/
|
||||||
package org.jetbrains.jet.lang.resolve.lazy;
|
package org.jetbrains.jet.lang.resolve.lazy;
|
||||||
|
|
||||||
import org.junit.Assert;
|
import junit.framework.Assert;
|
||||||
import org.junit.Test;
|
import junit.framework.Test;
|
||||||
import org.junit.runner.RunWith;
|
import junit.framework.TestSuite;
|
||||||
import org.junit.runners.Suite;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.lang.reflect.Method;
|
import org.jetbrains.jet.JetTestUtils;
|
||||||
import java.util.HashSet;
|
import org.jetbrains.jet.test.TestMetadata;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
/* This class is generated by LazyResolveTestGenerator. DO NOT MODIFY MANUALLY */
|
import org.jetbrains.jet.lang.resolve.lazy.AbstractLazyResolveDescriptorRendererTest;
|
||||||
@RunWith(Suite.class)
|
|
||||||
@Suite.SuiteClasses({
|
/** This class is generated by {@link org.jetbrains.jet.lang.resolve.lazy.LazyResolveTestGenerator}. DO NOT MODIFY MANUALLY */
|
||||||
LazyResolveDescriptorRendererTestGenerated.Renderer.class,
|
public class LazyResolveDescriptorRendererTestGenerated extends AbstractLazyResolveDescriptorRendererTest {
|
||||||
LazyResolveDescriptorRendererTestGenerated.DescriptorRenderer.class
|
@TestMetadata("compiler/testData/renderer")
|
||||||
})
|
|
||||||
public class LazyResolveDescriptorRendererTestGenerated {
|
|
||||||
public static class Renderer extends AbstractLazyResolveDescriptorRendererTest {
|
public static class Renderer extends AbstractLazyResolveDescriptorRendererTest {
|
||||||
@Test
|
|
||||||
public void testAllFilesPresentInRenderer() throws Exception {
|
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 {
|
public void testClasses() throws Exception {
|
||||||
doTest("compiler/testData/renderer/Classes.kt");
|
doTest("compiler/testData/renderer/Classes.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@TestMetadata("Enum.kt")
|
||||||
public void testEnum() throws Exception {
|
public void testEnum() throws Exception {
|
||||||
doTest("compiler/testData/renderer/Enum.kt");
|
doTest("compiler/testData/renderer/Enum.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@TestMetadata("ErrorType.kt")
|
||||||
public void testErrorType() throws Exception {
|
public void testErrorType() throws Exception {
|
||||||
doTest("compiler/testData/renderer/ErrorType.kt");
|
doTest("compiler/testData/renderer/ErrorType.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@TestMetadata("FunctionTypes.kt")
|
||||||
public void testFunctionTypes() throws Exception {
|
public void testFunctionTypes() throws Exception {
|
||||||
doTest("compiler/testData/renderer/FunctionTypes.kt");
|
doTest("compiler/testData/renderer/FunctionTypes.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@TestMetadata("GlobalFunctions.kt")
|
||||||
public void testGlobalFunctions() throws Exception {
|
public void testGlobalFunctions() throws Exception {
|
||||||
doTest("compiler/testData/renderer/GlobalFunctions.kt");
|
doTest("compiler/testData/renderer/GlobalFunctions.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@TestMetadata("GlobalProperties.kt")
|
||||||
public void testGlobalProperties() throws Exception {
|
public void testGlobalProperties() throws Exception {
|
||||||
doTest("compiler/testData/renderer/GlobalProperties.kt");
|
doTest("compiler/testData/renderer/GlobalProperties.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@TestMetadata("InheritedMembersVisibility.kt")
|
||||||
public void testInheritedMembersVisibility() throws Exception {
|
public void testInheritedMembersVisibility() throws Exception {
|
||||||
doTest("compiler/testData/renderer/InheritedMembersVisibility.kt");
|
doTest("compiler/testData/renderer/InheritedMembersVisibility.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@TestMetadata("TupleTypes.kt")
|
||||||
public void testTupleTypes() throws Exception {
|
public void testTupleTypes() throws Exception {
|
||||||
doTest("compiler/testData/renderer/TupleTypes.kt");
|
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 {
|
public static class DescriptorRenderer extends AbstractLazyResolveDescriptorRendererTest {
|
||||||
@Test
|
|
||||||
public void testAllFilesPresentInDescriptorRenderer() throws Exception {
|
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 {
|
public void testClassObject() throws Exception {
|
||||||
doTest("compiler/testData/lazyResolve/descriptorRenderer/ClassObject.kt");
|
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.google.common.collect.Lists;
|
||||||
import com.intellij.openapi.util.io.FileUtil;
|
import com.intellij.openapi.util.io.FileUtil;
|
||||||
|
import junit.framework.TestCase;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -29,100 +30,11 @@ import java.util.*;
|
|||||||
*/
|
*/
|
||||||
public class TestGenerator {
|
public class TestGenerator {
|
||||||
|
|
||||||
public interface TargetTestFramework {
|
private static final List<String> JUNIT3_IMPORTS = Arrays.asList(
|
||||||
List<String> getImports();
|
"junit.framework.Assert",
|
||||||
|
"junit.framework.Test",
|
||||||
void generateSuiteClassAnnotations(@NotNull TestGenerator testGenerator, @NotNull Printer p);
|
"junit.framework.TestSuite"
|
||||||
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 final String baseDir;
|
private final String baseDir;
|
||||||
private final String suiteClassPackage;
|
private final String suiteClassPackage;
|
||||||
@@ -131,28 +43,14 @@ public class TestGenerator {
|
|||||||
private final String baseTestClassName;
|
private final String baseTestClassName;
|
||||||
private final Collection<TestClassModel> testClassModels;
|
private final Collection<TestClassModel> testClassModels;
|
||||||
private final String generatorName;
|
private final String generatorName;
|
||||||
private final TargetTestFramework targetTestFramework;
|
|
||||||
|
|
||||||
public TestGenerator(
|
public TestGenerator(
|
||||||
@NotNull String baseDir,
|
@NotNull String baseDir,
|
||||||
@NotNull String suiteClassPackage,
|
@NotNull String suiteClassPackage,
|
||||||
@NotNull String suiteClassName,
|
@NotNull String suiteClassName,
|
||||||
@NotNull Class<?> baseTestClass,
|
@NotNull Class<? extends TestCase> baseTestClass,
|
||||||
@NotNull Collection<? extends TestClassModel> testClassModels,
|
@NotNull Collection<? extends TestClassModel> testClassModels,
|
||||||
@NotNull Class<?> generatorClass
|
@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.baseDir = baseDir;
|
||||||
this.suiteClassPackage = suiteClassPackage;
|
this.suiteClassPackage = suiteClassPackage;
|
||||||
@@ -161,7 +59,6 @@ public class TestGenerator {
|
|||||||
this.baseTestClassName = baseTestClass.getSimpleName();
|
this.baseTestClassName = baseTestClass.getSimpleName();
|
||||||
this.testClassModels = Lists.newArrayList(testClassModels);
|
this.testClassModels = Lists.newArrayList(testClassModels);
|
||||||
this.generatorName = generatorClass.getCanonicalName();
|
this.generatorName = generatorClass.getCanonicalName();
|
||||||
this.targetTestFramework = targetTestFramework;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void generateAndSave() throws IOException {
|
public void generateAndSave() throws IOException {
|
||||||
@@ -171,7 +68,7 @@ public class TestGenerator {
|
|||||||
p.print(FileUtil.loadFile(new File("injector-generator/copyright.txt")));
|
p.print(FileUtil.loadFile(new File("injector-generator/copyright.txt")));
|
||||||
p.println("package ", suiteClassPackage, ";");
|
p.println("package ", suiteClassPackage, ";");
|
||||||
p.println();
|
p.println();
|
||||||
for (String importedClassName : targetTestFramework.getImports()) {
|
for (String importedClassName : JUNIT3_IMPORTS) {
|
||||||
p.println("import ", importedClassName, ";");
|
p.println("import ", importedClassName, ";");
|
||||||
}
|
}
|
||||||
p.println();
|
p.println();
|
||||||
@@ -185,7 +82,6 @@ public class TestGenerator {
|
|||||||
p.println();
|
p.println();
|
||||||
|
|
||||||
p.println("/** This class is generated by {@link ", generatorName, "}. DO NOT MODIFY MANUALLY */");
|
p.println("/** This class is generated by {@link ", generatorName, "}. DO NOT MODIFY MANUALLY */");
|
||||||
targetTestFramework.generateSuiteClassAnnotations(this, p);
|
|
||||||
if (testClassModels.size() == 1) {
|
if (testClassModels.size() == 1) {
|
||||||
TestClassModel theOnlyTestClass = testClassModels.iterator().next();
|
TestClassModel theOnlyTestClass = testClassModels.iterator().next();
|
||||||
generateTestClass(p, new DelegatingTestClassModel(theOnlyTestClass) {
|
generateTestClass(p, new DelegatingTestClassModel(theOnlyTestClass) {
|
||||||
@@ -288,7 +184,6 @@ public class TestGenerator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void generateTestMethod(Printer p, TestMethodModel testMethodModel) {
|
private void generateTestMethod(Printer p, TestMethodModel testMethodModel) {
|
||||||
targetTestFramework.generateTestMethodAnnotations(this, p);
|
|
||||||
generateMetadata(p, testMethodModel);
|
generateMetadata(p, testMethodModel);
|
||||||
p.println("public void ", testMethodModel.getName(), "() throws Exception {");
|
p.println("public void ", testMethodModel.getName(), "() throws Exception {");
|
||||||
p.pushIndent();
|
p.pushIndent();
|
||||||
|
|||||||
Reference in New Issue
Block a user