From 286b4c4d4bbb749efe50653ea572c96a918adc6d Mon Sep 17 00:00:00 2001 From: Stepan Koltsov Date: Fri, 27 Apr 2012 19:09:39 +0400 Subject: [PATCH] simplify filters in JetTestCaseBuilder --- .../org/jetbrains/jet/JetTestCaseBuilder.java | 48 ++++++++++--------- .../jet/checkers/JetPsiCheckerTest.java | 6 +-- .../jet/resolve/ResolveBaseTest.java | 2 +- 3 files changed, 29 insertions(+), 27 deletions(-) diff --git a/compiler/tests/org/jetbrains/jet/JetTestCaseBuilder.java b/compiler/tests/org/jetbrains/jet/JetTestCaseBuilder.java index fe2a6f79e90..e847e4215d4 100644 --- a/compiler/tests/org/jetbrains/jet/JetTestCaseBuilder.java +++ b/compiler/tests/org/jetbrains/jet/JetTestCaseBuilder.java @@ -53,37 +53,37 @@ public abstract class JetTestCaseBuilder { @NotNull public static TestSuite suiteForDirectory(String baseDataDir, @NotNull final String dataPath, boolean recursive, @NotNull NamedTestFactory factory) { - return suiteForDirectory(baseDataDir, dataPath, recursive, emptyFilter, factory); + return suiteForDirectory(baseDataDir, dataPath, recursive, kotlinFilter, factory); } @NotNull - public static TestSuite suiteForDirectory(String baseDataDir, @NotNull final String dataPath, boolean recursive, final FilenameFilter filter, @NotNull NamedTestFactory factory) { + public static TestSuite suiteForDirectory(String baseDataDir, @NotNull final String dataPath, boolean recursive, + @NotNull final FilenameFilter filter, @NotNull NamedTestFactory factory) { TestSuite suite = new TestSuite(dataPath); appendTestsInDirectory(baseDataDir, dataPath, recursive, filter, factory, suite); return suite; } - public static void appendTestsInDirectory(String baseDataDir, String dataPath, boolean recursive, final FilenameFilter filter, NamedTestFactory factory, TestSuite suite) { - final String extensionJet = ".jet"; - final String extensionKt = ".kt"; - final FilenameFilter extensionFilter = new FilenameFilter() { + public static FilenameFilter kotlinFilter = new FilenameFilter() { + @Override + public boolean accept(File dir, String name) { + return name.endsWith(".kt") || name.endsWith("jet"); + } + }; + + @NotNull + public static FilenameFilter and(@NotNull final FilenameFilter a, @NotNull final FilenameFilter b) { + return new FilenameFilter() { @Override public boolean accept(File dir, String name) { - return name.endsWith(extensionJet) || name.endsWith(extensionKt); + return a.accept(dir, name) && b.accept(dir, name); } }; - FilenameFilter resultFilter; - if (filter != emptyFilter) { - resultFilter = new FilenameFilter() { - @Override - public boolean accept(File file, String s) { - return extensionFilter.accept(file, s) && filter.accept(file, s); - } - }; - } - else { - resultFilter = extensionFilter; - } + } + + public static void appendTestsInDirectory(String baseDataDir, String dataPath, boolean recursive, @NotNull FilenameFilter filter, NamedTestFactory factory, TestSuite suite) { + final String extensionJet = ".jet"; + final String extensionKt = ".kt"; File dir = new File(baseDataDir + dataPath); FileFilter dirFilter = new FileFilter() { @Override @@ -100,13 +100,15 @@ public abstract class JetTestCaseBuilder { suite.addTest(suiteForDirectory(baseDataDir, dataPath + "/" + subdir.getName(), recursive, filter, factory)); } } - List files = Arrays.asList(dir.listFiles(resultFilter)); + List files = Arrays.asList(dir.listFiles(filter)); Collections.sort(files); for (File file : files) { String fileName = file.getName(); - assert fileName != null; - String extension = fileName.endsWith(extensionJet) ? extensionJet : extensionKt; - suite.addTest(factory.createTest(dataPath, fileName.substring(0, fileName.length() - extension.length()), file)); + String testName = + fileName.endsWith(extensionJet) ? fileName.substring(0, fileName.length() - extensionJet.length()) : + fileName.endsWith(extensionKt) ? fileName.substring(0, fileName.length() - extensionKt.length()) : + fileName; + suite.addTest(factory.createTest(dataPath, testName, file)); } } } diff --git a/idea/tests/org/jetbrains/jet/checkers/JetPsiCheckerTest.java b/idea/tests/org/jetbrains/jet/checkers/JetPsiCheckerTest.java index 197a63a9f52..be26bef3a28 100644 --- a/idea/tests/org/jetbrains/jet/checkers/JetPsiCheckerTest.java +++ b/idea/tests/org/jetbrains/jet/checkers/JetPsiCheckerTest.java @@ -71,21 +71,21 @@ public class JetPsiCheckerTest extends LightDaemonAnalyzerTestCase { public static Test suite() { TestSuite suite = new TestSuite(); - JetTestCaseBuilder.appendTestsInDirectory(PluginTestCaseBase.getTestDataPathBase(), "/checker/", false, JetTestCaseBuilder.emptyFilter, new JetTestCaseBuilder.NamedTestFactory() { + JetTestCaseBuilder.appendTestsInDirectory(PluginTestCaseBase.getTestDataPathBase(), "/checker/", false, JetTestCaseBuilder.kotlinFilter, new JetTestCaseBuilder.NamedTestFactory() { @NotNull @Override public Test createTest(@NotNull String dataPath, @NotNull String name, @NotNull File file) { return new JetPsiCheckerTest(dataPath, name); } }, suite); - JetTestCaseBuilder.appendTestsInDirectory(PluginTestCaseBase.getTestDataPathBase(), "/checker/regression/", false, JetTestCaseBuilder.emptyFilter, new JetTestCaseBuilder.NamedTestFactory() { + JetTestCaseBuilder.appendTestsInDirectory(PluginTestCaseBase.getTestDataPathBase(), "/checker/regression/", false, JetTestCaseBuilder.kotlinFilter, new JetTestCaseBuilder.NamedTestFactory() { @NotNull @Override public Test createTest(@NotNull String dataPath, @NotNull String name, @NotNull File file) { return new JetPsiCheckerTest(dataPath, name); } }, suite); - JetTestCaseBuilder.appendTestsInDirectory(PluginTestCaseBase.getTestDataPathBase(), "/checker/infos/", false, JetTestCaseBuilder.emptyFilter, new JetTestCaseBuilder.NamedTestFactory() { + JetTestCaseBuilder.appendTestsInDirectory(PluginTestCaseBase.getTestDataPathBase(), "/checker/infos/", false, JetTestCaseBuilder.kotlinFilter, new JetTestCaseBuilder.NamedTestFactory() { @NotNull @Override public Test createTest(@NotNull String dataPath, @NotNull String name, @NotNull File file) { diff --git a/idea/tests/org/jetbrains/jet/resolve/ResolveBaseTest.java b/idea/tests/org/jetbrains/jet/resolve/ResolveBaseTest.java index ccf65f6e271..4c400dc8ccd 100644 --- a/idea/tests/org/jetbrains/jet/resolve/ResolveBaseTest.java +++ b/idea/tests/org/jetbrains/jet/resolve/ResolveBaseTest.java @@ -90,7 +90,7 @@ public class ResolveBaseTest extends LightCodeInsightTestCase { JetTestCaseBuilder.appendTestsInDirectory( PluginTestCaseBase.getTestDataPathBase(), "/resolve/", false, - JetTestCaseBuilder.emptyFilter, new JetTestCaseBuilder.NamedTestFactory() { + JetTestCaseBuilder.kotlinFilter, new JetTestCaseBuilder.NamedTestFactory() { @NotNull