simplify filters in JetTestCaseBuilder

This commit is contained in:
Stepan Koltsov
2012-04-27 19:09:39 +04:00
parent e959c62ee4
commit 286b4c4d4b
3 changed files with 29 additions and 27 deletions
@@ -53,37 +53,37 @@ public abstract class JetTestCaseBuilder {
@NotNull @NotNull
public static TestSuite suiteForDirectory(String baseDataDir, @NotNull final String dataPath, boolean recursive, @NotNull NamedTestFactory factory) { 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 @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); TestSuite suite = new TestSuite(dataPath);
appendTestsInDirectory(baseDataDir, dataPath, recursive, filter, factory, suite); appendTestsInDirectory(baseDataDir, dataPath, recursive, filter, factory, suite);
return suite; return suite;
} }
public static void appendTestsInDirectory(String baseDataDir, String dataPath, boolean recursive, final FilenameFilter filter, NamedTestFactory factory, TestSuite suite) { public static FilenameFilter kotlinFilter = new FilenameFilter() {
final String extensionJet = ".jet"; @Override
final String extensionKt = ".kt"; public boolean accept(File dir, String name) {
final FilenameFilter extensionFilter = new FilenameFilter() { return name.endsWith(".kt") || name.endsWith("jet");
}
};
@NotNull
public static FilenameFilter and(@NotNull final FilenameFilter a, @NotNull final FilenameFilter b) {
return new FilenameFilter() {
@Override @Override
public boolean accept(File dir, String name) { 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() { public static void appendTestsInDirectory(String baseDataDir, String dataPath, boolean recursive, @NotNull FilenameFilter filter, NamedTestFactory factory, TestSuite suite) {
@Override final String extensionJet = ".jet";
public boolean accept(File file, String s) { final String extensionKt = ".kt";
return extensionFilter.accept(file, s) && filter.accept(file, s);
}
};
}
else {
resultFilter = extensionFilter;
}
File dir = new File(baseDataDir + dataPath); File dir = new File(baseDataDir + dataPath);
FileFilter dirFilter = new FileFilter() { FileFilter dirFilter = new FileFilter() {
@Override @Override
@@ -100,13 +100,15 @@ public abstract class JetTestCaseBuilder {
suite.addTest(suiteForDirectory(baseDataDir, dataPath + "/" + subdir.getName(), recursive, filter, factory)); suite.addTest(suiteForDirectory(baseDataDir, dataPath + "/" + subdir.getName(), recursive, filter, factory));
} }
} }
List<File> files = Arrays.asList(dir.listFiles(resultFilter)); List<File> files = Arrays.asList(dir.listFiles(filter));
Collections.sort(files); Collections.sort(files);
for (File file : files) { for (File file : files) {
String fileName = file.getName(); String fileName = file.getName();
assert fileName != null; String testName =
String extension = fileName.endsWith(extensionJet) ? extensionJet : extensionKt; fileName.endsWith(extensionJet) ? fileName.substring(0, fileName.length() - extensionJet.length()) :
suite.addTest(factory.createTest(dataPath, fileName.substring(0, fileName.length() - extension.length()), file)); fileName.endsWith(extensionKt) ? fileName.substring(0, fileName.length() - extensionKt.length()) :
fileName;
suite.addTest(factory.createTest(dataPath, testName, file));
} }
} }
} }
@@ -71,21 +71,21 @@ public class JetPsiCheckerTest extends LightDaemonAnalyzerTestCase {
public static Test suite() { public static Test suite() {
TestSuite suite = new TestSuite(); 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 @NotNull
@Override @Override
public Test createTest(@NotNull String dataPath, @NotNull String name, @NotNull File file) { public Test createTest(@NotNull String dataPath, @NotNull String name, @NotNull File file) {
return new JetPsiCheckerTest(dataPath, name); return new JetPsiCheckerTest(dataPath, name);
} }
}, suite); }, 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 @NotNull
@Override @Override
public Test createTest(@NotNull String dataPath, @NotNull String name, @NotNull File file) { public Test createTest(@NotNull String dataPath, @NotNull String name, @NotNull File file) {
return new JetPsiCheckerTest(dataPath, name); return new JetPsiCheckerTest(dataPath, name);
} }
}, suite); }, 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 @NotNull
@Override @Override
public Test createTest(@NotNull String dataPath, @NotNull String name, @NotNull File file) { public Test createTest(@NotNull String dataPath, @NotNull String name, @NotNull File file) {
@@ -90,7 +90,7 @@ public class ResolveBaseTest extends LightCodeInsightTestCase {
JetTestCaseBuilder.appendTestsInDirectory( JetTestCaseBuilder.appendTestsInDirectory(
PluginTestCaseBase.getTestDataPathBase(), "/resolve/", false, PluginTestCaseBase.getTestDataPathBase(), "/resolve/", false,
JetTestCaseBuilder.emptyFilter, new JetTestCaseBuilder.NamedTestFactory() { JetTestCaseBuilder.kotlinFilter, new JetTestCaseBuilder.NamedTestFactory() {
@NotNull @NotNull