diff --git a/java/execution/impl/src/com/intellij/execution/actions/JavaRerunFailedTestsAction.java b/java/execution/impl/src/com/intellij/execution/actions/JavaRerunFailedTestsAction.java index 7bf07bf64518..76e7175b87ff 100644 --- a/java/execution/impl/src/com/intellij/execution/actions/JavaRerunFailedTestsAction.java +++ b/java/execution/impl/src/com/intellij/execution/actions/JavaRerunFailedTestsAction.java @@ -37,7 +37,7 @@ public class JavaRerunFailedTestsAction extends AbstractRerunFailedTestsAction { @NotNull @Override protected Filter getFilter(Project project, GlobalSearchScope searchScope) { - return Filter.FAILED_OR_INTERRUPTED.and(JavaAwareFilter.METHOD(project, searchScope)); + return super.getFilter(project, searchScope).and(JavaAwareFilter.METHOD(project, searchScope)); } } diff --git a/platform/platform-resources-en/src/messages/ExecutionBundle.properties b/platform/platform-resources-en/src/messages/ExecutionBundle.properties index 041c4ff04c0a..ae6a49ac3e4d 100644 --- a/platform/platform-resources-en/src/messages/ExecutionBundle.properties +++ b/platform/platform-resources-en/src/messages/ExecutionBundle.properties @@ -145,6 +145,7 @@ junit.runing.info.track.test.action.description=Select currently running test in junit.runing.info.collapse.test.action.name=Collapse all test suites junit.runing.info.expand.test.action.name=Expand all test suites junit.runing.info.select.first.failed.action.name=Select First Failed Test When Finished +junit.runing.info.include.non.started.in.rerun.failed.action.name=Include Non-Started Tests into Rerun Failed junit.runing.info.scroll.to.stacktrace.action.name=Scroll to Stacktrace junit.runing.info.scroll.to.stacktrace.action.description=Scroll console to beginning of assertion or exception stacktrace junit.runing.info.open.source.at.exception.action.name=Open Source at Exception diff --git a/platform/testRunner/src/com/intellij/execution/testframework/TestConsoleProperties.java b/platform/testRunner/src/com/intellij/execution/testframework/TestConsoleProperties.java index 58f3bbecad53..5d7fe60d2288 100644 --- a/platform/testRunner/src/com/intellij/execution/testframework/TestConsoleProperties.java +++ b/platform/testRunner/src/com/intellij/execution/testframework/TestConsoleProperties.java @@ -50,6 +50,7 @@ public abstract class TestConsoleProperties extends StoringPropertyContainer imp public static final BooleanProperty OPEN_FAILURE_LINE = new BooleanProperty("openFailureLine", true); public static final BooleanProperty TRACK_CODE_COVERAGE = new BooleanProperty("trackCodeCoverage", false); public static final BooleanProperty SHOW_STATISTICS = new BooleanProperty("showStatistics", false); + public static final BooleanProperty INCLUDE_NON_STARTED_IN_RERUN_FAILED = new BooleanProperty("includeNonStarted", true); private final Project myProject; private final Executor myExecutor; diff --git a/platform/testRunner/src/com/intellij/execution/testframework/actions/AbstractRerunFailedTestsAction.java b/platform/testRunner/src/com/intellij/execution/testframework/actions/AbstractRerunFailedTestsAction.java index dd61fbed941c..8b945eb9203a 100644 --- a/platform/testRunner/src/com/intellij/execution/testframework/actions/AbstractRerunFailedTestsAction.java +++ b/platform/testRunner/src/com/intellij/execution/testframework/actions/AbstractRerunFailedTestsAction.java @@ -150,6 +150,9 @@ public class AbstractRerunFailedTestsAction extends AnAction implements AnAction @NotNull protected Filter getFilter(Project project, GlobalSearchScope searchScope) { + if (TestConsoleProperties.INCLUDE_NON_STARTED_IN_RERUN_FAILED.value(myConsoleProperties)) { + return Filter.NOT_PASSED.or(Filter.FAILED_OR_INTERRUPTED); + } return Filter.FAILED_OR_INTERRUPTED; } diff --git a/plugins/junit/src/com/intellij/execution/junit2/ui/actions/JUnitToolbarPanel.java b/plugins/junit/src/com/intellij/execution/junit2/ui/actions/JUnitToolbarPanel.java index 492778fc35d3..03c223eac4f6 100644 --- a/plugins/junit/src/com/intellij/execution/junit2/ui/actions/JUnitToolbarPanel.java +++ b/plugins/junit/src/com/intellij/execution/junit2/ui/actions/JUnitToolbarPanel.java @@ -16,6 +16,7 @@ package com.intellij.execution.junit2.ui.actions; +import com.intellij.execution.ExecutionBundle; import com.intellij.execution.Location; import com.intellij.execution.configurations.ConfigurationPerRunnerSettings; import com.intellij.execution.configurations.RunnerSettings; @@ -27,10 +28,12 @@ import com.intellij.execution.testframework.TestFrameworkRunningModel; import com.intellij.execution.testframework.TestsUIUtil; import com.intellij.execution.testframework.ToolbarPanel; import com.intellij.execution.testframework.actions.ScrollToTestSourceAction; +import com.intellij.openapi.actionSystem.DefaultActionGroup; import com.intellij.openapi.project.Project; import com.intellij.pom.Navigatable; import com.intellij.psi.PsiClass; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.util.config.ToggleBooleanProperty; import org.jetbrains.annotations.NonNls; import javax.swing.*; @@ -45,6 +48,20 @@ public class JUnitToolbarPanel extends ToolbarPanel { super(properties, runnerSettings, configurationSettings, parentComponent); } + @Override + protected void appendAdditionalActions(DefaultActionGroup actionGroup, + TestConsoleProperties properties, + RunnerSettings runnerSettings, + ConfigurationPerRunnerSettings configurationSettings, + JComponent parent) { + super.appendAdditionalActions(actionGroup, properties, runnerSettings, configurationSettings, parent); + actionGroup.addAction(new ToggleBooleanProperty( + ExecutionBundle.message("junit.runing.info.include.non.started.in.rerun.failed.action.name"), + null, + null, + properties, TestConsoleProperties.INCLUDE_NON_STARTED_IN_RERUN_FAILED)).setAsSecondary(true); + } + public void setModel(final TestFrameworkRunningModel model) { super.setModel(model); diff --git a/plugins/testng/src/com/theoryinpractice/testng/ui/TestNGResults.java b/plugins/testng/src/com/theoryinpractice/testng/ui/TestNGResults.java index afbd12cbd32d..617d403f915d 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/ui/TestNGResults.java +++ b/plugins/testng/src/com/theoryinpractice/testng/ui/TestNGResults.java @@ -23,11 +23,13 @@ package com.theoryinpractice.testng.ui; import com.intellij.codeInsight.AnnotationUtil; +import com.intellij.execution.ExecutionBundle; import com.intellij.execution.configurations.ConfigurationPerRunnerSettings; import com.intellij.execution.configurations.RunnerSettings; import com.intellij.execution.testframework.*; import com.intellij.execution.testframework.actions.ScrollToTestSourceAction; import com.intellij.execution.testframework.ui.TestResultsPanel; +import com.intellij.openapi.actionSystem.DefaultActionGroup; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.progress.util.ColorProgressBar; import com.intellij.openapi.project.Project; @@ -41,6 +43,7 @@ import com.intellij.ui.DoubleClickListener; import com.intellij.ui.ScrollPaneFactory; import com.intellij.ui.table.TableView; import com.intellij.util.OpenSourceUtil; +import com.intellij.util.config.ToggleBooleanProperty; import com.theoryinpractice.testng.configuration.TestNGConfiguration; import com.theoryinpractice.testng.model.*; import com.theoryinpractice.testng.util.TestNGUtil; @@ -148,7 +151,21 @@ public class TestNGResults extends TestResultsPanel implements TestFrameworkRunn @Override protected ToolbarPanel createToolbarPanel() { - final ToolbarPanel panel = new ToolbarPanel(getProperties(), myRunnerSettings, myConfigurationSettings, this); + final ToolbarPanel panel = new ToolbarPanel(getProperties(), myRunnerSettings, myConfigurationSettings, this){ + @Override + protected void appendAdditionalActions(DefaultActionGroup actionGroup, + TestConsoleProperties properties, + RunnerSettings runnerSettings, + ConfigurationPerRunnerSettings configurationSettings, + JComponent parent) { + super.appendAdditionalActions(actionGroup, properties, runnerSettings, configurationSettings, parent); + actionGroup.addAction(new ToggleBooleanProperty( + ExecutionBundle.message("junit.runing.info.include.non.started.in.rerun.failed.action.name"), + null, + null, + properties, TestConsoleProperties.INCLUDE_NON_STARTED_IN_RERUN_FAILED)).setAsSecondary(true); + } + }; panel.setModel(this); return panel; }