mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
testng: forbid to run abstract tests not annotated with @Test (IDEA-122724)
This commit is contained in:
@@ -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<PsiClass> 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();
|
||||
|
||||
+7
-8
@@ -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<PsiClass>() {
|
||||
@Override
|
||||
public boolean value(PsiClass aClass) {
|
||||
return TestNGUtil.hasTest(aClass);
|
||||
}
|
||||
})) return;
|
||||
}
|
||||
super.onFirstRun(configuration, fromContext, performRunnable);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user