From a850470ed2334705ddcdc5ac294631adddac874f Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Wed, 16 Apr 2014 16:35:58 +0200 Subject: [PATCH] testng/junit: do not start pattern evaluation if one element is selected --- .../junit/PatternConfigurationProducer.java | 2 ++ .../TestNGInClassConfigurationProducer.java | 4 +--- .../TestNGPatternConfigurationProducer.java | 15 +++++++++++---- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/plugins/junit/src/com/intellij/execution/junit/PatternConfigurationProducer.java b/plugins/junit/src/com/intellij/execution/junit/PatternConfigurationProducer.java index 6f3413cdb2c7..ef81f5281cdd 100644 --- a/plugins/junit/src/com/intellij/execution/junit/PatternConfigurationProducer.java +++ b/plugins/junit/src/com/intellij/execution/junit/PatternConfigurationProducer.java @@ -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 classes = new LinkedHashSet(); final PsiElement[] elements = collectPatternElements(context, classes); if (elements != null && collectTestMembers(elements, false).size() > 1) { diff --git a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGInClassConfigurationProducer.java b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGInClassConfigurationProducer.java index 381d72f63788..40570a7cd822 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGInClassConfigurationProducer.java +++ b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGInClassConfigurationProducer.java @@ -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 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; } diff --git a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGPatternConfigurationProducer.java b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGPatternConfigurationProducer.java index a43817708d86..9869e9ccf52e 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGPatternConfigurationProducer.java +++ b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGPatternConfigurationProducer.java @@ -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 classes = new LinkedHashSet(); + final PsiElement[] elements = collectPatternElements(context, classes); + if (elements != null && collectTestMembers(elements).size() > 1) { + return true; + } + return false; + } + private static PsiElement[] collectPatternElements(ConfigurationContext context, LinkedHashSet classes) { final DataContext dataContext = context.getDataContext(); final Location[] locations = Location.DATA_KEYS.getData(dataContext);