Merge branch 'master' of git@git.labs.intellij.net:idea/community
authorEugene Kudelevsky <Eugene.Kudelevsky@jetbrains.com>
Mon, 19 Apr 2010 12:38:11 +0000 (16:38 +0400)
committerEugene Kudelevsky <Eugene.Kudelevsky@jetbrains.com>
Mon, 19 Apr 2010 12:38:11 +0000 (16:38 +0400)
platform/testFramework/src/com/intellij/TestAll.java
platform/testFramework/src/com/intellij/TestCaseLoader.java

index fee3e9e8aa59c0b0d540133c29f0fddbfe59b9d6..54070163f8860e2e6409016df4e89a0cd21dc6fe 100644 (file)
@@ -351,7 +351,10 @@ public class TestAll implements Test {
 
   public TestAll(String packageRoot, String... classRoots) throws IOException, ClassNotFoundException {
     myTestCaseLoader = new TestCaseLoader((ourMode & FILTER_CLASSES) != 0 ? "tests/testGroups.properties" : "");
-    myTestCaseLoader.addClassIfTestCase(Class.forName("_FirstInSuiteTest"));
+
+    if (classRoots.length > 0) {
+      myTestCaseLoader.addClassIfTestCase(Class.forName("_FirstInSuiteTest"));
+    }
 
     for (String classRoot : classRoots) {
       ClassFinder classFinder = new ClassFinder(new File(classRoot), packageRoot);
index 60d6ba43b2b3a835796a4baddb80ce15ba5bca87..5926721e23fbbe1597c6ab649c55cf653c82b48a 100644 (file)
@@ -40,19 +40,24 @@ import java.util.*;
 
 @SuppressWarnings({"HardCodedStringLiteral"})
 public class TestCaseLoader {
+
+  /** Holds name of JVM property that is assumed to define target test group name. */
+  private static final String TARGET_TEST_GROUP = "idea.test.group";
+
+  /** Holds name of JVM property that is assumed to define filtering rules for test classes. */
+  private static final String TARGET_TEST_PATTERNS = "idea.test.patterns";
+
+  /** Holds name of JVM property that is assumed to determine if only 'fast' tests should be executed. */
+  private static final String FAST_TESTS_ONLY_FLAG = "idea.fast.only";
+
   private final List<Class> myClassList = new ArrayList<Class>();
   private final TestClassesFilter myTestClassesFilter;
   private final String myTestGroupName;
   private final Set<String> blockedTests = new HashSet<String>();
 
   public TestCaseLoader(String classFilterName) {
-    String preconfiguredTestGroup = System.getProperty("idea.test.group");
-    if (StringUtil.isEmpty(preconfiguredTestGroup)) {
-      myTestGroupName = TestClassesFilter.ALL_EXCLUDE_DEFINED;
-    } else {
-      myTestGroupName = preconfiguredTestGroup.trim();
-    }
     InputStream excludedStream = getClass().getClassLoader().getResourceAsStream(classFilterName);
+    myTestGroupName = System.getProperty(TARGET_TEST_GROUP);
     if (excludedStream != null) {
       try {
         myTestClassesFilter = TestClassesFilter.createOn(new InputStreamReader(excludedStream));
@@ -67,7 +72,7 @@ public class TestCaseLoader {
       }
     }
     else {
-      String patterns = System.getProperty("idea.test.patterns");
+      String patterns = System.getProperty(TARGET_TEST_PATTERNS);
       if (patterns != null) {
         myTestClassesFilter = new TestClassesFilter(StringUtil.split(patterns, ";"));
       }
@@ -76,7 +81,7 @@ public class TestCaseLoader {
       }
     }
 
-    if (Comparing.equal(System.getProperty("idea.fast.only"), "true")) {
+    if (Comparing.equal(System.getProperty(FAST_TESTS_ONLY_FLAG), "true")) {
       BufferedReader reader =
               new BufferedReader(new InputStreamReader(getClass().getClassLoader().getResourceAsStream("tests/slowTests.txt")));
       try {
@@ -135,7 +140,10 @@ public class TestCaseLoader {
    * Determine if we should exclude this test case.
    */
   private boolean shouldExcludeTestClass(Class testCaseClass) {
-    return !myTestClassesFilter.matches(testCaseClass.getName(), myTestGroupName) || isBombed(testCaseClass) || blockedTests.contains(testCaseClass.getName());
+    if (myTestGroupName != null && !myTestClassesFilter.matches(testCaseClass.getName(), myTestGroupName)) {
+      return true;
+    }
+    return isBombed(testCaseClass) || blockedTests.contains(testCaseClass.getName());
   }
 
   public static boolean isBombed(final Method method) {