mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
testng U junit: delegation -> inheritance
This commit is contained in:
@@ -15,10 +15,10 @@
|
||||
*/
|
||||
package com.intellij.execution;
|
||||
|
||||
import com.intellij.execution.JavaExecutionUtil;
|
||||
import com.intellij.execution.Location;
|
||||
import com.intellij.execution.actions.ConfigurationContext;
|
||||
import com.intellij.execution.configurations.ConfigurationType;
|
||||
import com.intellij.execution.configurations.ModuleBasedConfiguration;
|
||||
import com.intellij.execution.junit.JavaRunConfigurationProducerBase;
|
||||
import com.intellij.execution.junit2.info.MethodLocation;
|
||||
import com.intellij.execution.testframework.TestsUIUtil;
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||
@@ -35,10 +35,14 @@ import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public abstract class PatternConfigurationDelegate {
|
||||
public abstract class PatternConfigurationDelegate<T extends ModuleBasedConfiguration> extends JavaRunConfigurationProducerBase<T> implements Cloneable{
|
||||
protected abstract boolean isTestClass(PsiClass psiClass);
|
||||
protected abstract boolean isTestMethod(boolean checkAbstract, PsiElement psiElement);
|
||||
|
||||
public PatternConfigurationDelegate(ConfigurationType configurationType) {
|
||||
super(configurationType);
|
||||
}
|
||||
|
||||
public Module findModule(ModuleBasedConfiguration configuration, Module contextModule, Set<String> patterns) {
|
||||
return JavaExecutionUtil.findModule(contextModule, patterns, configuration.getProject(), new Condition<PsiClass>() {
|
||||
@Override
|
||||
|
||||
@@ -190,12 +190,14 @@ public abstract class RunConfigurationProducer<T extends RunConfiguration> {
|
||||
return RunManager.getInstance(context.getProject()).createRunConfiguration("", myConfigurationFactory);
|
||||
}
|
||||
|
||||
public static RunConfigurationProducer getInstance(Class<? extends RunConfigurationProducer> aClass) {
|
||||
@NotNull
|
||||
public static <T extends RunConfigurationProducer> T getInstance(Class<? extends T> aClass) {
|
||||
for (RunConfigurationProducer producer : Extensions.getExtensions(EP_NAME)) {
|
||||
if (aClass.isInstance(producer)) {
|
||||
return producer;
|
||||
return (T)producer;
|
||||
}
|
||||
}
|
||||
assert false : aClass;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -64,7 +64,7 @@ public class TestClassGradleConfigurationProducer extends GradleTestRunConfigura
|
||||
final Location location = JavaExecutionUtil.stepIntoSingleClass(contextLocation);
|
||||
if (location == null) return false;
|
||||
|
||||
if (PatternConfigurationProducer.isMultipleElementsSelected(context)) {
|
||||
if (RunConfigurationProducer.getInstance(PatternConfigurationProducer.class).isMultipleElementsSelected(context)) {
|
||||
return false;
|
||||
}
|
||||
PsiClass testClass = JUnitUtil.getTestClass(location);
|
||||
@@ -99,7 +99,7 @@ public class TestClassGradleConfigurationProducer extends GradleTestRunConfigura
|
||||
final Location location = JavaExecutionUtil.stepIntoSingleClass(contextLocation);
|
||||
if (location == null) return false;
|
||||
|
||||
if (PatternConfigurationProducer.isMultipleElementsSelected(context)) {
|
||||
if (RunConfigurationProducer.getInstance(PatternConfigurationProducer.class).isMultipleElementsSelected(context)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -55,7 +55,7 @@ public class TestMethodGradleConfigurationProducer extends GradleTestRunConfigur
|
||||
protected boolean setupConfigurationFromContext(ExternalSystemRunConfiguration configuration,
|
||||
ConfigurationContext context,
|
||||
Ref<PsiElement> sourceElement) {
|
||||
if (PatternConfigurationProducer.isMultipleElementsSelected(context)) {
|
||||
if (RunConfigurationProducer.getInstance(PatternConfigurationProducer.class).isMultipleElementsSelected(context)) {
|
||||
return false;
|
||||
}
|
||||
final Location contextLocation = context.getLocation();
|
||||
@@ -82,7 +82,7 @@ public class TestMethodGradleConfigurationProducer extends GradleTestRunConfigur
|
||||
if (configuration == null) return false;
|
||||
if (!GradleConstants.SYSTEM_ID.equals(configuration.getSettings().getExternalSystemId())) return false;
|
||||
|
||||
if (PatternConfigurationProducer.isMultipleElementsSelected(context)) {
|
||||
if (RunConfigurationProducer.getInstance(PatternConfigurationProducer.class).isMultipleElementsSelected(context)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ package com.intellij.execution.junit;
|
||||
|
||||
import com.intellij.execution.PatternConfigurationDelegate;
|
||||
import com.intellij.execution.RunManager;
|
||||
import com.intellij.execution.actions.RunConfigurationProducer;
|
||||
import com.intellij.execution.configurations.RunConfiguration;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -41,7 +42,8 @@ public class AddToTestsPatternAction extends AnAction {
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
final DataContext dataContext = e.getDataContext();
|
||||
final PsiElement[] psiElements = LangDataKeys.PSI_ELEMENT_ARRAY.getData(dataContext);
|
||||
final Set<PsiElement> classes = PatternConfigurationProducer.collectTestMembers(psiElements, true);
|
||||
final Set<PsiElement> classes = RunConfigurationProducer.getInstance(PatternConfigurationProducer.class).collectTestMembers(psiElements,
|
||||
true);
|
||||
|
||||
final Project project = CommonDataKeys.PROJECT.getData(dataContext);
|
||||
final List<JUnitConfiguration> patternConfigurations = collectPatternConfigurations(classes, project);
|
||||
@@ -81,7 +83,7 @@ public class AddToTestsPatternAction extends AnAction {
|
||||
final DataContext dataContext = e.getDataContext();
|
||||
final PsiElement[] psiElements = LangDataKeys.PSI_ELEMENT_ARRAY.getData(dataContext);
|
||||
if (psiElements != null) {
|
||||
final Set<PsiElement> foundMembers = PatternConfigurationProducer.collectTestMembers(psiElements, true);
|
||||
final Set<PsiElement> foundMembers = RunConfigurationProducer.getInstance(PatternConfigurationProducer.class).collectTestMembers(psiElements, true);
|
||||
if (foundMembers.isEmpty()) return;
|
||||
final Project project = CommonDataKeys.PROJECT.getData(dataContext);
|
||||
if (project != null) {
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.intellij.execution.junit;
|
||||
|
||||
import com.intellij.diagnostic.logging.LogConfigurationPanel;
|
||||
import com.intellij.execution.*;
|
||||
import com.intellij.execution.actions.RunConfigurationProducer;
|
||||
import com.intellij.execution.configuration.EnvironmentVariablesComponent;
|
||||
import com.intellij.execution.configurations.*;
|
||||
import com.intellij.execution.executors.DefaultRunExecutor;
|
||||
@@ -441,7 +442,8 @@ public class JUnitConfiguration extends ModuleBasedConfiguration<JavaRunConfigur
|
||||
patterns.add(JavaExecutionUtil.getRuntimeQualifiedName(pattern) + methodSufiix);
|
||||
}
|
||||
myData.setPatterns(patterns);
|
||||
final Module module = PatternConfigurationProducer.findModule(this, getConfigurationModule().getModule(), patterns);
|
||||
final Module module = RunConfigurationProducer.getInstance(PatternConfigurationProducer.class).findModule(this, getConfigurationModule()
|
||||
.getModule(), patterns);
|
||||
if (module == null) {
|
||||
myData.setScope(TestSearchScope.WHOLE_PROJECT);
|
||||
setModule(null);
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.intellij.execution.RunManager;
|
||||
import com.intellij.execution.RunnerAndConfigurationSettings;
|
||||
import com.intellij.execution.actions.ConfigurationContext;
|
||||
import com.intellij.execution.actions.ConfigurationFromContext;
|
||||
import com.intellij.execution.actions.RunConfigurationProducer;
|
||||
import com.intellij.execution.configurations.RunConfiguration;
|
||||
import com.intellij.execution.junit2.PsiMemberParameterizedLocation;
|
||||
import com.intellij.openapi.module.Module;
|
||||
@@ -41,7 +42,7 @@ public abstract class JUnitConfigurationProducer extends JavaRunConfigurationPro
|
||||
|
||||
@Override
|
||||
public boolean isConfigurationFromContext(JUnitConfiguration unitConfiguration, ConfigurationContext context) {
|
||||
if (PatternConfigurationProducer.isMultipleElementsSelected(context)) {
|
||||
if (RunConfigurationProducer.getInstance(PatternConfigurationProducer.class).isMultipleElementsSelected(context)) {
|
||||
return false;
|
||||
}
|
||||
final RunConfiguration predefinedConfiguration = context.getOriginalConfiguration(JUnitConfigurationType.getInstance());
|
||||
|
||||
@@ -18,33 +18,43 @@ package com.intellij.execution.junit;
|
||||
|
||||
import com.intellij.execution.PatternConfigurationDelegate;
|
||||
import com.intellij.execution.actions.ConfigurationContext;
|
||||
import com.intellij.execution.actions.ConfigurationFromContext;
|
||||
import com.intellij.execution.configurations.ConfigurationType;
|
||||
import com.intellij.execution.configurations.ModuleBasedConfiguration;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.psi.*;
|
||||
import com.sun.media.sound.PCMtoPCMCodec;
|
||||
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class PatternConfigurationProducer extends JUnitConfigurationProducer {
|
||||
private static PatternConfigurationDelegate ourDelegate = new PatternConfigurationDelegate() {
|
||||
@Override
|
||||
protected boolean isTestClass(PsiClass psiClass) {
|
||||
return JUnitUtil.isTestClass(psiClass);
|
||||
}
|
||||
public class PatternConfigurationProducer extends PatternConfigurationDelegate<JUnitConfiguration> {
|
||||
protected PatternConfigurationProducer() {
|
||||
super(JUnitConfigurationType.getInstance());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isTestMethod(boolean checkAbstract, PsiElement psiElement) {
|
||||
return JUnitUtil.getTestMethod(psiElement, checkAbstract) != null;
|
||||
}
|
||||
};
|
||||
@Override
|
||||
protected boolean isTestClass(PsiClass psiClass) {
|
||||
return JUnitUtil.isTestClass(psiClass);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isTestMethod(boolean checkAbstract, PsiElement psiElement) {
|
||||
return JUnitUtil.getTestMethod(psiElement, checkAbstract) != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPreferredConfiguration(ConfigurationFromContext self, ConfigurationFromContext other) {
|
||||
return !other.isProducedBy(TestMethodConfigurationProducer.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean setupConfigurationFromContext(JUnitConfiguration configuration,
|
||||
ConfigurationContext context,
|
||||
Ref<PsiElement> sourceElement) {
|
||||
final LinkedHashSet<String> classes = new LinkedHashSet<String>();
|
||||
final PsiElement element = ourDelegate.checkPatterns(context, classes);
|
||||
final PsiElement element = checkPatterns(context, classes);
|
||||
if (element == null) {
|
||||
return false;
|
||||
}
|
||||
@@ -68,20 +78,8 @@ public class PatternConfigurationProducer extends JUnitConfigurationProducer {
|
||||
final TestObject testobject = unitConfiguration.getTestObject();
|
||||
if (testobject instanceof TestsPattern) {
|
||||
final Set<String> patterns = unitConfiguration.getPersistentData().getPatterns();
|
||||
if (ourDelegate.isConfiguredFromContext(context, patterns)) return true;
|
||||
if (isConfiguredFromContext(context, patterns)) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static Module findModule(ModuleBasedConfiguration configuration, Module contextModule, Set<String> patterns) {
|
||||
return ourDelegate.findModule(configuration, contextModule, patterns);
|
||||
}
|
||||
|
||||
public static boolean isMultipleElementsSelected(ConfigurationContext context) {
|
||||
return ourDelegate.isMultipleElementsSelected(context);
|
||||
}
|
||||
|
||||
public static Set<PsiElement> collectTestMembers(PsiElement[] elements, boolean checkAbstract) {
|
||||
return ourDelegate.collectTestMembers(elements, checkAbstract);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import com.intellij.execution.JavaExecutionUtil;
|
||||
import com.intellij.execution.Location;
|
||||
import com.intellij.execution.actions.ConfigurationContext;
|
||||
import com.intellij.execution.actions.ConfigurationFromContext;
|
||||
import com.intellij.execution.actions.RunConfigurationProducer;
|
||||
import com.intellij.execution.junit2.PsiMemberParameterizedLocation;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
@@ -46,7 +47,7 @@ public class TestClassConfigurationProducer extends JUnitConfigurationProducer {
|
||||
}
|
||||
}
|
||||
|
||||
if (PatternConfigurationProducer.isMultipleElementsSelected(context)) {
|
||||
if (RunConfigurationProducer.getInstance(PatternConfigurationProducer.class).isMultipleElementsSelected(context)) {
|
||||
return false;
|
||||
}
|
||||
PsiClass testClass = JUnitUtil.getTestClass(location);
|
||||
|
||||
@@ -21,6 +21,7 @@ import com.intellij.execution.Location;
|
||||
import com.intellij.execution.PsiLocation;
|
||||
import com.intellij.execution.actions.ConfigurationContext;
|
||||
import com.intellij.execution.actions.ConfigurationFromContext;
|
||||
import com.intellij.execution.actions.RunConfigurationProducer;
|
||||
import com.intellij.execution.junit2.PsiMemberParameterizedLocation;
|
||||
import com.intellij.execution.junit2.info.MethodLocation;
|
||||
import com.intellij.openapi.module.Module;
|
||||
@@ -38,7 +39,7 @@ public class TestMethodConfigurationProducer extends JUnitConfigurationProducer
|
||||
protected boolean setupConfigurationFromContext(JUnitConfiguration configuration,
|
||||
ConfigurationContext context,
|
||||
Ref<PsiElement> sourceElement) {
|
||||
if (PatternConfigurationProducer.isMultipleElementsSelected(context)) {
|
||||
if (RunConfigurationProducer.getInstance(PatternConfigurationProducer.class).isMultipleElementsSelected(context)) {
|
||||
return false;
|
||||
}
|
||||
final Location contextLocation = context.getLocation();
|
||||
|
||||
+3
-1
@@ -24,6 +24,7 @@ package com.theoryinpractice.testng.configuration;
|
||||
|
||||
import com.intellij.diagnostic.logging.LogConfigurationPanel;
|
||||
import com.intellij.execution.*;
|
||||
import com.intellij.execution.actions.RunConfigurationProducer;
|
||||
import com.intellij.execution.configuration.EnvironmentVariablesComponent;
|
||||
import com.intellij.execution.configurations.*;
|
||||
import com.intellij.execution.junit.RefactoringListeners;
|
||||
@@ -275,7 +276,8 @@ public class TestNGConfiguration extends ModuleBasedConfiguration<JavaRunConfigu
|
||||
patterns.add(JavaExecutionUtil.getRuntimeQualifiedName(pattern) + suffix);
|
||||
}
|
||||
data.setPatterns(patterns);
|
||||
final Module module = TestNGPatternConfigurationProducer.findModule(this, getConfigurationModule().getModule(), patterns);
|
||||
final Module module = RunConfigurationProducer.getInstance(TestNGPatternConfigurationProducer.class)
|
||||
.findModule(this, getConfigurationModule().getModule(), patterns);
|
||||
if (module == null) {
|
||||
data.setScope(TestSearchScope.WHOLE_PROJECT);
|
||||
setModule(null);
|
||||
|
||||
+1
-1
@@ -44,7 +44,7 @@ public abstract class TestNGConfigurationProducer extends JavaRunConfigurationPr
|
||||
|
||||
@Override
|
||||
public boolean isConfigurationFromContext(TestNGConfiguration testNGConfiguration, ConfigurationContext context) {
|
||||
if (TestNGPatternConfigurationProducer.isMultipleElementsSelected(context)) {
|
||||
if (RunConfigurationProducer.getInstance(TestNGPatternConfigurationProducer.class).isMultipleElementsSelected(context)) {
|
||||
return false;
|
||||
}
|
||||
final RunConfiguration predefinedConfiguration = context.getOriginalConfiguration(TestNGConfigurationType.getInstance());
|
||||
|
||||
+2
-1
@@ -24,6 +24,7 @@ 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.actions.RunConfigurationProducer;
|
||||
import com.intellij.execution.junit.InheritorChooser;
|
||||
import com.intellij.execution.junit2.info.MethodLocation;
|
||||
import com.intellij.openapi.module.Module;
|
||||
@@ -95,7 +96,7 @@ public class TestNGInClassConfigurationProducer extends TestNGConfigurationProdu
|
||||
protected boolean setupConfigurationFromContext(TestNGConfiguration configuration,
|
||||
ConfigurationContext context,
|
||||
Ref<PsiElement> sourceElement) {
|
||||
if (TestNGPatternConfigurationProducer.isMultipleElementsSelected(context)) {
|
||||
if (RunConfigurationProducer.getInstance(TestNGPatternConfigurationProducer.class).isMultipleElementsSelected(context)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
+13
-30
@@ -20,35 +20,27 @@
|
||||
*/
|
||||
package com.theoryinpractice.testng.configuration;
|
||||
|
||||
import com.intellij.execution.JavaExecutionUtil;
|
||||
import com.intellij.execution.Location;
|
||||
import com.intellij.execution.PatternConfigurationDelegate;
|
||||
import com.intellij.execution.actions.ConfigurationContext;
|
||||
import com.intellij.execution.configurations.ModuleBasedConfiguration;
|
||||
import com.intellij.execution.junit.JUnitUtil;
|
||||
import com.intellij.execution.junit2.info.MethodLocation;
|
||||
import com.intellij.execution.testframework.AbstractTestProxy;
|
||||
import com.intellij.execution.testframework.TestsUIUtil;
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.actionSystem.LangDataKeys;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiModifierListOwner;
|
||||
import com.theoryinpractice.testng.model.TestData;
|
||||
import com.theoryinpractice.testng.model.TestType;
|
||||
import com.theoryinpractice.testng.util.TestNGUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class TestNGPatternConfigurationProducer extends TestNGConfigurationProducer{
|
||||
private static PatternConfigurationDelegate ourDelegate = new PatternConfigurationDelegate() {
|
||||
@Override
|
||||
public class TestNGPatternConfigurationProducer extends PatternConfigurationDelegate<TestNGConfiguration> {
|
||||
public TestNGPatternConfigurationProducer() {
|
||||
super(TestNGConfigurationType.getInstance());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isTestClass(PsiClass psiClass) {
|
||||
return TestNGUtil.hasTest(psiClass);
|
||||
}
|
||||
@@ -57,14 +49,13 @@ public class TestNGPatternConfigurationProducer extends TestNGConfigurationProdu
|
||||
protected boolean isTestMethod(boolean checkAbstract, PsiElement psiElement) {
|
||||
return psiElement instanceof PsiModifierListOwner && TestNGUtil.hasTest((PsiModifierListOwner)psiElement);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@Override
|
||||
protected boolean setupConfigurationFromContext(TestNGConfiguration configuration,
|
||||
ConfigurationContext context,
|
||||
Ref<PsiElement> sourceElement) {
|
||||
final LinkedHashSet<String> classes = new LinkedHashSet<String>();
|
||||
final PsiElement element = ourDelegate.checkPatterns(context, classes);
|
||||
final PsiElement element = checkPatterns(context, classes);
|
||||
if (element == null) {
|
||||
return false;
|
||||
}
|
||||
@@ -77,25 +68,17 @@ public class TestNGPatternConfigurationProducer extends TestNGConfigurationProdu
|
||||
return true;
|
||||
}
|
||||
|
||||
public static boolean isMultipleElementsSelected(ConfigurationContext context) {
|
||||
return ourDelegate.isMultipleElementsSelected(context);
|
||||
}
|
||||
|
||||
public static Module findModule(ModuleBasedConfiguration configuration, Module contextModule, Set<String> patterns) {
|
||||
return ourDelegate.findModule(configuration, contextModule, patterns);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Module findModule(TestNGConfiguration configuration, Module contextModule) {
|
||||
final Set<String> patterns = configuration.data.getPatterns();
|
||||
return ourDelegate.findModule(configuration, contextModule, patterns);
|
||||
return findModule(configuration, contextModule, patterns);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isConfigurationFromContext(TestNGConfiguration testNGConfiguration, ConfigurationContext context) {
|
||||
final String type = testNGConfiguration.getPersistantData().TEST_OBJECT;
|
||||
if (Comparing.equal(type, TestType.PATTERN.getType())) {
|
||||
return ourDelegate.isConfiguredFromContext(context, testNGConfiguration.getPersistantData().getPatterns());
|
||||
return isConfiguredFromContext(context, testNGConfiguration.getPersistantData().getPatterns());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user