From 91ec19c613bec4526c11655315e11eeb30d36155 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Sat, 4 Apr 2015 21:34:45 +0200 Subject: [PATCH] exclude/include in pattern based configuration: now for testng --- .../AbstractAddToTestsPatternAction.java | 66 +++++++++---------- .../actions/AbstractExcludeFromRunAction.java | 46 +++++++------ plugins/junit/src/META-INF/plugin.xml | 12 ++-- .../junit/JUnitAddToTestsPatternAction.java | 53 +++++++++++++++ .../junit/JUnitExcludeFromRunAction.java | 40 +++++++++++ plugins/testng/src/META-INF/plugin.xml | 12 ++++ .../TestNGAddToTestsPatternAction.java | 53 +++++++++++++++ .../actions/TestNGExcludeFromRunAction.java | 42 ++++++++++++ 8 files changed, 261 insertions(+), 63 deletions(-) rename plugins/junit/src/com/intellij/execution/junit/AddToTestsPatternAction.java => java/execution/impl/src/com/intellij/execution/actions/AbstractAddToTestsPatternAction.java (56%) rename plugins/junit/src/com/intellij/execution/junit/ExcludeFromRunAction.java => java/execution/impl/src/com/intellij/execution/actions/AbstractExcludeFromRunAction.java (57%) create mode 100644 plugins/junit/src/com/intellij/execution/junit/JUnitAddToTestsPatternAction.java create mode 100644 plugins/junit/src/com/intellij/execution/junit/JUnitExcludeFromRunAction.java create mode 100644 plugins/testng/src/com/theoryinpractice/testng/ui/actions/TestNGAddToTestsPatternAction.java create mode 100644 plugins/testng/src/com/theoryinpractice/testng/ui/actions/TestNGExcludeFromRunAction.java diff --git a/plugins/junit/src/com/intellij/execution/junit/AddToTestsPatternAction.java b/java/execution/impl/src/com/intellij/execution/actions/AbstractAddToTestsPatternAction.java similarity index 56% rename from plugins/junit/src/com/intellij/execution/junit/AddToTestsPatternAction.java rename to java/execution/impl/src/com/intellij/execution/actions/AbstractAddToTestsPatternAction.java index cfe8d3e61602..1c5765a39650 100644 --- a/plugins/junit/src/com/intellij/execution/junit/AddToTestsPatternAction.java +++ b/java/execution/impl/src/com/intellij/execution/actions/AbstractAddToTestsPatternAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2010 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,17 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +package com.intellij.execution.actions; -/* - * User: anna - * Date: 15-Jun-2010 - */ -package com.intellij.execution.junit; - -import com.intellij.execution.testframework.AbstractPatternBasedConfigurationProducer; import com.intellij.execution.RunManager; -import com.intellij.execution.actions.RunConfigurationProducer; +import com.intellij.execution.configurations.ConfigurationType; +import com.intellij.execution.configurations.ModuleBasedConfiguration; import com.intellij.execution.configurations.RunConfiguration; +import com.intellij.execution.testframework.AbstractPatternBasedConfigurationProducer; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.popup.JBPopupFactory; @@ -37,39 +33,46 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; -public class AddToTestsPatternAction extends AnAction { +public abstract class AbstractAddToTestsPatternAction extends AnAction { + @NotNull protected abstract AbstractPatternBasedConfigurationProducer getPatternBasedProducer(); + + @NotNull protected abstract ConfigurationType getConfigurationType(); + + protected abstract boolean isPatternBasedConfiguration(T configuration); + + protected abstract Set getPatterns(T configuration); + @Override public void actionPerformed(AnActionEvent e) { final DataContext dataContext = e.getDataContext(); final PsiElement[] psiElements = LangDataKeys.PSI_ELEMENT_ARRAY.getData(dataContext); - final Set classes = RunConfigurationProducer.getInstance(PatternConfigurationProducer.class).collectTestMembers(psiElements, - true); + final Set classes = getPatternBasedProducer().collectTestMembers(psiElements, true); final Project project = CommonDataKeys.PROJECT.getData(dataContext); - final List patternConfigurations = collectPatternConfigurations(classes, project); + final List patternConfigurations = collectPatternConfigurations(classes, project); if (patternConfigurations.size() == 1) { - final JUnitConfiguration configuration = patternConfigurations.get(0); + final T configuration = patternConfigurations.get(0); for (PsiElement aClass : classes) { - configuration.getPersistentData().getPatterns().add(AbstractPatternBasedConfigurationProducer.getQName(aClass)); + getPatterns(configuration).add(AbstractPatternBasedConfigurationProducer.getQName(aClass)); } } else { - JBPopupFactory.getInstance().createListPopup(new BaseListPopupStep("Choose suite to add", patternConfigurations) { + JBPopupFactory.getInstance().createListPopup(new BaseListPopupStep("Choose suite to add", patternConfigurations) { @Override - public PopupStep onChosen(JUnitConfiguration configuration, boolean finalChoice) { + public PopupStep onChosen(T configuration, boolean finalChoice) { for (PsiElement aClass : classes) { - configuration.getPersistentData().getPatterns().add(AbstractPatternBasedConfigurationProducer.getQName(aClass)); + getPatterns(configuration).add(AbstractPatternBasedConfigurationProducer.getQName(aClass)); } return FINAL_CHOICE; } @Override - public Icon getIconFor(JUnitConfiguration configuration) { + public Icon getIconFor(T configuration) { return configuration.getIcon(); } @NotNull @Override - public String getTextFor(JUnitConfiguration value) { + public String getTextFor(T value) { return value.getName(); } }).showInBestPositionFor(dataContext); @@ -83,11 +86,11 @@ public class AddToTestsPatternAction extends AnAction { final DataContext dataContext = e.getDataContext(); final PsiElement[] psiElements = LangDataKeys.PSI_ELEMENT_ARRAY.getData(dataContext); if (psiElements != null) { - final Set foundMembers = RunConfigurationProducer.getInstance(PatternConfigurationProducer.class).collectTestMembers(psiElements, true); + final Set foundMembers = getPatternBasedProducer().collectTestMembers(psiElements, true); if (foundMembers.isEmpty()) return; final Project project = CommonDataKeys.PROJECT.getData(dataContext); if (project != null) { - final List foundConfigurations = collectPatternConfigurations(foundMembers, project); + final List foundConfigurations = collectPatternConfigurations(foundMembers, project); if (!foundConfigurations.isEmpty()) { presentation.setVisible(true); if (foundConfigurations.size() == 1) { @@ -98,20 +101,17 @@ public class AddToTestsPatternAction extends AnAction { } } - private static List collectPatternConfigurations(Set foundClasses, Project project) { - final List configurations = RunManager.getInstance(project).getConfigurationsList( - JUnitConfigurationType.getInstance()); - final List foundConfigurations = new ArrayList(); + private List collectPatternConfigurations(Set foundClasses, Project project) { + final List configurations = RunManager.getInstance(project).getConfigurationsList(getConfigurationType()); + final List foundConfigurations = new ArrayList(); for (RunConfiguration configuration : configurations) { - final JUnitConfiguration.Data data = ((JUnitConfiguration)configuration).getPersistentData(); - if (data.TEST_OBJECT == JUnitConfiguration.TEST_PATTERN) { - if (foundClasses.size() > 1 || !data.getPatterns().contains( - AbstractPatternBasedConfigurationProducer.getQName(foundClasses.iterator().next())) ) { - foundConfigurations.add((JUnitConfiguration)configuration); + if (isPatternBasedConfiguration((T)configuration)) { + if (foundClasses.size() > 1 || + !getPatterns((T)configuration).contains(AbstractPatternBasedConfigurationProducer.getQName(foundClasses.iterator().next()))) { + foundConfigurations.add((T)configuration); } } } return foundConfigurations; } - -} \ No newline at end of file +} diff --git a/plugins/junit/src/com/intellij/execution/junit/ExcludeFromRunAction.java b/java/execution/impl/src/com/intellij/execution/actions/AbstractExcludeFromRunAction.java similarity index 57% rename from plugins/junit/src/com/intellij/execution/junit/ExcludeFromRunAction.java rename to java/execution/impl/src/com/intellij/execution/actions/AbstractExcludeFromRunAction.java index c799b4888336..82d523026470 100644 --- a/plugins/junit/src/com/intellij/execution/junit/ExcludeFromRunAction.java +++ b/java/execution/impl/src/com/intellij/execution/actions/AbstractExcludeFromRunAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2010 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,14 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -/* - * User: anna - * Date: 15-Jun-2010 - */ -package com.intellij.execution.junit; +package com.intellij.execution.actions; import com.intellij.execution.Location; +import com.intellij.execution.configurations.JavaRunConfigurationModule; +import com.intellij.execution.configurations.ModuleBasedConfiguration; import com.intellij.execution.configurations.RunConfiguration; import com.intellij.execution.testframework.AbstractTestProxy; import com.intellij.openapi.actionSystem.*; @@ -32,21 +29,25 @@ import com.intellij.psi.search.GlobalSearchScope; import java.util.Set; -public class ExcludeFromRunAction extends AnAction{ - private static final Logger LOG = Logger.getInstance("#" + ExcludeFromRunAction.class.getName()); + +public abstract class AbstractExcludeFromRunAction> extends AnAction { + private static final Logger LOG = Logger.getInstance("#" + AbstractExcludeFromRunAction.class.getName()); + + protected abstract Set getPattern(T configuration); + protected abstract boolean isPatternBasedConfiguration(RunConfiguration configuration); @Override public void actionPerformed(AnActionEvent e) { final DataContext dataContext = e.getDataContext(); final Project project = CommonDataKeys.PROJECT.getData(dataContext); LOG.assertTrue(project != null); - final JUnitConfiguration configuration = (JUnitConfiguration)RunConfiguration.DATA_KEY.getData(dataContext); + final T configuration = (T)RunConfiguration.DATA_KEY.getData(dataContext); LOG.assertTrue(configuration != null); final GlobalSearchScope searchScope = configuration.getConfigurationModule().getSearchScope(); - final Set patterns = configuration.getPersistentData().getPatterns(); final AbstractTestProxy testProxy = AbstractTestProxy.DATA_KEY.getData(dataContext); LOG.assertTrue(testProxy != null); - patterns.remove(((PsiClass)testProxy.getLocation(project, searchScope).getPsiElement()).getQualifiedName()); + final String qualifiedName = ((PsiClass)testProxy.getLocation(project, searchScope).getPsiElement()).getQualifiedName(); + getPattern(configuration).remove(qualifiedName); } @Override @@ -57,21 +58,18 @@ public class ExcludeFromRunAction extends AnAction{ final Project project = CommonDataKeys.PROJECT.getData(dataContext); if (project != null) { final RunConfiguration configuration = RunConfiguration.DATA_KEY.getData(dataContext); - if (configuration instanceof JUnitConfiguration) { - final JUnitConfiguration.Data data = ((JUnitConfiguration)configuration).getPersistentData(); - if (data.TEST_OBJECT == JUnitConfiguration.TEST_PATTERN) { - final AbstractTestProxy testProxy = AbstractTestProxy.DATA_KEY.getData(dataContext); - if (testProxy != null) { - final Location location = testProxy.getLocation(project, ((JUnitConfiguration)configuration).getConfigurationModule().getSearchScope()); - if (location != null) { - final PsiElement psiElement = location.getPsiElement(); - if (psiElement instanceof PsiClass && data.getPatterns().contains(((PsiClass)psiElement).getQualifiedName())) { - presentation.setVisible(true); - } + if (isPatternBasedConfiguration(configuration)) { + final AbstractTestProxy testProxy = AbstractTestProxy.DATA_KEY.getData(dataContext); + if (testProxy != null) { + final Location location = testProxy.getLocation(project, ((T)configuration).getConfigurationModule().getSearchScope()); + if (location != null) { + final PsiElement psiElement = location.getPsiElement(); + if (psiElement instanceof PsiClass && getPattern((T)configuration).contains(((PsiClass)psiElement).getQualifiedName())) { + presentation.setVisible(true); } } } } } } -} \ No newline at end of file +} diff --git a/plugins/junit/src/META-INF/plugin.xml b/plugins/junit/src/META-INF/plugin.xml index 969fec8f58bc..6f69d152919f 100644 --- a/plugins/junit/src/META-INF/plugin.xml +++ b/plugins/junit/src/META-INF/plugin.xml @@ -63,18 +63,18 @@ - - - - - - + + + + + + diff --git a/plugins/junit/src/com/intellij/execution/junit/JUnitAddToTestsPatternAction.java b/plugins/junit/src/com/intellij/execution/junit/JUnitAddToTestsPatternAction.java new file mode 100644 index 000000000000..70a3f7fb6566 --- /dev/null +++ b/plugins/junit/src/com/intellij/execution/junit/JUnitAddToTestsPatternAction.java @@ -0,0 +1,53 @@ +/* + * Copyright 2000-2010 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * User: anna + * Date: 15-Jun-2010 + */ +package com.intellij.execution.junit; + +import com.intellij.execution.actions.AbstractAddToTestsPatternAction; +import com.intellij.execution.configurations.ConfigurationType; +import com.intellij.execution.actions.RunConfigurationProducer; +import org.jetbrains.annotations.NotNull; + +import java.util.Set; + +public class JUnitAddToTestsPatternAction extends AbstractAddToTestsPatternAction { + + @Override + @NotNull + protected PatternConfigurationProducer getPatternBasedProducer() { + return RunConfigurationProducer.getInstance(PatternConfigurationProducer.class); + } + + @Override + @NotNull + protected ConfigurationType getConfigurationType() { + return JUnitConfigurationType.getInstance(); + } + + @Override + protected boolean isPatternBasedConfiguration(JUnitConfiguration configuration) { + return configuration.getPersistentData().TEST_OBJECT == JUnitConfiguration.TEST_PATTERN; + } + + @Override + protected Set getPatterns(JUnitConfiguration configuration) { + return configuration.getPersistentData().getPatterns(); + } +} \ No newline at end of file diff --git a/plugins/junit/src/com/intellij/execution/junit/JUnitExcludeFromRunAction.java b/plugins/junit/src/com/intellij/execution/junit/JUnitExcludeFromRunAction.java new file mode 100644 index 000000000000..2a51b06c7d59 --- /dev/null +++ b/plugins/junit/src/com/intellij/execution/junit/JUnitExcludeFromRunAction.java @@ -0,0 +1,40 @@ +/* + * Copyright 2000-2010 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * User: anna + * Date: 15-Jun-2010 + */ +package com.intellij.execution.junit; + +import com.intellij.execution.actions.AbstractExcludeFromRunAction; +import com.intellij.execution.configurations.RunConfiguration; + +import java.util.Set; + +public class JUnitExcludeFromRunAction extends AbstractExcludeFromRunAction { + + @Override + protected Set getPattern(JUnitConfiguration configuration) { + return configuration.getPersistentData().getPatterns(); + } + + @Override + protected boolean isPatternBasedConfiguration(RunConfiguration configuration) { + return configuration instanceof JUnitConfiguration && + ((JUnitConfiguration)configuration).getPersistentData().TEST_OBJECT == JUnitConfiguration.TEST_PATTERN; + } +} \ No newline at end of file diff --git a/plugins/testng/src/META-INF/plugin.xml b/plugins/testng/src/META-INF/plugin.xml index 711ace8ad744..0ec8263ea709 100644 --- a/plugins/testng/src/META-INF/plugin.xml +++ b/plugins/testng/src/META-INF/plugin.xml @@ -69,6 +69,18 @@ + + + + + + + + + + + + TESTNG-151 Final passing test result is not properly hidden diff --git a/plugins/testng/src/com/theoryinpractice/testng/ui/actions/TestNGAddToTestsPatternAction.java b/plugins/testng/src/com/theoryinpractice/testng/ui/actions/TestNGAddToTestsPatternAction.java new file mode 100644 index 000000000000..0ec80518631f --- /dev/null +++ b/plugins/testng/src/com/theoryinpractice/testng/ui/actions/TestNGAddToTestsPatternAction.java @@ -0,0 +1,53 @@ +/* + * Copyright 2000-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.theoryinpractice.testng.ui.actions; + +import com.intellij.execution.actions.AbstractAddToTestsPatternAction; +import com.intellij.execution.configurations.ConfigurationType; +import com.intellij.execution.actions.RunConfigurationProducer; +import com.theoryinpractice.testng.configuration.TestNGConfiguration; +import com.theoryinpractice.testng.configuration.TestNGConfigurationType; +import com.theoryinpractice.testng.configuration.TestNGPatternConfigurationProducer; +import com.theoryinpractice.testng.model.TestType; +import org.jetbrains.annotations.NotNull; + +import java.util.Set; + +public class TestNGAddToTestsPatternAction extends AbstractAddToTestsPatternAction { + + @Override + @NotNull + protected TestNGPatternConfigurationProducer getPatternBasedProducer() { + return RunConfigurationProducer.getInstance(TestNGPatternConfigurationProducer.class); + } + + @Override + @NotNull + protected ConfigurationType getConfigurationType() { + return TestNGConfigurationType.getInstance(); + } + + @Override + protected boolean isPatternBasedConfiguration(TestNGConfiguration configuration) { + return TestType.PATTERN.getType().equals(configuration.getPersistantData().TEST_OBJECT); + } + + @Override + protected Set getPatterns(TestNGConfiguration configuration) { + return configuration.getPersistantData().getPatterns(); + } +} \ No newline at end of file diff --git a/plugins/testng/src/com/theoryinpractice/testng/ui/actions/TestNGExcludeFromRunAction.java b/plugins/testng/src/com/theoryinpractice/testng/ui/actions/TestNGExcludeFromRunAction.java new file mode 100644 index 000000000000..2f32e28061e8 --- /dev/null +++ b/plugins/testng/src/com/theoryinpractice/testng/ui/actions/TestNGExcludeFromRunAction.java @@ -0,0 +1,42 @@ +/* + * Copyright 2000-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * User: anna + * Date: 15-Jun-2010 + */ +package com.theoryinpractice.testng.ui.actions; + +import com.intellij.execution.actions.AbstractExcludeFromRunAction; +import com.intellij.execution.configurations.RunConfiguration; +import com.theoryinpractice.testng.configuration.TestNGConfiguration; +import com.theoryinpractice.testng.model.TestType; + +import java.util.Set; + +public class TestNGExcludeFromRunAction extends AbstractExcludeFromRunAction { + + @Override + protected Set getPattern(TestNGConfiguration configuration) { + return configuration.getPersistantData().getPatterns(); + } + + @Override + protected boolean isPatternBasedConfiguration(RunConfiguration configuration) { + return configuration instanceof TestNGConfiguration && + TestType.PATTERN.getType().equals(((TestNGConfiguration)configuration).getPersistantData().TEST_OBJECT); + } +} \ No newline at end of file