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);
@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));
}
}
else {
- String patterns = System.getProperty("idea.test.patterns");
+ String patterns = System.getProperty(TARGET_TEST_PATTERNS);
if (patterns != null) {
myTestClassesFilter = new TestClassesFilter(StringUtil.split(patterns, ";"));
}
}
}
- 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 {
* 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) {