mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
tests: allow tests selection from file with multiple test classes (IDEA-148273)
This commit is contained in:
+12
-1
@@ -34,6 +34,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.PsiElementProcessor;
|
||||
import com.intellij.psi.util.ClassUtil;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashSet;
|
||||
@@ -163,6 +164,7 @@ public abstract class AbstractPatternBasedConfigurationProducer<T extends Module
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
final PsiElement element = CommonDataKeys.PSI_ELEMENT.getData(dataContext);
|
||||
final VirtualFile[] files = CommonDataKeys.VIRTUAL_FILE_ARRAY.getData(dataContext);
|
||||
if (files != null) {
|
||||
Project project = CommonDataKeys.PROJECT.getData(dataContext);
|
||||
@@ -171,7 +173,16 @@ public abstract class AbstractPatternBasedConfigurationProducer<T extends Module
|
||||
for (VirtualFile file : files) {
|
||||
final PsiFile psiFile = psiManager.findFile(file);
|
||||
if (psiFile instanceof PsiClassOwner) {
|
||||
collectTestMembers(((PsiClassOwner)psiFile).getClasses(), checkAbstract, checkIsTest, processor);
|
||||
PsiClass[] psiClasses = ((PsiClassOwner)psiFile).getClasses();
|
||||
if (element != null && psiClasses.length > 0) {
|
||||
for (PsiClass aClass : psiClasses) {
|
||||
if (PsiTreeUtil.isAncestor(aClass, element, false)) {
|
||||
psiClasses = new PsiClass[] {aClass};
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
collectTestMembers(psiClasses, checkAbstract, checkIsTest, processor);
|
||||
for (PsiElement psiMember : processor.getCollection()) {
|
||||
classes.add(((PsiClass)psiMember).getQualifiedName());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user