mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
run all tests in abstract class inheritors
This commit is contained in:
@@ -102,7 +102,7 @@ public class InheritorChooser {
|
||||
}
|
||||
});
|
||||
JBPopupFactory.getInstance().createListPopupBuilder(list)
|
||||
.setTitle("Choose executable classes to run " + psiMethod.getName())
|
||||
.setTitle("Choose executable classes to run " + (psiMethod != null ? psiMethod.getName() : containingClass.getName()))
|
||||
.setMovable(false)
|
||||
.setResizable(false)
|
||||
.setRequestFocus(true)
|
||||
|
||||
@@ -275,7 +275,7 @@ public class JUnitUtil {
|
||||
public static PsiClass getTestClass(final Location<?> location) {
|
||||
for (Iterator<Location<PsiClass>> iterator = location.getAncestors(PsiClass.class, false); iterator.hasNext();) {
|
||||
final Location<PsiClass> classLocation = iterator.next();
|
||||
if (isTestClass(classLocation)) return classLocation.getPsiElement();
|
||||
if (isTestClass(classLocation.getPsiElement(), false, true)) return classLocation.getPsiElement();
|
||||
}
|
||||
PsiElement element = location.getPsiElement();
|
||||
if (element instanceof PsiClassOwner) {
|
||||
|
||||
@@ -365,9 +365,15 @@ public class JUnitConfiguration extends ModuleBasedConfiguration<JavaRunConfigur
|
||||
public void bePatternConfiguration(List<PsiClass> classes, PsiMethod method) {
|
||||
myData.TEST_OBJECT = TEST_PATTERN;
|
||||
final Set<String> patterns = new HashSet<String>();
|
||||
myData.METHOD_NAME = method.getName();
|
||||
final String methodSufiix;
|
||||
if (method != null) {
|
||||
myData.METHOD_NAME = method.getName();
|
||||
methodSufiix = "," + myData.METHOD_NAME;
|
||||
} else {
|
||||
methodSufiix = "";
|
||||
}
|
||||
for (PsiClass pattern : classes) {
|
||||
patterns.add(JavaExecutionUtil.getRuntimeQualifiedName(pattern) + "," + myData.METHOD_NAME);
|
||||
patterns.add(JavaExecutionUtil.getRuntimeQualifiedName(pattern) + methodSufiix);
|
||||
}
|
||||
myData.setPatterns(patterns);
|
||||
setGeneratedName();
|
||||
|
||||
@@ -26,6 +26,9 @@ import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class TestClassConfigurationProducer extends JUnitConfigurationProducer {
|
||||
private PsiClass myTestClass;
|
||||
@@ -55,5 +58,26 @@ public class TestClassConfigurationProducer extends JUnitConfigurationProducer {
|
||||
return myTestClass;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void perform(final ConfigurationContext context, final Runnable performRunnable) {
|
||||
|
||||
final InheritorChooser inheritorChooser = new InheritorChooser() {
|
||||
@Override
|
||||
protected void runForClasses(List<PsiClass> classes, PsiMethod method, ConfigurationContext context, Runnable performRunnable) {
|
||||
((JUnitConfiguration)context.getConfiguration().getConfiguration()).bePatternConfiguration(classes, method);
|
||||
super.runForClasses(classes, method, context, performRunnable);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void runForClass(PsiClass aClass,
|
||||
PsiMethod psiMethod,
|
||||
ConfigurationContext context,
|
||||
Runnable performRunnable) {
|
||||
((JUnitConfiguration)context.getConfiguration().getConfiguration()).beClassConfiguration(aClass);
|
||||
super.runForClass(aClass, psiMethod, context, performRunnable);
|
||||
}
|
||||
};
|
||||
if (inheritorChooser.runMethodInAbstractClass(context, performRunnable, null, myTestClass)) return;
|
||||
super.perform(context, performRunnable);
|
||||
}
|
||||
}
|
||||
|
||||
+8
-2
@@ -263,10 +263,16 @@ public class TestNGConfiguration extends ModuleBasedConfiguration<JavaRunConfigu
|
||||
|
||||
public void bePatternConfiguration(List<PsiClass> classes, PsiMethod method) {
|
||||
data.TEST_OBJECT = TestType.PATTERN.getType();
|
||||
data.METHOD_NAME = method.getName();
|
||||
final String suffix;
|
||||
if (method != null) {
|
||||
data.METHOD_NAME = method.getName();
|
||||
suffix = "," + data.METHOD_NAME;
|
||||
} else {
|
||||
suffix = "";
|
||||
}
|
||||
Set<String> patterns = new HashSet<String>();
|
||||
for (PsiClass pattern : classes) {
|
||||
patterns.add(JavaExecutionUtil.getRuntimeQualifiedName(pattern) + "," + data.METHOD_NAME);
|
||||
patterns.add(JavaExecutionUtil.getRuntimeQualifiedName(pattern) + suffix);
|
||||
}
|
||||
data.setPatterns(patterns);
|
||||
setGeneratedName();
|
||||
|
||||
+20
-6
@@ -100,9 +100,19 @@ public class TestNGInClassConfigurationProducer extends TestNGConfigurationProdu
|
||||
|
||||
@Override
|
||||
public void perform(final ConfigurationContext context, final Runnable performRunnable) {
|
||||
if (myPsiElement instanceof PsiMethod) {
|
||||
final PsiMethod psiMethod = (PsiMethod)myPsiElement;
|
||||
final PsiClass containingClass = psiMethod.getContainingClass();
|
||||
if (myPsiElement instanceof PsiMethod || myPsiElement instanceof PsiClass) {
|
||||
|
||||
final PsiMethod psiMethod;
|
||||
final PsiClass containingClass;
|
||||
|
||||
if (myPsiElement instanceof PsiMethod) {
|
||||
psiMethod = (PsiMethod)myPsiElement;
|
||||
containingClass = psiMethod.getContainingClass();
|
||||
} else {
|
||||
psiMethod = null;
|
||||
containingClass = (PsiClass)myPsiElement;
|
||||
}
|
||||
|
||||
final InheritorChooser inheritorChooser = new InheritorChooser() {
|
||||
@Override
|
||||
protected void runForClasses(List<PsiClass> classes, PsiMethod method, ConfigurationContext context, Runnable performRunnable) {
|
||||
@@ -115,9 +125,13 @@ public class TestNGInClassConfigurationProducer extends TestNGConfigurationProdu
|
||||
PsiMethod psiMethod,
|
||||
ConfigurationContext context,
|
||||
Runnable performRunnable) {
|
||||
final Project project = psiMethod.getProject();
|
||||
final MethodLocation methodLocation = new MethodLocation(project, psiMethod, PsiLocation.fromPsiElement(aClass));
|
||||
((TestNGConfiguration)context.getConfiguration().getConfiguration()).setMethodConfiguration(methodLocation);
|
||||
if (myPsiElement instanceof PsiMethod) {
|
||||
final Project project = psiMethod.getProject();
|
||||
final MethodLocation methodLocation = new MethodLocation(project, psiMethod, PsiLocation.fromPsiElement(aClass));
|
||||
((TestNGConfiguration)context.getConfiguration().getConfiguration()).setMethodConfiguration(methodLocation);
|
||||
} else {
|
||||
((TestNGConfiguration)context.getConfiguration().getConfiguration()).setClassConfiguration(aClass);
|
||||
}
|
||||
super.runForClass(aClass, psiMethod, context, performRunnable);
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user