mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
run test method from abstract class: ignore non-runnable inheritors; try to retrieve from context implicitly selected inheritor (IDEA-114551)
This commit is contained in:
@@ -19,21 +19,24 @@ import com.intellij.execution.Location;
|
||||
import com.intellij.execution.actions.ConfigurationContext;
|
||||
import com.intellij.execution.junit2.info.MethodLocation;
|
||||
import com.intellij.ide.util.PsiClassListCellRenderer;
|
||||
import com.intellij.openapi.actionSystem.PlatformDataKeys;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.fileEditor.FileEditor;
|
||||
import com.intellij.openapi.fileEditor.TextEditor;
|
||||
import com.intellij.openapi.progress.ProgressManager;
|
||||
import com.intellij.openapi.ui.popup.JBPopupFactory;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.PsiModifier;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.searches.ClassInheritorsSearch;
|
||||
import com.intellij.psi.util.PsiClassUtil;
|
||||
import com.intellij.ui.ColoredListCellRenderer;
|
||||
import com.intellij.ui.components.JBList;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.Processor;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* User: anna
|
||||
@@ -68,7 +71,7 @@ public class InheritorChooser {
|
||||
ClassInheritorsSearch.search(containingClass).forEach(new Processor<PsiClass>() {
|
||||
@Override
|
||||
public boolean process(PsiClass aClass) {
|
||||
if (!aClass.hasModifierProperty(PsiModifier.ABSTRACT)) {
|
||||
if (PsiClassUtil.isRunnableClass(aClass, true, true)) {
|
||||
classes.add(aClass);
|
||||
}
|
||||
return true;
|
||||
@@ -84,6 +87,19 @@ public class InheritorChooser {
|
||||
return true;
|
||||
}
|
||||
if (classes.isEmpty()) return false;
|
||||
final FileEditor fileEditor = PlatformDataKeys.FILE_EDITOR.getData(context.getDataContext());
|
||||
if (fileEditor instanceof TextEditor) {
|
||||
final Document document = ((TextEditor)fileEditor).getEditor().getDocument();
|
||||
final PsiFile containingFile = PsiDocumentManager.getInstance(context.getProject()).getPsiFile(document);
|
||||
if (containingFile instanceof PsiClassOwner) {
|
||||
final List<PsiClass> psiClasses = new ArrayList<PsiClass>(Arrays.asList(((PsiClassOwner)containingFile).getClasses()));
|
||||
psiClasses.retainAll(classes);
|
||||
if (psiClasses.size() == 1) {
|
||||
runForClass(psiClasses.get(0), psiMethod, context, performRunnable);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
final PsiClassListCellRenderer renderer = new PsiClassListCellRenderer() {
|
||||
@Override
|
||||
protected boolean customizeNonPsiElementLeftRenderer(ColoredListCellRenderer renderer,
|
||||
|
||||
Reference in New Issue
Block a user