diff --git a/java/execution/impl/src/com/intellij/execution/junit/InheritorChooser.java b/java/execution/impl/src/com/intellij/execution/junit/InheritorChooser.java index 4463e3efef7c..d318ad47bb70 100644 --- a/java/execution/impl/src/com/intellij/execution/junit/InheritorChooser.java +++ b/java/execution/impl/src/com/intellij/execution/junit/InheritorChooser.java @@ -22,12 +22,11 @@ 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.openapi.util.Condition; import com.intellij.psi.*; import com.intellij.psi.search.searches.ClassInheritorsSearch; import com.intellij.psi.util.PsiClassUtil; @@ -37,7 +36,10 @@ import com.intellij.util.ArrayUtil; import com.intellij.util.Processor; import javax.swing.*; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; /** * User: anna @@ -57,7 +59,15 @@ public class InheritorChooser { final Runnable performRunnable, final PsiMethod psiMethod, final PsiClass containingClass) { - if (containingClass != null && containingClass.hasModifierProperty(PsiModifier.ABSTRACT)) { + return runMethodInAbstractClass(context, performRunnable, psiMethod, containingClass, Condition.TRUE); + } + + public boolean runMethodInAbstractClass(final ConfigurationContext context, + final Runnable performRunnable, + final PsiMethod psiMethod, + final PsiClass containingClass, + final Condition acceptAbstractCondition) { + if (containingClass != null && containingClass.hasModifierProperty(PsiModifier.ABSTRACT) && acceptAbstractCondition.value(containingClass)) { final Location location = context.getLocation(); if (location instanceof MethodLocation) { final PsiClass aClass = ((MethodLocation)location).getContainingClass(); diff --git a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGInClassConfigurationProducer.java b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGInClassConfigurationProducer.java index b613e1d721c0..381d72f63788 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGInClassConfigurationProducer.java +++ b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGInClassConfigurationProducer.java @@ -20,27 +20,21 @@ */ package com.theoryinpractice.testng.configuration; -import com.intellij.execution.JavaRunConfigurationExtensionManager; -import com.intellij.execution.Location; import com.intellij.execution.PsiLocation; import com.intellij.execution.RunnerAndConfigurationSettings; import com.intellij.execution.actions.ConfigurationContext; import com.intellij.execution.actions.ConfigurationFromContext; import com.intellij.execution.junit.InheritorChooser; -import com.intellij.execution.junit.JUnitUtil; -import com.intellij.execution.junit.JavaRuntimeConfigurationProducerBase; -import com.intellij.execution.junit2.info.LocationUtil; import com.intellij.execution.junit2.info.MethodLocation; import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.Ref; import com.intellij.psi.*; import com.intellij.psi.util.PsiClassUtil; import com.intellij.psi.util.PsiTreeUtil; -import com.theoryinpractice.testng.model.TestData; import com.theoryinpractice.testng.util.TestNGUtil; -import org.jetbrains.annotations.Nullable; import java.util.List; @@ -88,7 +82,12 @@ public class TestNGInClassConfigurationProducer extends TestNGConfigurationProdu super.runForClass(aClass, psiMethod, context, performRunnable); } }; - if (inheritorChooser.runMethodInAbstractClass(fromContext, performRunnable, psiMethod, containingClass)) return; + if (inheritorChooser.runMethodInAbstractClass(fromContext, performRunnable, psiMethod, containingClass, new Condition() { + @Override + public boolean value(PsiClass aClass) { + return TestNGUtil.hasTest(aClass); + } + })) return; } super.onFirstRun(configuration, fromContext, performRunnable); }