mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
JUnit producers converted to new API
This commit is contained in:
@@ -16,7 +16,6 @@
|
||||
package com.intellij.execution.application;
|
||||
|
||||
import com.intellij.execution.JavaExecutionUtil;
|
||||
import com.intellij.execution.JavaRunConfigurationExtensionManager;
|
||||
import com.intellij.execution.Location;
|
||||
import com.intellij.execution.actions.ConfigurationContext;
|
||||
import com.intellij.execution.configurations.ConfigurationUtil;
|
||||
@@ -51,7 +50,7 @@ public class ApplicationConfigurationProducer extends JavaRunConfigurationProduc
|
||||
final PsiClass aClass = method.getContainingClass();
|
||||
if (ConfigurationUtil.MAIN_CLASS.value(aClass)) {
|
||||
sourceElement.set(method);
|
||||
setupConfiguration(configuration, aClass, context, location);
|
||||
setupConfiguration(configuration, aClass, context);
|
||||
return true;
|
||||
}
|
||||
currentElement = method.getParent();
|
||||
@@ -59,18 +58,16 @@ public class ApplicationConfigurationProducer extends JavaRunConfigurationProduc
|
||||
final PsiClass aClass = ApplicationConfigurationType.getMainClass(element);
|
||||
if (aClass == null) return false;
|
||||
sourceElement.set(aClass);
|
||||
setupConfiguration(configuration, aClass, context, location);
|
||||
setupConfiguration(configuration, aClass, context);
|
||||
return true;
|
||||
}
|
||||
|
||||
private void setupConfiguration(ApplicationConfiguration configuration,
|
||||
final PsiClass aClass,
|
||||
final ConfigurationContext context,
|
||||
Location location) {
|
||||
final ConfigurationContext context) {
|
||||
configuration.MAIN_CLASS_NAME = JavaExecutionUtil.getRuntimeQualifiedName(aClass);
|
||||
configuration.setGeneratedName();
|
||||
setupConfigurationModule(context, configuration);
|
||||
JavaRunConfigurationExtensionManager.getInstance().extendCreatedConfiguration(configuration, location);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
package com.intellij.execution.junit;
|
||||
|
||||
import com.intellij.execution.JavaRunConfigurationExtensionManager;
|
||||
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.ConfigurationFactory;
|
||||
import com.intellij.execution.configurations.ConfigurationType;
|
||||
import com.intellij.execution.configurations.ModuleBasedConfiguration;
|
||||
import com.intellij.execution.configurations.RunConfiguration;
|
||||
import com.intellij.execution.configurations.*;
|
||||
import com.intellij.execution.testframework.TestSearchScope;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* @author yole
|
||||
*/
|
||||
public abstract class JavaRunConfigurationProducerBase<T extends RunConfiguration> extends RunConfigurationProducer<T> {
|
||||
public abstract class JavaRunConfigurationProducerBase<T extends ModuleBasedConfiguration> extends RunConfigurationProducer<T> {
|
||||
protected JavaRunConfigurationProducerBase(ConfigurationFactory configurationFactory) {
|
||||
super(configurationFactory);
|
||||
}
|
||||
@@ -22,7 +22,7 @@ public abstract class JavaRunConfigurationProducerBase<T extends RunConfiguratio
|
||||
super(configurationType);
|
||||
}
|
||||
|
||||
protected boolean setupConfigurationModule(@Nullable ConfigurationContext context, ModuleBasedConfiguration configuration) {
|
||||
protected boolean setupConfigurationModule(@Nullable ConfigurationContext context, T configuration) {
|
||||
if (context != null) {
|
||||
final RunnerAndConfigurationSettings template = context.getRunManager().getConfigurationTemplate(getConfigurationFactory());
|
||||
final Module contextModule = context.getModule();
|
||||
@@ -40,10 +40,32 @@ public abstract class JavaRunConfigurationProducerBase<T extends RunConfiguratio
|
||||
return false;
|
||||
}
|
||||
|
||||
protected Module findModule(ModuleBasedConfiguration configuration, Module contextModule) {
|
||||
protected Module findModule(T configuration, Module contextModule) {
|
||||
if (configuration.getConfigurationModule().getModule() == null && contextModule != null) {
|
||||
return contextModule;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected TestSearchScope setupPackageConfiguration(ConfigurationContext context,
|
||||
T configuration,
|
||||
TestSearchScope scope) {
|
||||
if (scope != TestSearchScope.WHOLE_PROJECT) {
|
||||
if (!setupConfigurationModule(context, configuration)) {
|
||||
return TestSearchScope.WHOLE_PROJECT;
|
||||
}
|
||||
}
|
||||
return scope;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public ConfigurationFromContext createConfigurationFromContext(ConfigurationContext context) {
|
||||
ConfigurationFromContext fromContext = super.createConfigurationFromContext(context);
|
||||
if (fromContext != null) {
|
||||
JavaRunConfigurationExtensionManager.getInstance().extendCreatedConfiguration((RunConfigurationBase)fromContext.getConfiguration(),
|
||||
context.getLocation());
|
||||
}
|
||||
return fromContext;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
package com.intellij.execution;
|
||||
|
||||
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.junit.JUnitConfiguration;
|
||||
import com.intellij.execution.junit.RuntimeConfigurationProducer;
|
||||
import com.intellij.openapi.actionSystem.DataConstants;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.ex.PathManagerEx;
|
||||
@@ -142,12 +143,10 @@ public abstract class BaseConfigurationTestCase extends IdeaTestCase {
|
||||
final Class producerClass,
|
||||
final MapDataContext dataContext) {
|
||||
ConfigurationContext context = createContext(psiElement, dataContext);
|
||||
RuntimeConfigurationProducer producer = RuntimeConfigurationProducer.getInstance(producerClass);
|
||||
RunConfigurationProducer producer = RunConfigurationProducer.getInstance(producerClass);
|
||||
assert producer != null;
|
||||
producer = producer.createProducer((Location)dataContext.getData(Location.LOCATION), context);
|
||||
RunnerAndConfigurationSettings settings = context.updateConfiguration(producer);
|
||||
assert settings != null;
|
||||
return (JUnitConfiguration)settings.getConfiguration();
|
||||
ConfigurationFromContext fromContext = producer.createConfigurationFromContext(context);
|
||||
return (JUnitConfiguration)fromContext.getConfiguration();
|
||||
}
|
||||
|
||||
protected final <T extends RunConfiguration> T createConfiguration(PsiElement psiElement) {
|
||||
|
||||
@@ -142,12 +142,13 @@ public class ConfigurationContext {
|
||||
}
|
||||
|
||||
final List<RuntimeConfigurationProducer> producers = findPreferredProducers();
|
||||
if (producers == null) return null;
|
||||
if (myRuntimeConfiguration != null) {
|
||||
for (RuntimeConfigurationProducer producer : producers) {
|
||||
final RunnerAndConfigurationSettings configuration = producer.findExistingConfiguration(myLocation, this);
|
||||
if (configuration != null && configuration.getConfiguration() == myRuntimeConfiguration) {
|
||||
myExistingConfiguration.set(configuration);
|
||||
if (producers != null) {
|
||||
for (RuntimeConfigurationProducer producer : producers) {
|
||||
final RunnerAndConfigurationSettings configuration = producer.findExistingConfiguration(myLocation, this);
|
||||
if (configuration != null && configuration.getConfiguration() == myRuntimeConfiguration) {
|
||||
myExistingConfiguration.set(configuration);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (RunConfigurationProducer producer : Extensions.getExtensions(RunConfigurationProducer.EP_NAME)) {
|
||||
@@ -157,10 +158,12 @@ public class ConfigurationContext {
|
||||
}
|
||||
}
|
||||
}
|
||||
for (RuntimeConfigurationProducer producer : producers) {
|
||||
final RunnerAndConfigurationSettings configuration = producer.findExistingConfiguration(myLocation, this);
|
||||
if (configuration != null) {
|
||||
myExistingConfiguration.set(configuration);
|
||||
if (producers != null) {
|
||||
for (RuntimeConfigurationProducer producer : producers) {
|
||||
final RunnerAndConfigurationSettings configuration = producer.findExistingConfiguration(myLocation, this);
|
||||
if (configuration != null) {
|
||||
myExistingConfiguration.set(configuration);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (RunConfigurationProducer producer : Extensions.getExtensions(RunConfigurationProducer.EP_NAME)) {
|
||||
|
||||
@@ -59,4 +59,9 @@ public class ConfigurationFromContextImpl extends ConfigurationFromContext {
|
||||
public boolean isProducedBy(Class<? extends RunConfigurationProducer> producerClass) {
|
||||
return producerClass.isInstance(myConfigurationProducer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFirstRun(ConfigurationContext context, Runnable startRunnable) {
|
||||
myConfigurationProducer.onFirstRun(this, context, startRunnable);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ import com.intellij.execution.configurations.ConfigurationFactory;
|
||||
import com.intellij.execution.configurations.ConfigurationType;
|
||||
import com.intellij.execution.configurations.RunConfiguration;
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -71,6 +72,10 @@ public abstract class RunConfigurationProducer<T extends RunConfiguration> {
|
||||
return true;
|
||||
}
|
||||
|
||||
public void onFirstRun(ConfigurationFromContext configuration, ConfigurationContext context, Runnable startRunnable) {
|
||||
startRunnable.run();
|
||||
}
|
||||
|
||||
public ConfigurationFromContext findOrCreateConfigurationFromContext(ConfigurationContext context) {
|
||||
Location location = context.getLocation();
|
||||
if (location == null) {
|
||||
@@ -121,4 +126,13 @@ public abstract class RunConfigurationProducer<T extends RunConfiguration> {
|
||||
}
|
||||
return RunManager.getInstance(context.getProject()).createRunConfiguration("", myConfigurationFactory);
|
||||
}
|
||||
|
||||
public static RunConfigurationProducer getInstance(Class<? extends RunConfigurationProducer> aClass) {
|
||||
for (RunConfigurationProducer producer : Extensions.getExtensions(EP_NAME)) {
|
||||
if (aClass.isInstance(producer)) {
|
||||
return producer;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,11 +21,11 @@
|
||||
<vendor>JetBrains</vendor>
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
<errorHandler implementation="com.intellij.diagnostic.ITNReporter"/>
|
||||
<configurationProducer implementation="com.intellij.execution.junit.AllInDirectoryConfigurationProducer"/>
|
||||
<configurationProducer implementation="com.intellij.execution.junit.AllInPackageConfigurationProducer"/>
|
||||
<configurationProducer implementation="com.intellij.execution.junit.PatternConfigurationProducer"/>
|
||||
<configurationProducer implementation="com.intellij.execution.junit.TestClassConfigurationProducer"/>
|
||||
<configurationProducer implementation="com.intellij.execution.junit.TestMethodConfigurationProducer"/>
|
||||
<runConfigurationProducer implementation="com.intellij.execution.junit.AllInDirectoryConfigurationProducer"/>
|
||||
<runConfigurationProducer implementation="com.intellij.execution.junit.AllInPackageConfigurationProducer"/>
|
||||
<runConfigurationProducer implementation="com.intellij.execution.junit.PatternConfigurationProducer"/>
|
||||
<runConfigurationProducer implementation="com.intellij.execution.junit.TestClassConfigurationProducer"/>
|
||||
<runConfigurationProducer implementation="com.intellij.execution.junit.TestMethodConfigurationProducer"/>
|
||||
<deadCode implementation="com.intellij.execution.junit2.inspection.JUnitEntryPoint"/>
|
||||
<cantBeStatic implementation="com.intellij.execution.junit2.inspection.JUnitCantBeStaticExtension" />
|
||||
<testFramework implementation="com.intellij.execution.junit.JUnit3Framework"/>
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
package com.intellij.execution.junit;
|
||||
|
||||
import com.intellij.execution.JavaRunConfigurationExtensionManager;
|
||||
import com.intellij.execution.actions.ConfigurationContext;
|
||||
import com.intellij.execution.junit2.info.LocationUtil;
|
||||
import com.intellij.openapi.module.Module;
|
||||
@@ -64,7 +63,6 @@ public class AllInDirectoryConfigurationProducer extends JUnitConfigurationProdu
|
||||
data.setDirName(virtualFile.getPath());
|
||||
data.TEST_OBJECT = JUnitConfiguration.TEST_DIRECTORY;
|
||||
configuration.setGeneratedName();
|
||||
JavaRunConfigurationExtensionManager.getInstance().extendCreatedConfiguration(configuration, context.getLocation());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,43 +16,33 @@
|
||||
|
||||
package com.intellij.execution.junit;
|
||||
|
||||
import com.intellij.execution.JavaRunConfigurationExtensionManager;
|
||||
import com.intellij.execution.Location;
|
||||
import com.intellij.execution.RunnerAndConfigurationSettings;
|
||||
import com.intellij.execution.actions.ConfigurationContext;
|
||||
import com.intellij.execution.actions.ConfigurationFromContext;
|
||||
import com.intellij.execution.junit2.info.LocationUtil;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiPackage;
|
||||
|
||||
|
||||
public class AllInPackageConfigurationProducer extends JUnitConfigurationProducer {
|
||||
private PsiPackage myPackage = null;
|
||||
|
||||
protected RunnerAndConfigurationSettings createConfigurationByElement(final Location location, final ConfigurationContext context) {
|
||||
final Project project = location.getProject();
|
||||
final PsiElement element = location.getPsiElement();
|
||||
myPackage = checkPackage(element);
|
||||
if (myPackage == null) return null;
|
||||
if (!LocationUtil.isJarAttached(location, myPackage, JUnitUtil.TESTCASE_CLASS)) return null;
|
||||
RunnerAndConfigurationSettings settings = cloneTemplateConfiguration(project, context);
|
||||
final JUnitConfiguration configuration = (JUnitConfiguration)settings.getConfiguration();
|
||||
@Override
|
||||
protected boolean setupConfigurationFromContext(JUnitConfiguration configuration,
|
||||
ConfigurationContext context,
|
||||
Ref<PsiElement> sourceElement) {
|
||||
PsiPackage psiPackage = JavaRuntimeConfigurationProducerBase.checkPackage(context.getPsiLocation());
|
||||
if (psiPackage == null) return false;
|
||||
sourceElement.set(psiPackage);
|
||||
if (!LocationUtil.isJarAttached(context.getLocation(), psiPackage, JUnitUtil.TESTCASE_CLASS)) return false;
|
||||
final JUnitConfiguration.Data data = configuration.getPersistentData();
|
||||
data.PACKAGE_NAME = myPackage.getQualifiedName();
|
||||
data.PACKAGE_NAME = psiPackage.getQualifiedName();
|
||||
data.TEST_OBJECT = JUnitConfiguration.TEST_PACKAGE;
|
||||
data.setScope(setupPackageConfiguration(context, project, configuration, data.getScope()));
|
||||
data.setScope(setupPackageConfiguration(context, configuration, data.getScope()));
|
||||
configuration.setGeneratedName();
|
||||
JavaRunConfigurationExtensionManager.getInstance().extendCreatedConfiguration(configuration, location);
|
||||
return settings;
|
||||
}
|
||||
|
||||
public PsiElement getSourceElement() {
|
||||
return myPackage;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(Object o) {
|
||||
if (o instanceof AllInDirectoryConfigurationProducer) return -PREFERED;
|
||||
return PREFERED;
|
||||
public boolean isPreferredConfiguration(ConfigurationFromContext self, ConfigurationFromContext other) {
|
||||
return !other.isProducedBy(AllInDirectoryConfigurationProducer.class);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,6 @@ public abstract class JUnitConfigurationProducer extends JavaRunConfigurationPro
|
||||
super(JUnitConfigurationType.getInstance());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isPreferredConfiguration(ConfigurationFromContext self, ConfigurationFromContext other) {
|
||||
return !other.isProducedBy(TestMethodConfigurationProducer.class);
|
||||
|
||||
@@ -17,21 +17,17 @@
|
||||
package com.intellij.execution.junit;
|
||||
|
||||
import com.intellij.execution.JavaExecutionUtil;
|
||||
import com.intellij.execution.JavaRunConfigurationExtensionManager;
|
||||
import com.intellij.execution.Location;
|
||||
import com.intellij.execution.RunnerAndConfigurationSettings;
|
||||
import com.intellij.execution.actions.ConfigurationContext;
|
||||
import com.intellij.execution.configurations.ModuleBasedConfiguration;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.actionSystem.LangDataKeys;
|
||||
import com.intellij.openapi.actionSystem.PlatformDataKeys;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.*;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashSet;
|
||||
@@ -39,29 +35,25 @@ import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class PatternConfigurationProducer extends JUnitConfigurationProducer {
|
||||
|
||||
|
||||
private PsiElement[] myElements;
|
||||
|
||||
protected RunnerAndConfigurationSettings createConfigurationByElement(final Location location, final ConfigurationContext context) {
|
||||
final Project project = location.getProject();
|
||||
@Override
|
||||
protected boolean setupConfigurationFromContext(JUnitConfiguration configuration,
|
||||
ConfigurationContext context,
|
||||
Ref<PsiElement> sourceElement) {
|
||||
final LinkedHashSet<String> classes = new LinkedHashSet<String>();
|
||||
myElements = collectPatternElements(context, classes);
|
||||
if (classes.size() <= 1) return null;
|
||||
RunnerAndConfigurationSettings settings = cloneTemplateConfiguration(project, context);
|
||||
final JUnitConfiguration configuration = (JUnitConfiguration)settings.getConfiguration();
|
||||
PsiElement[] elements = collectPatternElements(context, classes);
|
||||
if (classes.size() <= 1) return false;
|
||||
sourceElement.set(elements[0]);
|
||||
final JUnitConfiguration.Data data = configuration.getPersistentData();
|
||||
data.setPatterns(classes);
|
||||
data.TEST_OBJECT = JUnitConfiguration.TEST_PATTERN;
|
||||
data.setScope(setupPackageConfiguration(context, project, configuration, data.getScope()));
|
||||
data.setScope(setupPackageConfiguration(context, configuration, data.getScope()));
|
||||
configuration.setGeneratedName();
|
||||
JavaRunConfigurationExtensionManager.getInstance().extendCreatedConfiguration(configuration, location);
|
||||
return settings;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Module findModule(ModuleBasedConfiguration configuration, Module contextModule) {
|
||||
final Set<String> patterns = ((JUnitConfiguration)configuration).getPersistentData().getPatterns();
|
||||
protected Module findModule(JUnitConfiguration configuration, Module contextModule) {
|
||||
final Set<String> patterns = configuration.getPersistentData().getPatterns();
|
||||
return findModule(configuration, contextModule, patterns);
|
||||
}
|
||||
|
||||
@@ -143,25 +135,16 @@ public class PatternConfigurationProducer extends JUnitConfigurationProducer {
|
||||
}
|
||||
}
|
||||
|
||||
public PsiElement getSourceElement() {
|
||||
return myElements[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RunnerAndConfigurationSettings findExistingByElement(@NotNull Location location,
|
||||
@NotNull RunnerAndConfigurationSettings[] existingConfigurations,
|
||||
ConfigurationContext context) {
|
||||
public boolean isConfigurationFromContext(JUnitConfiguration unitConfiguration, ConfigurationContext context) {
|
||||
final LinkedHashSet<String> classes = new LinkedHashSet<String>();
|
||||
collectPatternElements(context, classes);
|
||||
for (RunnerAndConfigurationSettings existingConfiguration : existingConfigurations) {
|
||||
final JUnitConfiguration unitConfiguration = (JUnitConfiguration)existingConfiguration.getConfiguration();
|
||||
final TestObject testobject = unitConfiguration.getTestObject();
|
||||
if (testobject instanceof TestsPattern) {
|
||||
if (Comparing.equal(classes, unitConfiguration.getPersistentData().getPatterns())) {
|
||||
return existingConfiguration;
|
||||
}
|
||||
final TestObject testobject = unitConfiguration.getTestObject();
|
||||
if (testobject instanceof TestsPattern) {
|
||||
if (Comparing.equal(classes, unitConfiguration.getPersistentData().getPatterns())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,12 +17,11 @@
|
||||
package com.intellij.execution.junit;
|
||||
|
||||
import com.intellij.execution.JavaExecutionUtil;
|
||||
import com.intellij.execution.JavaRunConfigurationExtensionManager;
|
||||
import com.intellij.execution.Location;
|
||||
import com.intellij.execution.RunnerAndConfigurationSettings;
|
||||
import com.intellij.execution.actions.ConfigurationContext;
|
||||
import com.intellij.execution.actions.ConfigurationFromContext;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
@@ -30,34 +29,28 @@ import com.intellij.psi.PsiMethod;
|
||||
import java.util.List;
|
||||
|
||||
public class TestClassConfigurationProducer extends JUnitConfigurationProducer {
|
||||
private PsiClass myTestClass;
|
||||
|
||||
protected RunnerAndConfigurationSettings createConfigurationByElement(Location location, final ConfigurationContext context) {
|
||||
location = JavaExecutionUtil.stepIntoSingleClass(location);
|
||||
if (location == null) return null;
|
||||
final Project project = location.getProject();
|
||||
@Override
|
||||
protected boolean setupConfigurationFromContext(JUnitConfiguration configuration,
|
||||
ConfigurationContext context,
|
||||
Ref<PsiElement> sourceElement) {
|
||||
Location location = JavaExecutionUtil.stepIntoSingleClass(context.getLocation());
|
||||
if (location == null) return false;
|
||||
|
||||
if (PatternConfigurationProducer.isMultipleElementsSelected(context)) {
|
||||
return null;
|
||||
return false;
|
||||
}
|
||||
myTestClass = JUnitUtil.getTestClass(location);
|
||||
if (myTestClass == null) return null;
|
||||
RunnerAndConfigurationSettings settings = cloneTemplateConfiguration(project, context);
|
||||
final JUnitConfiguration configuration = (JUnitConfiguration)settings.getConfiguration();
|
||||
PsiClass testClass = JUnitUtil.getTestClass(location);
|
||||
if (testClass == null) return false;
|
||||
sourceElement.set(testClass);
|
||||
setupConfigurationModule(context, configuration);
|
||||
final Module originalModule = configuration.getConfigurationModule().getModule();
|
||||
configuration.beClassConfiguration(myTestClass);
|
||||
configuration.beClassConfiguration(testClass);
|
||||
configuration.restoreOriginalModule(originalModule);
|
||||
JavaRunConfigurationExtensionManager.getInstance().extendCreatedConfiguration(configuration, location);
|
||||
return settings;
|
||||
}
|
||||
|
||||
public PsiElement getSourceElement() {
|
||||
return myTestClass;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void perform(final ConfigurationContext context, final Runnable performRunnable) {
|
||||
public void onFirstRun(ConfigurationFromContext fromContext, final ConfigurationContext context, final Runnable performRunnable) {
|
||||
|
||||
final InheritorChooser inheritorChooser = new InheritorChooser() {
|
||||
@Override
|
||||
@@ -75,7 +68,7 @@ public class TestClassConfigurationProducer extends JUnitConfigurationProducer {
|
||||
super.runForClass(aClass, psiMethod, context, performRunnable);
|
||||
}
|
||||
};
|
||||
if (inheritorChooser.runMethodInAbstractClass(context, performRunnable, null, myTestClass)) return;
|
||||
super.perform(context, performRunnable);
|
||||
if (inheritorChooser.runMethodInAbstractClass(context, performRunnable, null, (PsiClass)fromContext.getSourceElement())) return;
|
||||
super.onFirstRun(fromContext, context, performRunnable);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,11 +19,12 @@ package com.intellij.execution.junit;
|
||||
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.junit2.info.MethodLocation;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
@@ -32,27 +33,22 @@ import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
public class TestMethodConfigurationProducer extends JUnitConfigurationProducer {
|
||||
private Location<PsiMethod> myMethodLocation;
|
||||
|
||||
protected RunnerAndConfigurationSettings createConfigurationByElement(final Location location, final ConfigurationContext context) {
|
||||
final Project project = location.getProject();
|
||||
@Override
|
||||
protected boolean setupConfigurationFromContext(JUnitConfiguration configuration,
|
||||
ConfigurationContext context,
|
||||
Ref<PsiElement> sourceElement) {
|
||||
if (PatternConfigurationProducer.isMultipleElementsSelected(context)) {
|
||||
return null;
|
||||
return false;
|
||||
}
|
||||
myMethodLocation = getTestMethod(location);
|
||||
if (myMethodLocation == null) return null;
|
||||
RunnerAndConfigurationSettings settings = cloneTemplateConfiguration(project, context);
|
||||
final JUnitConfiguration configuration = (JUnitConfiguration)settings.getConfiguration();
|
||||
Location<PsiMethod> methodLocation = getTestMethod(context.getLocation());
|
||||
if (methodLocation == null) return false;
|
||||
sourceElement.set(methodLocation.getPsiElement());
|
||||
setupConfigurationModule(context, configuration);
|
||||
final Module originalModule = configuration.getConfigurationModule().getModule();
|
||||
configuration.beMethodConfiguration(myMethodLocation);
|
||||
configuration.beMethodConfiguration(methodLocation);
|
||||
configuration.restoreOriginalModule(originalModule);
|
||||
JavaRunConfigurationExtensionManager.getInstance().extendCreatedConfiguration(configuration, location);
|
||||
return settings;
|
||||
}
|
||||
|
||||
public PsiElement getSourceElement() {
|
||||
return myMethodLocation.getPsiElement();
|
||||
JavaRunConfigurationExtensionManager.getInstance().extendCreatedConfiguration(configuration, context.getLocation());
|
||||
return true;
|
||||
}
|
||||
|
||||
private static Location<PsiMethod> getTestMethod(final Location<?> location) {
|
||||
@@ -64,8 +60,8 @@ public class TestMethodConfigurationProducer extends JUnitConfigurationProducer
|
||||
}
|
||||
|
||||
@Override
|
||||
public void perform(final ConfigurationContext context, final Runnable performRunnable) {
|
||||
final PsiMethod psiMethod = myMethodLocation.getPsiElement();
|
||||
public void onFirstRun(ConfigurationFromContext configuration, final ConfigurationContext context, final Runnable performRunnable) {
|
||||
final PsiMethod psiMethod = (PsiMethod)configuration.getSourceElement();
|
||||
final PsiClass containingClass = psiMethod.getContainingClass();
|
||||
final InheritorChooser inheritorChooser = new InheritorChooser() {
|
||||
@Override
|
||||
@@ -86,7 +82,7 @@ public class TestMethodConfigurationProducer extends JUnitConfigurationProducer
|
||||
}
|
||||
};
|
||||
if (inheritorChooser.runMethodInAbstractClass(context, performRunnable, psiMethod, containingClass)) return;
|
||||
super.perform(context, performRunnable);
|
||||
super.onFirstRun(configuration, context, performRunnable);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user