diff --git a/compiler/tests/org/jetbrains/jet/JetTestUtils.java b/compiler/tests/org/jetbrains/jet/JetTestUtils.java index e32be9b8a5c..a88422f98cd 100644 --- a/compiler/tests/org/jetbrains/jet/JetTestUtils.java +++ b/compiler/tests/org/jetbrains/jet/JetTestUtils.java @@ -93,6 +93,8 @@ import static org.jetbrains.jet.jvm.compiler.LoadDescriptorUtil.compileKotlinToD import static org.jetbrains.jet.lang.psi.PsiPackage.JetPsiFactory; public class JetTestUtils { + public static final String TEST_GENERATOR_NAME = "org.jetbrains.jet.generators.tests.TestsPackage"; + private static final Pattern KT_FILES = Pattern.compile(".*?.kt"); private static final List filesToDelete = new ArrayList(); @@ -676,7 +678,6 @@ public class JetTestUtils { public static void assertAllTestsPresentByMetadata( @NotNull Class testCaseClass, - @NotNull String generatorClassFqName, @NotNull File testDataDir, @NotNull Pattern filenamePattern, boolean recursive @@ -693,11 +694,11 @@ public class JetTestUtils { for (File file : files) { if (file.isDirectory()) { if (recursive && containsTestData(file, filenamePattern)) { - assertTestClassPresentByMetadata(testCaseClass, generatorClassFqName, file); + assertTestClassPresentByMetadata(testCaseClass, file); } } else if (filenamePattern.matcher(file.getName()).matches()) { - assertFilePathPresent(file, rootFile, filePaths, generatorClassFqName); + assertFilePathPresent(file, rootFile, filePaths); } } } @@ -705,13 +706,12 @@ public class JetTestUtils { public static void assertAllTestsPresentInSingleGeneratedClass( @NotNull Class testCaseClass, - @NotNull final String generatorClassFqName, @NotNull File testDataDir, - @NotNull final Pattern filenamePattern) { + @NotNull final Pattern filenamePattern + ) { TestMetadata testClassMetadata = testCaseClass.getAnnotation(TestMetadata.class); Assert.assertNotNull("No metadata for class: " + testCaseClass, testClassMetadata); - String rootPath = testClassMetadata.value(); - final File rootFile = new File(rootPath); + final File rootFile = new File(testClassMetadata.value()); final Set filePaths = collectPathsMetadata(testCaseClass); @@ -719,7 +719,7 @@ public class JetTestUtils { @Override public boolean process(File file) { if (file.isFile() && filenamePattern.matcher(file.getName()).matches()) { - assertFilePathPresent(file, rootFile, filePaths, generatorClassFqName); + assertFilePathPresent(file, rootFile, filePaths); } return true; @@ -727,14 +727,14 @@ public class JetTestUtils { }); } - private static void assertFilePathPresent(File file, File rootFile, Set filePaths, String generatorClassFqName) { + private static void assertFilePathPresent(File file, File rootFile, Set filePaths) { String path = FileUtil.getRelativePath(rootFile, file); if (path != null) { String relativePath = FileUtil.nameToCompare(path); if (!filePaths.contains(relativePath)) { Assert.fail("Test data file missing from the generated test class: " + file + - pleaseReRunGenerator(generatorClassFqName)); + pleaseReRunGenerator()); } } } @@ -780,7 +780,6 @@ public class JetTestUtils { private static void assertTestClassPresentByMetadata( @NotNull Class outerClass, - @NotNull String generatorClassFqName, @NotNull File testDataDir ) { InnerTestClasses innerClassesAnnotation = outerClass.getAnnotation(InnerTestClasses.class); @@ -793,20 +792,19 @@ public class JetTestUtils { } Assert.fail("Test data directory missing from the generated test class: " + testDataDir + - pleaseReRunGenerator(generatorClassFqName)); + pleaseReRunGenerator()); } - private static String pleaseReRunGenerator(String generatorClassFqName) { - return "\nPlease re-run the generator: " + generatorClassFqName + - getLocationFormattedForConsole(generatorClassFqName); + private static String pleaseReRunGenerator() { + return "\nPlease re-run the generator: " + TEST_GENERATOR_NAME + getLocationFormattedForConsole(); } - private static String getLocationFormattedForConsole(String generatorClassFqName) { - return "(" + getSimpleName(generatorClassFqName) + ".java:1)"; + private static String getLocationFormattedForConsole() { + return "(" + getSimpleName() + ".java:1)"; } - private static String getSimpleName(String generatorClassFqName) { - return generatorClassFqName.substring(generatorClassFqName.lastIndexOf(".") + 1); + private static String getSimpleName() { + return TEST_GENERATOR_NAME.substring(TEST_GENERATOR_NAME.lastIndexOf(".") + 1); } @NotNull diff --git a/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt b/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt index 45c05992cc6..771dc2d4e92 100644 --- a/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt +++ b/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt @@ -614,8 +614,8 @@ private class TestGroup(val testsRoot: String, val testDataRoot: String) { fun testClass( baseTestClass: Class, suiteTestClass: String = getDefaultSuiteTestClass(baseTestClass), - init: TestClass.() -> Unit) { - + init: TestClass.() -> Unit + ) { val testClass = TestClass() testClass.init() @@ -624,13 +624,11 @@ private class TestGroup(val testsRoot: String, val testDataRoot: String) { baseTestClass.getPackage()!!.getName()!!, suiteTestClass, baseTestClass, - testClass.testModels, - "org.jetbrains.jet.generators.tests.TestsPackage" + testClass.testModels ).generateAndSave() } - inner class TestClass() { - + inner class TestClass { val testModels = ArrayList() fun model( diff --git a/generators/src/org/jetbrains/jet/generators/tests/generator/SimpleTestClassModel.java b/generators/src/org/jetbrains/jet/generators/tests/generator/SimpleTestClassModel.java index a715fe4bb43..ec52037e8d6 100644 --- a/generators/src/org/jetbrains/jet/generators/tests/generator/SimpleTestClassModel.java +++ b/generators/src/org/jetbrains/jet/generators/tests/generator/SimpleTestClassModel.java @@ -168,10 +168,10 @@ public class SimpleTestClassModel implements TestClassModel { } @Override - public void generateBody(@NotNull Printer p, @NotNull String generatorClassFqName) { + public void generateBody(@NotNull Printer p) { String assertTestsPresentStr = - String.format("JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), \"%s\", new File(\"%s\"), Pattern.compile(\"%s\"), %s);", - generatorClassFqName, JetTestUtils.getFilePath(rootFile), StringUtil.escapeStringCharacters(filenamePattern.pattern()), recursive); + String.format("JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File(\"%s\"), Pattern.compile(\"%s\"), %s);", + JetTestUtils.getFilePath(rootFile), StringUtil.escapeStringCharacters(filenamePattern.pattern()), recursive); p.println(assertTestsPresentStr); } diff --git a/generators/src/org/jetbrains/jet/generators/tests/generator/SimpleTestMethodModel.java b/generators/src/org/jetbrains/jet/generators/tests/generator/SimpleTestMethodModel.java index ef82585c137..2c0feea9cda 100644 --- a/generators/src/org/jetbrains/jet/generators/tests/generator/SimpleTestMethodModel.java +++ b/generators/src/org/jetbrains/jet/generators/tests/generator/SimpleTestMethodModel.java @@ -40,7 +40,7 @@ public class SimpleTestMethodModel implements TestMethodModel { } @Override - public void generateBody(@NotNull Printer p, @NotNull String generatorClassFqName) { + public void generateBody(@NotNull Printer p) { String filePath = JetTestUtils.getFilePath(file) + (file.isDirectory() ? "/" : ""); p.println(doTestMethodName, "(\"", filePath, "\");"); } diff --git a/generators/src/org/jetbrains/jet/generators/tests/generator/SingleClassTestModel.java b/generators/src/org/jetbrains/jet/generators/tests/generator/SingleClassTestModel.java index b65e95fbaa4..e9081e69593 100644 --- a/generators/src/org/jetbrains/jet/generators/tests/generator/SingleClassTestModel.java +++ b/generators/src/org/jetbrains/jet/generators/tests/generator/SingleClassTestModel.java @@ -117,10 +117,11 @@ public class SingleClassTestModel implements TestClassModel { } @Override - public void generateBody(@NotNull Printer p, @NotNull String generatorClassFqName) { + public void generateBody(@NotNull Printer p) { String assertTestsPresentStr = String.format( - "JetTestUtils.assertAllTestsPresentInSingleGeneratedClass(this.getClass(), \"%s\", new File(\"%s\"), Pattern.compile(\"%s\"));", - generatorClassFqName, JetTestUtils.getFilePath(rootFile), StringUtil.escapeStringCharacters(filenamePattern.pattern())); + "JetTestUtils.assertAllTestsPresentInSingleGeneratedClass(this.getClass(), new File(\"%s\"), Pattern.compile(\"%s\"));", + JetTestUtils.getFilePath(rootFile), StringUtil.escapeStringCharacters(filenamePattern.pattern()) + ); p.println(assertTestsPresentStr); } diff --git a/generators/src/org/jetbrains/jet/generators/tests/generator/TestGenerator.java b/generators/src/org/jetbrains/jet/generators/tests/generator/TestGenerator.java index 9f03dd374f1..35240a2bca8 100644 --- a/generators/src/org/jetbrains/jet/generators/tests/generator/TestGenerator.java +++ b/generators/src/org/jetbrains/jet/generators/tests/generator/TestGenerator.java @@ -21,6 +21,7 @@ import com.intellij.openapi.util.io.FileUtil; import com.intellij.util.containers.ContainerUtil; import junit.framework.TestCase; import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.JetTestUtils; import org.jetbrains.jet.di.GeneratorsFileUtil; import org.jetbrains.jet.utils.Printer; @@ -38,13 +39,10 @@ public class TestGenerator { private static final Set GENERATED_FILES = ContainerUtil.newHashSet(); - private final String baseDir; private final String suiteClassPackage; private final String suiteClassName; - private final String baseTestClassPackage; private final String baseTestClassName; private final Collection testClassModels; - private final String generatorName; private final String testSourceFilePath; public TestGenerator( @@ -52,18 +50,14 @@ public class TestGenerator { @NotNull String suiteClassPackage, @NotNull String suiteClassName, @NotNull Class baseTestClass, - @NotNull Collection testClassModels, - @NotNull String generatorClass + @NotNull Collection testClassModels ) { - this.baseDir = baseDir; this.suiteClassPackage = suiteClassPackage; this.suiteClassName = suiteClassName; - this.baseTestClassPackage = baseTestClass.getPackage().getName(); this.baseTestClassName = baseTestClass.getSimpleName(); this.testClassModels = Lists.newArrayList(testClassModels); - this.generatorName = generatorClass; - this.testSourceFilePath = this.baseDir + "/" + this.suiteClassPackage.replace(".", "/") + "/" + this.suiteClassName + ".java"; + this.testSourceFilePath = baseDir + "/" + this.suiteClassPackage.replace(".", "/") + "/" + this.suiteClassName + ".java"; if (!GENERATED_FILES.add(testSourceFilePath)) { throw new IllegalArgumentException("Same test file already generated in current session: " + testSourceFilePath); @@ -91,8 +85,7 @@ public class TestGenerator { p.println("import ", baseTestClassPackage, ".", baseTestClassName, ";"); p.println(); - - p.println("/** This class is generated by {@link ", generatorName, "}. DO NOT MODIFY MANUALLY */"); + p.println("/** This class is generated by {@link ", JetTestUtils.TEST_GENERATOR_NAME, "}. DO NOT MODIFY MANUALLY */"); generateSuppressAllWarnings(p); if (testClassModels.size() == 1) { @@ -198,12 +191,12 @@ public class TestGenerator { p.println("}"); } - private void generateTestMethod(Printer p, TestMethodModel testMethodModel) { + private static void generateTestMethod(Printer p, TestMethodModel testMethodModel) { generateMetadata(p, testMethodModel); p.println("public void ", testMethodModel.getName(), "() throws Exception {"); p.pushIndent(); - testMethodModel.generateBody(p, generatorName); + testMethodModel.generateBody(p); p.popIndent(); p.println("}"); diff --git a/generators/src/org/jetbrains/jet/generators/tests/generator/TestMethodModel.java b/generators/src/org/jetbrains/jet/generators/tests/generator/TestMethodModel.java index 7009a9d8d83..57772fb8f05 100644 --- a/generators/src/org/jetbrains/jet/generators/tests/generator/TestMethodModel.java +++ b/generators/src/org/jetbrains/jet/generators/tests/generator/TestMethodModel.java @@ -20,5 +20,5 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.utils.Printer; public interface TestMethodModel extends TestEntityModel { - void generateBody(@NotNull Printer p, @NotNull String generatorClassFqName); + void generateBody(@NotNull Printer p); }