testng/junit: do not start pattern evaluation if one element is selected

This commit is contained in:
Anna Kozlova
2014-04-16 16:42:08 +02:00
parent 9fda587640
commit a850470ed2
3 changed files with 14 additions and 7 deletions
@@ -21,6 +21,7 @@ import com.intellij.execution.Location;
import com.intellij.execution.actions.ConfigurationContext;
import com.intellij.execution.configurations.ModuleBasedConfiguration;
import com.intellij.execution.junit2.info.MethodLocation;
import com.intellij.execution.testframework.AbstractTestProxy;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.LangDataKeys;
@@ -97,6 +98,7 @@ public class PatternConfigurationProducer extends JUnitConfigurationProducer {
}
public static boolean isMultipleElementsSelected(ConfigurationContext context) {
if (AbstractTestProxy.DATA_KEY.getData(context.getDataContext()) != null) return false;
final LinkedHashSet<String> classes = new LinkedHashSet<String>();
final PsiElement[] elements = collectPatternElements(context, classes);
if (elements != null && collectTestMembers(elements, false).size() > 1) {
@@ -26,7 +26,6 @@ import com.intellij.execution.actions.ConfigurationContext;
import com.intellij.execution.actions.ConfigurationFromContext;
import com.intellij.execution.junit.InheritorChooser;
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;
@@ -96,8 +95,7 @@ public class TestNGInClassConfigurationProducer extends TestNGConfigurationProdu
protected boolean setupConfigurationFromContext(TestNGConfiguration configuration,
ConfigurationContext context,
Ref<PsiElement> sourceElement) {
final PsiElement[] elements = context != null ? LangDataKeys.PSI_ELEMENT_ARRAY.getData(context.getDataContext()) : null;
if (elements != null && TestNGPatternConfigurationProducer.collectTestMembers(elements).size() > 1) {
if (TestNGPatternConfigurationProducer.isMultipleElementsSelected(context)) {
return false;
}
@@ -21,18 +21,16 @@
package com.theoryinpractice.testng.configuration;
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.execution.junit.JUnitUtil;
import com.intellij.execution.junit2.info.MethodLocation;
import com.intellij.execution.testframework.AbstractTestProxy;
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.project.Project;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.Condition;
import com.intellij.openapi.util.Ref;
@@ -40,7 +38,6 @@ import com.intellij.psi.*;
import com.theoryinpractice.testng.model.TestData;
import com.theoryinpractice.testng.model.TestType;
import com.theoryinpractice.testng.util.TestNGUtil;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.LinkedHashSet;
@@ -88,6 +85,16 @@ public class TestNGPatternConfigurationProducer extends TestNGConfigurationProdu
return foundMembers;
}
public static boolean isMultipleElementsSelected(ConfigurationContext context) {
if (AbstractTestProxy.DATA_KEY.getData(context.getDataContext()) != null) return false;
final LinkedHashSet<String> classes = new LinkedHashSet<String>();
final PsiElement[] elements = collectPatternElements(context, classes);
if (elements != null && collectTestMembers(elements).size() > 1) {
return true;
}
return false;
}
private static PsiElement[] collectPatternElements(ConfigurationContext context, LinkedHashSet<String> classes) {
final DataContext dataContext = context.getDataContext();
final Location<?>[] locations = Location.DATA_KEYS.getData(dataContext);