mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
junit: search for tests by pattern from top to bottom
assuming traversal of default package is slow or both ways are fast
This commit is contained in:
@@ -83,25 +83,7 @@ public class TestPackage extends TestObject {
|
||||
instance.setAlternativeResolveEnabled(true);
|
||||
final TestClassFilter classFilter = getClassFilter(data);
|
||||
LOG.assertTrue(classFilter.getBase() != null);
|
||||
long start = System.currentTimeMillis();
|
||||
if (Registry.is("junit4.search.4.tests.all.in.scope", true)) {
|
||||
Condition<PsiClass> acceptClassCondition = aClass -> ReadAction.compute(() -> aClass.isValid() && classFilter.isAccepted(aClass));
|
||||
collectClassesRecursively(classFilter, acceptClassCondition, myClasses);
|
||||
}
|
||||
else if (Registry.is("junit4.search.4.tests.in.classpath", false)) {
|
||||
String packageName = getPackageName(data);
|
||||
String[] classNames = TestClassCollector.collectClassFQNames(packageName, getRootPath(), getConfiguration(), TestPackage::createPredicate);
|
||||
PsiManager manager = PsiManager.getInstance(myProject);
|
||||
Arrays.stream(classNames)
|
||||
.filter(className -> acceptClassName(className)) //check patterns
|
||||
.map(name -> ReadAction.compute(() -> ClassUtil.findPsiClass(manager, name, null, true, classFilter.getScope())))
|
||||
.filter(aClass -> aClass != null)
|
||||
.forEach(myClasses::add);
|
||||
LOG.info("Found tests in " + (System.currentTimeMillis() - start));
|
||||
}
|
||||
else {
|
||||
ConfigurationUtil.findAllTestClasses(classFilter, module, myClasses);
|
||||
}
|
||||
searchTests(module, classFilter, myClasses);
|
||||
}
|
||||
catch (CantRunException ignored) {}
|
||||
finally {
|
||||
@@ -122,6 +104,30 @@ public class TestPackage extends TestObject {
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
protected void searchTests(Module module, TestClassFilter classFilter, Set<PsiClass> classes) throws CantRunException {
|
||||
long start = System.currentTimeMillis();
|
||||
if (Registry.is("junit4.search.4.tests.all.in.scope", true)) {
|
||||
Condition<PsiClass> acceptClassCondition = aClass -> ReadAction.compute(() -> aClass.isValid() && classFilter.isAccepted(aClass));
|
||||
collectClassesRecursively(classFilter, acceptClassCondition, classes);
|
||||
}
|
||||
else if (Registry.is("junit4.search.4.tests.in.classpath", false)) {
|
||||
String packageName = getPackageName(getConfiguration().getPersistentData());
|
||||
String[] classNames =
|
||||
TestClassCollector.collectClassFQNames(packageName, getRootPath(), getConfiguration(), TestPackage::createPredicate);
|
||||
PsiManager manager = PsiManager.getInstance(getConfiguration().getProject());
|
||||
Arrays.stream(classNames)
|
||||
.filter(className -> acceptClassName(className)) //check patterns
|
||||
.map(name -> ReadAction.compute(() -> ClassUtil.findPsiClass(manager, name, null, true, classFilter.getScope())))
|
||||
.filter(aClass -> aClass != null)
|
||||
.forEach(classes::add);
|
||||
LOG.info("Found tests in " + (System.currentTimeMillis() - start));
|
||||
}
|
||||
else {
|
||||
ConfigurationUtil.findAllTestClasses(classFilter, module, classes);
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
protected Path getRootPath() {
|
||||
Module module = getConfiguration().getConfigurationModule().getModule();
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package com.intellij.execution.junit;
|
||||
|
||||
import com.intellij.execution.CantRunException;
|
||||
import com.intellij.execution.ConfigurationUtil;
|
||||
import com.intellij.execution.ExecutionException;
|
||||
import com.intellij.execution.JavaExecutionUtil;
|
||||
import com.intellij.execution.configurations.RuntimeConfigurationException;
|
||||
@@ -74,7 +75,7 @@ public class TestsPattern extends TestPackage {
|
||||
if (!hasPattern) {
|
||||
return new SearchForTestsTask(project, myServerSocket) {
|
||||
@Override
|
||||
protected void search() throws ExecutionException { }
|
||||
protected void search() { }
|
||||
|
||||
@Override
|
||||
protected void onFound() throws ExecutionException {
|
||||
@@ -87,6 +88,11 @@ public class TestsPattern extends TestPackage {
|
||||
return super.createSearchingForTestsTask();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void searchTests(Module module, TestClassFilter classFilter, Set<PsiClass> classes) {
|
||||
ConfigurationUtil.findAllTestClasses(classFilter, module, classes);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean acceptClassName(String className) {
|
||||
String pattern = getConfiguration().getPersistentData().getPatternPresentation();
|
||||
|
||||
Reference in New Issue
Block a user