diff --git a/compiler/tests/org/jetbrains/jet/JetTestUtils.java b/compiler/tests/org/jetbrains/jet/JetTestUtils.java index bf8a2383b3b..59638523f89 100644 --- a/compiler/tests/org/jetbrains/jet/JetTestUtils.java +++ b/compiler/tests/org/jetbrains/jet/JetTestUtils.java @@ -454,7 +454,7 @@ public class JetTestUtils { @NotNull Class testCaseClass, @NotNull String generatorClassFqName, @NotNull File testDataDir, - @NotNull String extension, + @NotNull Pattern filenamePattern, boolean recursive ) { TestMetadata testClassMetadata = testCaseClass.getAnnotation(TestMetadata.class); @@ -474,12 +474,12 @@ public class JetTestUtils { if (files != null) { for (File file : files) { if (file.isDirectory()) { - if (recursive && containsTestData(file, extension)) { + if (recursive && containsTestData(file, filenamePattern)) { assertTestClassPresentByMetadata(testCaseClass, generatorClassFqName, file); } } else { - if (file.getName().endsWith("." + extension)) { + if (filenamePattern.matcher(file.getName()).matches()) { String relativePath = FileUtil.getRelativePath(rootFile, file); if (!filePaths.contains(relativePath)) { Assert.fail("Test data file missing from the generated test class: " + @@ -492,17 +492,17 @@ public class JetTestUtils { } } - private static boolean containsTestData(File dir, String extension) { + private static boolean containsTestData(File dir, Pattern filenamePattern) { File[] files = dir.listFiles(); assert files != null; for (File file : files) { if (file.isDirectory()) { - if (containsTestData(file, extension)) { + if (containsTestData(file, filenamePattern)) { return true; } } else { - if (FileUtil.getExtension(file.getName()).equals(extension)) { + if (filenamePattern.matcher(file.getName()).matches()) { return true; } } diff --git a/compiler/tests/org/jetbrains/jet/test/generator/SimpleTestClassModel.java b/compiler/tests/org/jetbrains/jet/test/generator/SimpleTestClassModel.java index ea0344fa248..6f3f6771394 100644 --- a/compiler/tests/org/jetbrains/jet/test/generator/SimpleTestClassModel.java +++ b/compiler/tests/org/jetbrains/jet/test/generator/SimpleTestClassModel.java @@ -27,6 +27,7 @@ import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.List; +import java.util.regex.Pattern; public class SimpleTestClassModel implements TestClassModel { private static final Comparator BY_NAME = new Comparator() { @@ -37,17 +38,17 @@ public class SimpleTestClassModel implements TestClassModel { }; private final File rootFile; private final boolean recursive; - private final String extension; + private final Pattern filenamePattern; private final String doTestMethodName; private final String testClassName; private Collection innerTestClasses; private Collection testMethods; - public SimpleTestClassModel(@NotNull File rootFile, boolean recursive, @NotNull String extension, @NotNull String doTestMethodName) { + public SimpleTestClassModel(@NotNull File rootFile, boolean recursive, @NotNull Pattern filenamePattern, @NotNull String doTestMethodName) { this.rootFile = rootFile; this.recursive = recursive; - this.extension = extension; + this.filenamePattern = filenamePattern; this.doTestMethodName = doTestMethodName; this.testClassName = StringUtil.capitalize(TestGeneratorUtil.escapeForJavaIdentifier(rootFile.getName())); } @@ -64,7 +65,7 @@ public class SimpleTestClassModel implements TestClassModel { if (files != null) { for (File file : files) { if (file.isDirectory()) { - children.add(new SimpleTestClassModel(file, recursive, extension, doTestMethodName)); + children.add(new SimpleTestClassModel(file, recursive, filenamePattern, doTestMethodName)); } } } @@ -79,7 +80,7 @@ public class SimpleTestClassModel implements TestClassModel { public Collection getTestMethods() { if (testMethods == null) { if (!rootFile.isDirectory()) { - testMethods = Collections.singletonList(new SimpleTestMethodModel(rootFile, rootFile, doTestMethodName)); + testMethods = Collections.singletonList(new SimpleTestMethodModel(rootFile, rootFile, doTestMethodName, filenamePattern)); } else { List result = Lists.newArrayList(); @@ -89,8 +90,8 @@ public class SimpleTestClassModel implements TestClassModel { File[] listFiles = rootFile.listFiles(); if (listFiles != null) { for (File file : listFiles) { - if (!file.isDirectory() && file.getName().endsWith("." + extension)) { - result.add(new SimpleTestMethodModel(rootFile, file, doTestMethodName)); + if (!file.isDirectory() && filenamePattern.matcher(file.getName()).matches()) { + result.add(new SimpleTestMethodModel(rootFile, file, doTestMethodName, filenamePattern)); } } } @@ -127,8 +128,8 @@ public class SimpleTestClassModel implements TestClassModel { @Override public void generateBody(@NotNull Printer p, @NotNull String generatorClassFqName) { String assertTestsPresentStr = - String.format("JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), \"%s\", new File(\"%s\"), \"%s\", %s);", - generatorClassFqName, JetTestUtils.getFilePath(rootFile), extension, recursive); + String.format("JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), \"%s\", new File(\"%s\"), Pattern.compile(\"%s\"), %s);", + generatorClassFqName, JetTestUtils.getFilePath(rootFile), StringUtil.escapeStringCharacters(filenamePattern.pattern()), recursive); p.println(assertTestsPresentStr); } diff --git a/compiler/tests/org/jetbrains/jet/test/generator/SimpleTestMethodModel.java b/compiler/tests/org/jetbrains/jet/test/generator/SimpleTestMethodModel.java index c0a03d1e2e2..e7be189bcee 100644 --- a/compiler/tests/org/jetbrains/jet/test/generator/SimpleTestMethodModel.java +++ b/compiler/tests/org/jetbrains/jet/test/generator/SimpleTestMethodModel.java @@ -23,16 +23,19 @@ import org.jetbrains.jet.JetTestUtils; import org.jetbrains.jet.utils.Printer; import java.io.File; +import java.util.regex.Pattern; public class SimpleTestMethodModel implements TestMethodModel { private final File rootDir; private final File file; private final String doTestMethodName; + private final Pattern filenamePattern; - public SimpleTestMethodModel(File rootDir, File file, String doTestMethodName) { + public SimpleTestMethodModel(File rootDir, File file, String doTestMethodName, Pattern filenamePattern) { this.rootDir = rootDir; this.file = file; this.doTestMethodName = doTestMethodName; + this.filenamePattern = filenamePattern; } @Override diff --git a/compiler/tests/org/jetbrains/jet/test/generator/TestGenerator.java b/compiler/tests/org/jetbrains/jet/test/generator/TestGenerator.java index 4e6dc5c521f..4947ca006ff 100644 --- a/compiler/tests/org/jetbrains/jet/test/generator/TestGenerator.java +++ b/compiler/tests/org/jetbrains/jet/test/generator/TestGenerator.java @@ -72,6 +72,7 @@ public class TestGenerator { p.println(); p.println("import java.io.File;"); + p.println("import java.util.regex.Pattern;"); p.println("import org.jetbrains.jet.JetTestUtils;"); p.println("import org.jetbrains.jet.test.InnerTestClasses;"); p.println("import org.jetbrains.jet.test.TestMetadata;"); diff --git a/generators/org/jetbrains/jet/generators/tests/GenerateTests.java b/generators/org/jetbrains/jet/generators/tests/GenerateTests.java index 996f0563132..68533db3581 100644 --- a/generators/org/jetbrains/jet/generators/tests/GenerateTests.java +++ b/generators/org/jetbrains/jet/generators/tests/GenerateTests.java @@ -39,6 +39,7 @@ import org.jetbrains.jet.test.generator.TestGenerator; import java.io.File; import java.io.IOException; import java.util.Arrays; +import java.util.regex.Pattern; public class GenerateTests { private static void generateTest( @@ -222,7 +223,7 @@ public class GenerateTests { @NotNull String extension, @NotNull String doTestMethodName ) { - return new SimpleTestClassModel(new File(rootPath), recursive, extension, doTestMethodName); + return new SimpleTestClassModel(new File(rootPath), recursive, Pattern.compile("^(.+)\\." + extension + "$"), doTestMethodName); } private GenerateTests() {