avoid nesting of testsuites (hopefully it will help TeamCity report tests correctly)

This commit is contained in:
Dmitry Jemerov
2011-11-03 21:15:32 +01:00
parent 750e2e25f0
commit 2f191d3c43
2 changed files with 13 additions and 13 deletions
@@ -16,7 +16,7 @@ import java.util.List;
* @author abreslav * @author abreslav
*/ */
public abstract class JetTestCaseBuilder { public abstract class JetTestCaseBuilder {
private static FilenameFilter emptyFilter = new FilenameFilter() { public static FilenameFilter emptyFilter = new FilenameFilter() {
@Override @Override
public boolean accept(File file, String name) { public boolean accept(File file, String name) {
return true; return true;
@@ -43,6 +43,11 @@ public abstract class JetTestCaseBuilder {
@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, final FilenameFilter filter, @NotNull NamedTestFactory factory) {
TestSuite suite = new TestSuite(dataPath); 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 extensionJet = ".jet";
final String extensionKt = ".kt"; final String extensionKt = ".kt";
final FilenameFilter extensionFilter = new FilenameFilter() { final FilenameFilter extensionFilter = new FilenameFilter() {
@@ -76,7 +81,7 @@ public abstract class JetTestCaseBuilder {
List<File> subdirs = Arrays.asList(files); List<File> subdirs = Arrays.asList(files);
Collections.sort(subdirs); Collections.sort(subdirs);
for (File subdir : subdirs) { for (File subdir : subdirs) {
suite.addTest(suiteForDirectory(baseDataDir, dataPath + "/" + subdir.getName(), recursive, filter, factory)); appendTestsInDirectory(baseDataDir, dataPath + "/" + subdir.getName(), recursive, filter, factory, suite);
} }
} }
List<File> files = Arrays.asList(dir.listFiles(resultFilter)); List<File> files = Arrays.asList(dir.listFiles(resultFilter));
@@ -87,6 +92,5 @@ public abstract class JetTestCaseBuilder {
String extension = fileName.endsWith(extensionJet) ? extensionJet : extensionKt; String extension = fileName.endsWith(extensionJet) ? extensionJet : extensionKt;
suite.addTest(factory.createTest(dataPath, fileName.substring(0, fileName.length() - extension.length()))); suite.addTest(factory.createTest(dataPath, fileName.substring(0, fileName.length() - extension.length())));
} }
return suite;
} }
} }
@@ -55,31 +55,27 @@ public class JetPsiCheckerTest extends LightDaemonAnalyzerTestCase {
public static Test suite() { public static Test suite() {
TestSuite suite = new TestSuite(); TestSuite suite = new TestSuite();
final TestSuite checkerSuite = JetTestCaseBuilder.suiteForDirectory(PluginTestCaseBase.getTestDataPathBase(), "/checker/", false, new JetTestCaseBuilder.NamedTestFactory() { JetTestCaseBuilder.appendTestsInDirectory(PluginTestCaseBase.getTestDataPathBase(), "/checker/", false, JetTestCaseBuilder.emptyFilter, new JetTestCaseBuilder.NamedTestFactory() {
@NotNull @NotNull
@Override @Override
public Test createTest(@NotNull String dataPath, @NotNull String name) { public Test createTest(@NotNull String dataPath, @NotNull String name) {
return new JetPsiCheckerTest(dataPath, name); return new JetPsiCheckerTest(dataPath, name);
} }
}); }, suite);
if (checkerSuite.countTestCases() == 0) { JetTestCaseBuilder.appendTestsInDirectory(PluginTestCaseBase.getTestDataPathBase(), "/checker/regression/", false, JetTestCaseBuilder.emptyFilter, new JetTestCaseBuilder.NamedTestFactory() {
throw new RuntimeException("didn't find any testcases under /checker/");
}
suite.addTest(checkerSuite);
suite.addTest(JetTestCaseBuilder.suiteForDirectory(PluginTestCaseBase.getTestDataPathBase(), "/checker/regression/", false, new JetTestCaseBuilder.NamedTestFactory() {
@NotNull @NotNull
@Override @Override
public Test createTest(@NotNull String dataPath, @NotNull String name) { public Test createTest(@NotNull String dataPath, @NotNull String name) {
return new JetPsiCheckerTest(dataPath, name); return new JetPsiCheckerTest(dataPath, name);
} }
})); }, suite);
suite.addTest(JetTestCaseBuilder.suiteForDirectory(PluginTestCaseBase.getTestDataPathBase(), "/checker/infos/", false, new JetTestCaseBuilder.NamedTestFactory() { JetTestCaseBuilder.appendTestsInDirectory(PluginTestCaseBase.getTestDataPathBase(), "/checker/infos/", false, JetTestCaseBuilder.emptyFilter, new JetTestCaseBuilder.NamedTestFactory() {
@NotNull @NotNull
@Override @Override
public Test createTest(@NotNull String dataPath, @NotNull String name) { public Test createTest(@NotNull String dataPath, @NotNull String name) {
return new JetPsiCheckerTest(dataPath, name).setCheckInfos(true); return new JetPsiCheckerTest(dataPath, name).setCheckInfos(true);
} }
})); }, suite);
return suite; return suite;
} }
} }