JUnit producers converted to new API

This commit is contained in:
Dmitry Jemerov
2013-08-01 15:07:30 +02:00
parent 5eb0064733
commit 0f2a8de77c
13 changed files with 139 additions and 140 deletions

View File

@@ -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

View File

@@ -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;
}
}

View File

@@ -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) {

View File

@@ -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)) {

View File

@@ -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);
}
}

View File

@@ -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;
}
}

View File

@@ -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"/>

View File

@@ -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;
}
}

View File

@@ -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);
}
}

View File

@@ -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);

View File

@@ -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;
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}