Checking file name case for some of the auto-generated tests

This commit is contained in:
Valentin Kipyatkov
2015-08-31 22:48:18 +03:00
parent 10f7d6d7dd
commit ed2f5ccfa2
5 changed files with 44 additions and 16 deletions
@@ -122,7 +122,7 @@ import org.jetbrains.kotlin.serialization.AbstractLocalClassProtoTest
import org.jetbrains.kotlin.shortenRefs.AbstractShortenRefsTest
import org.jetbrains.kotlin.types.AbstractJetTypeBindingTest
import java.io.File
import java.util.ArrayList
import java.util.*
import java.util.regex.Pattern
fun main(args: Array<String>) {
@@ -369,7 +369,7 @@ fun main(args: Array<String>) {
}
testClass(javaClass<AbstractQuickFixTest>()) {
model("quickfix", pattern = "^([\\w\\-_]+)\\.kt$")
model("quickfix", pattern = "^([\\w\\-_]+)\\.kt$", filenameStartsLowerCase = true)
}
testClass(javaClass<AbstractGotoSuperTest>()) {
@@ -387,7 +387,7 @@ fun main(args: Array<String>) {
testClass(javaClass<AbstractNavigateToLibrarySourceTest>()) {
model("decompiler/navigation/usercode")
model("decompiler/navigation/usercode", testClassName="UsercodeWithJSModule", testMethod = "doWithJSModuleTest")
model("decompiler/navigation/usercode", testClassName ="UsercodeWithJSModule", testMethod = "doWithJSModuleTest")
}
testClass(javaClass<AbstractKotlinGotoImplementationTest>()) {
@@ -524,7 +524,7 @@ fun main(args: Array<String>) {
}
testClass(javaClass<AbstractMultiFileIntentionTest>()) {
model("multiFileIntentions", extension = "test", singleClass = true)
model("multiFileIntentions", extension = "test", singleClass = true, filenameStartsLowerCase = true)
}
testClass(javaClass<AbstractJetMultiFileInspectionTest>()) {
@@ -873,7 +873,7 @@ fun main(args: Array<String>) {
}
testClass(javaClass<AbstractMultiModuleTest>()) {
model("multiModule/cases", extension = null, recursive=false)
model("multiModule/cases", extension = null, recursive =false)
}
testClass(javaClass<AbstractInlineJsTest>()) {
@@ -889,7 +889,7 @@ fun main(args: Array<String>) {
}
testClass(javaClass<AbstractInlineMultiModuleTest>()) {
model("inlineMultiModule/cases", extension = null, recursive=false)
model("inlineMultiModule/cases", extension = null, recursive =false)
}
testClass(javaClass<AbstractLabelTest>()) {
@@ -971,7 +971,8 @@ private class TestGroup(val testsRoot: String, val testDataRoot: String) {
singleClass: Boolean = false,
testClassName: String? = null,
targetBackend: TargetBackend = TargetBackend.ANY,
excludeDirs: List<String> = listOf()
excludeDirs: List<String> = listOf(),
filenameStartsLowerCase: Boolean? = null
) {
val rootFile = File(testDataRoot + "/" + relativeRootPath)
val compiledPattern = Pattern.compile(pattern)
@@ -979,12 +980,11 @@ private class TestGroup(val testsRoot: String, val testDataRoot: String) {
testModels.add(
if (singleClass) {
if (excludeDirs.isNotEmpty()) error("excludeDirs is unsupported for SingleClassTestModel yet")
SingleClassTestModel(rootFile, compiledPattern, testMethod, className, targetBackend)
SingleClassTestModel(rootFile, compiledPattern, filenameStartsLowerCase, testMethod, className, targetBackend)
}
else {
SimpleTestClassModel(
rootFile, recursive, excludeParentDirs, compiledPattern, testMethod, className, targetBackend, excludeDirs
)
SimpleTestClassModel(rootFile, recursive, excludeParentDirs,
compiledPattern, filenameStartsLowerCase, testMethod, className, targetBackend, excludeDirs)
}
)
}
@@ -44,6 +44,8 @@ public class SimpleTestClassModel implements TestClassModel {
private final boolean excludeParentDirs;
@NotNull
private final Pattern filenamePattern;
@Nullable
private final Boolean checkFilenameStartsLowerCase;
@NotNull
private final String doTestMethodName;
@NotNull
@@ -62,6 +64,7 @@ public class SimpleTestClassModel implements TestClassModel {
boolean recursive,
boolean excludeParentDirs,
@NotNull Pattern filenamePattern,
@Nullable Boolean checkFilenameStartsLowerCase,
@NotNull String doTestMethodName,
@NotNull String testClassName,
@NotNull TargetBackend targetBackend,
@@ -74,6 +77,7 @@ public class SimpleTestClassModel implements TestClassModel {
this.doTestMethodName = doTestMethodName;
this.testClassName = testClassName;
this.targetBackend = targetBackend;
this.checkFilenameStartsLowerCase = checkFilenameStartsLowerCase;
this.excludeDirs = excludeDirs.isEmpty() ? Collections.<String>emptySet() : new LinkedHashSet<String>(excludeDirs);
}
@@ -91,8 +95,10 @@ public class SimpleTestClassModel implements TestClassModel {
for (File file : files) {
if (file.isDirectory() && dirHasFilesInside(file) && !excludeDirs.contains(file.getName())) {
String innerTestClassName = TestGeneratorUtil.fileNameToJavaIdentifier(file);
children.add(new SimpleTestClassModel(file, true, excludeParentDirs, filenamePattern, doTestMethodName,
innerTestClassName, targetBackend, excludesStripOneDirectory(file.getName())));
children.add(new SimpleTestClassModel(
file, true, excludeParentDirs, filenamePattern, checkFilenameStartsLowerCase,
doTestMethodName, innerTestClassName, targetBackend, excludesStripOneDirectory(file.getName()))
);
}
}
}
@@ -144,7 +150,8 @@ public class SimpleTestClassModel implements TestClassModel {
public Collection<TestMethodModel> getTestMethods() {
if (testMethods == null) {
if (!rootFile.isDirectory()) {
testMethods = Collections.<TestMethodModel>singletonList(new SimpleTestMethodModel(rootFile, rootFile, doTestMethodName, filenamePattern,
testMethods = Collections.<TestMethodModel>singletonList(new SimpleTestMethodModel(rootFile, rootFile, doTestMethodName,
filenamePattern, checkFilenameStartsLowerCase,
targetBackend));
}
else {
@@ -161,7 +168,7 @@ public class SimpleTestClassModel implements TestClassModel {
continue;
}
result.add(new SimpleTestMethodModel(rootFile, file, doTestMethodName, filenamePattern, targetBackend));
result.add(new SimpleTestMethodModel(rootFile, file, doTestMethodName, filenamePattern, checkFilenameStartsLowerCase, targetBackend));
}
}
}
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.generators.tests.generator;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.test.InTextDirectivesUtils;
import org.jetbrains.kotlin.test.JetTestUtils;
import org.jetbrains.kotlin.utils.Printer;
@@ -50,6 +51,7 @@ public class SimpleTestMethodModel implements TestMethodModel {
@NotNull File file,
@NotNull String doTestMethodName,
@NotNull Pattern filenamePattern,
@Nullable Boolean checkFilenameStartsLowerCase,
@NotNull TargetBackend targetBackend
) {
this.rootDir = rootDir;
@@ -57,6 +59,16 @@ public class SimpleTestMethodModel implements TestMethodModel {
this.doTestMethodName = doTestMethodName;
this.filenamePattern = filenamePattern;
this.targetBackend = targetBackend;
if (checkFilenameStartsLowerCase != null) {
char c = file.getName().charAt(0);
if (checkFilenameStartsLowerCase) {
assert Character.isLowerCase(c) : "Invalid file name '" + file + "', file name should start with lower-case letter";
}
else {
assert Character.isUpperCase(c) : "Invalid file name '" + file + "', file name should start with upper-case letter";
}
}
}
@Override
@@ -40,6 +40,8 @@ public class SingleClassTestModel implements TestClassModel {
private final File rootFile;
@NotNull
private final Pattern filenamePattern;
@Nullable
private final Boolean checkFilenameStartsLowerCase;
@NotNull
private final String doTestMethodName;
@NotNull
@@ -52,12 +54,14 @@ public class SingleClassTestModel implements TestClassModel {
public SingleClassTestModel(
@NotNull File rootFile,
@NotNull Pattern filenamePattern,
@Nullable Boolean checkFilenameStartsLowerCase,
@NotNull String doTestMethodName,
@NotNull String testClassName,
@NotNull TargetBackend targetBackend
) {
this.rootFile = rootFile;
this.filenamePattern = filenamePattern;
this.checkFilenameStartsLowerCase = checkFilenameStartsLowerCase;
this.doTestMethodName = doTestMethodName;
this.testClassName = testClassName;
this.targetBackend = targetBackend;
@@ -103,7 +107,8 @@ public class SingleClassTestModel implements TestClassModel {
@NotNull
protected Collection<TestMethodModel> getTestMethodsFromFile(File file) {
return Collections.<TestMethodModel>singletonList(new SimpleTestMethodModel(rootFile, file, doTestMethodName, filenamePattern,
return Collections.<TestMethodModel>singletonList(new SimpleTestMethodModel(rootFile, file, doTestMethodName,
filenamePattern, checkFilenameStartsLowerCase,
targetBackend));
}
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.generators.tests.generator;
import com.intellij.openapi.util.text.StringUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File;
@@ -43,4 +44,7 @@ public class TestGeneratorUtil {
public static String fileNameToJavaIdentifier(@NotNull File file) {
return StringUtil.capitalize(escapeForJavaIdentifier(file.getName()));
}
public static void checkCase(@NotNull File file, @Nullable Boolean shouldStartLowerCase) {
}
}