Formatter tests: Separate test model for tests with inverted settings

This commit is contained in:
Pavel V. Talanov
2014-01-15 18:03:34 +04:00
parent 586ac35c7b
commit 745252c23e
6 changed files with 398 additions and 278 deletions
@@ -83,6 +83,7 @@ import org.jetbrains.jet.j2k.test.AbstractJavaToKotlinConverterBasicTest
import org.jetbrains.jet.plugin.conversion.copy.AbstractJavaToKotlinCopyPasteConversionTest
import org.jetbrains.jet.shortenRefs.AbstractShortenRefsTest
import org.jetbrains.jet.completion.handlers.AbstractSmartCompletionHandlerTest
import org.jetbrains.jet.generators.tests.generator.TestGeneratorUtil
import org.jetbrains.jet.resolve.AbstractAdditionalLazyResolveDescriptorRendererTest
import org.jetbrains.jet.resolve.AbstractReferenceResolveInLibrarySourcesTest
@@ -414,7 +415,9 @@ fun main(args: Array<String>) {
}
testClass(javaClass<AbstractJetFormatterTest>()) {
model("formatter", pattern = """^([^\.]+)\.kt$""")
model("formatter", pattern = """^([^\.]+)\.after.kt$""")
model("formatter", pattern = """^([^\.]+)\.after.inv.kt$""",
testMethod = "doTestInverted", testClassName = "FormatterInverted")
}
testClass(javaClass<AbstractDiagnosticMessageTest>()) {
@@ -482,14 +485,16 @@ private class TestGroup(val testsRoot: String, val testDataRoot: String) {
extension: String? = "kt", // null string means dir (name without dot)
pattern: String = if (extension == null) """^([^\.]+)$""" else "^(.+)\\.$extension\$",
testMethod: String = "doTest",
singleClass: Boolean = false
singleClass: Boolean = false,
testClassName: String? = null
) {
val rootFile = File(testDataRoot + "/" + relativeRootPath)
val compiledPattern = Pattern.compile(pattern)
val className = testClassName ?: TestGeneratorUtil.fileNameToJavaIdentifier(rootFile)
testModels.add(if (singleClass)
SingleClassTestModel(rootFile, compiledPattern, testMethod)
SingleClassTestModel(rootFile, compiledPattern, testMethod, className)
else
SimpleTestClassModel(rootFile, recursive, compiledPattern, testMethod))
SimpleTestClassModel(rootFile, recursive, compiledPattern, testMethod, className))
}
}
@@ -47,12 +47,18 @@ public class SimpleTestClassModel implements TestClassModel {
private Collection<TestClassModel> innerTestClasses;
private Collection<TestMethodModel> testMethods;
public SimpleTestClassModel(@NotNull File rootFile, boolean recursive, @NotNull Pattern filenamePattern, @NotNull String doTestMethodName) {
public SimpleTestClassModel(
@NotNull File rootFile,
boolean recursive,
@NotNull Pattern filenamePattern,
@NotNull String doTestMethodName,
@NotNull String testClassName
) {
this.rootFile = rootFile;
this.recursive = recursive;
this.filenamePattern = filenamePattern;
this.doTestMethodName = doTestMethodName;
this.testClassName = StringUtil.capitalize(TestGeneratorUtil.escapeForJavaIdentifier(rootFile.getName()));
this.testClassName = testClassName;
}
@NotNull
@@ -69,7 +75,8 @@ public class SimpleTestClassModel implements TestClassModel {
for (File file : files) {
if (file.isDirectory()) {
if (dirHasFilesInside(file)) {
children.add(new SimpleTestClassModel(file, true, filenamePattern, doTestMethodName));
String innerTestClassName = TestGeneratorUtil.fileNameToJavaIdentifier(file);
children.add(new SimpleTestClassModel(file, true, filenamePattern, doTestMethodName, innerTestClassName));
}
}
}
@@ -40,11 +40,16 @@ public class SingleClassTestModel implements TestClassModel {
private Collection<TestMethodModel> testMethods;
public SingleClassTestModel(@NotNull File rootFile, @NotNull Pattern filenamePattern, @NotNull String doTestMethodName) {
public SingleClassTestModel(
@NotNull File rootFile,
@NotNull Pattern filenamePattern,
@NotNull String doTestMethodName,
@NotNull String testClassName
) {
this.rootFile = rootFile;
this.filenamePattern = filenamePattern;
this.doTestMethodName = doTestMethodName;
this.testClassName = StringUtil.capitalize(TestGeneratorUtil.escapeForJavaIdentifier(rootFile.getName()));
this.testClassName = testClassName;
}
@NotNull
@@ -16,7 +16,13 @@
package org.jetbrains.jet.generators.tests.generator;
import com.intellij.openapi.util.text.StringUtil;
import org.jetbrains.annotations.NotNull;
import java.io.File;
public class TestGeneratorUtil {
@NotNull
public static String escapeForJavaIdentifier(String fileName) {
// A file name may contain characters (like ".") that can't be a part of method name
StringBuilder result = new StringBuilder();
@@ -32,4 +38,9 @@ public class TestGeneratorUtil {
}
return result.toString();
}
@NotNull
public static String fileNameToJavaIdentifier(@NotNull File file) {
return StringUtil.capitalize(escapeForJavaIdentifier(file.getName()));
}
}