From ed2f5ccfa2f44150a960aba107ced44c06d30665 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Mon, 31 Aug 2015 22:48:18 +0300 Subject: [PATCH] Checking file name case for some of the auto-generated tests --- .../kotlin/generators/tests/GenerateTests.kt | 22 +++++++++---------- .../tests/generator/SimpleTestClassModel.java | 15 +++++++++---- .../generator/SimpleTestMethodModel.java | 12 ++++++++++ .../tests/generator/SingleClassTestModel.java | 7 +++++- .../tests/generator/TestGeneratorUtil.java | 4 ++++ 5 files changed, 44 insertions(+), 16 deletions(-) diff --git a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt index 4a337c71f6d..88c07a61eaf 100644 --- a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt +++ b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt @@ -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) { @@ -369,7 +369,7 @@ fun main(args: Array) { } testClass(javaClass()) { - model("quickfix", pattern = "^([\\w\\-_]+)\\.kt$") + model("quickfix", pattern = "^([\\w\\-_]+)\\.kt$", filenameStartsLowerCase = true) } testClass(javaClass()) { @@ -387,7 +387,7 @@ fun main(args: Array) { testClass(javaClass()) { model("decompiler/navigation/usercode") - model("decompiler/navigation/usercode", testClassName="UsercodeWithJSModule", testMethod = "doWithJSModuleTest") + model("decompiler/navigation/usercode", testClassName ="UsercodeWithJSModule", testMethod = "doWithJSModuleTest") } testClass(javaClass()) { @@ -524,7 +524,7 @@ fun main(args: Array) { } testClass(javaClass()) { - model("multiFileIntentions", extension = "test", singleClass = true) + model("multiFileIntentions", extension = "test", singleClass = true, filenameStartsLowerCase = true) } testClass(javaClass()) { @@ -873,7 +873,7 @@ fun main(args: Array) { } testClass(javaClass()) { - model("multiModule/cases", extension = null, recursive=false) + model("multiModule/cases", extension = null, recursive =false) } testClass(javaClass()) { @@ -889,7 +889,7 @@ fun main(args: Array) { } testClass(javaClass()) { - model("inlineMultiModule/cases", extension = null, recursive=false) + model("inlineMultiModule/cases", extension = null, recursive =false) } testClass(javaClass()) { @@ -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 = listOf() + excludeDirs: List = 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) } ) } diff --git a/generators/src/org/jetbrains/kotlin/generators/tests/generator/SimpleTestClassModel.java b/generators/src/org/jetbrains/kotlin/generators/tests/generator/SimpleTestClassModel.java index 6696d563296..121c3299ec0 100644 --- a/generators/src/org/jetbrains/kotlin/generators/tests/generator/SimpleTestClassModel.java +++ b/generators/src/org/jetbrains/kotlin/generators/tests/generator/SimpleTestClassModel.java @@ -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.emptySet() : new LinkedHashSet(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 getTestMethods() { if (testMethods == null) { if (!rootFile.isDirectory()) { - testMethods = Collections.singletonList(new SimpleTestMethodModel(rootFile, rootFile, doTestMethodName, filenamePattern, + testMethods = Collections.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)); } } } diff --git a/generators/src/org/jetbrains/kotlin/generators/tests/generator/SimpleTestMethodModel.java b/generators/src/org/jetbrains/kotlin/generators/tests/generator/SimpleTestMethodModel.java index 283290f3b12..6a71e26be81 100644 --- a/generators/src/org/jetbrains/kotlin/generators/tests/generator/SimpleTestMethodModel.java +++ b/generators/src/org/jetbrains/kotlin/generators/tests/generator/SimpleTestMethodModel.java @@ -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 diff --git a/generators/src/org/jetbrains/kotlin/generators/tests/generator/SingleClassTestModel.java b/generators/src/org/jetbrains/kotlin/generators/tests/generator/SingleClassTestModel.java index b2c2c696d18..b989c580830 100644 --- a/generators/src/org/jetbrains/kotlin/generators/tests/generator/SingleClassTestModel.java +++ b/generators/src/org/jetbrains/kotlin/generators/tests/generator/SingleClassTestModel.java @@ -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 getTestMethodsFromFile(File file) { - return Collections.singletonList(new SimpleTestMethodModel(rootFile, file, doTestMethodName, filenamePattern, + return Collections.singletonList(new SimpleTestMethodModel(rootFile, file, doTestMethodName, + filenamePattern, checkFilenameStartsLowerCase, targetBackend)); } diff --git a/generators/src/org/jetbrains/kotlin/generators/tests/generator/TestGeneratorUtil.java b/generators/src/org/jetbrains/kotlin/generators/tests/generator/TestGeneratorUtil.java index d7ebfc91e2e..5209760f296 100644 --- a/generators/src/org/jetbrains/kotlin/generators/tests/generator/TestGeneratorUtil.java +++ b/generators/src/org/jetbrains/kotlin/generators/tests/generator/TestGeneratorUtil.java @@ -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) { + } }