From fd5e2964882d63a516a982efe522cf948db23feb Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Fri, 3 Jun 2016 10:42:13 +0300 Subject: [PATCH] compound state for all kinds of failures (IDEA-156747) --- .../testframework/sm/runner/SMTestProxy.java | 32 ++++++++++++------- ...ates.java => CompoundTestFailedState.java} | 13 ++++---- 2 files changed, 27 insertions(+), 18 deletions(-) rename platform/smRunner/src/com/intellij/execution/testframework/sm/runner/states/{TestComparisonFailedStates.java => CompoundTestFailedState.java} (69%) diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/SMTestProxy.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/SMTestProxy.java index ef279c6cbd3b..72d48a1c1460 100644 --- a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/SMTestProxy.java +++ b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/SMTestProxy.java @@ -441,7 +441,15 @@ public class SMTestProxy extends AbstractTestProxy { public void setTestFailed(@NotNull String localizedMessage, @Nullable String stackTrace, boolean testError) { setStacktraceIfNotSet(stackTrace); - if (myState instanceof TestFailedState) { + if (myState instanceof TestComparisionFailedState) { + CompoundTestFailedState states = new CompoundTestFailedState(localizedMessage, stackTrace); + states.addFailure((TestFailedState)myState); + final TestFailedState failedState = new TestFailedState(localizedMessage, stackTrace); + states.addFailure(failedState); + fireOnNewPrintable(failedState); + myState = states; + } + else if (myState instanceof TestFailedState) { ((TestFailedState)myState).addError(localizedMessage, stackTrace, myPrinter); } else { @@ -473,14 +481,14 @@ public class SMTestProxy extends AbstractTestProxy { @Nullable final String actualFilePath) { setStacktraceIfNotSet(stackTrace); final TestComparisionFailedState comparisionFailedState = new TestComparisionFailedState(localizedMessage, stackTrace, actualText, expectedText, expectedFilePath, actualFilePath); - if (myState instanceof TestComparisionFailedState) { - final TestComparisonFailedStates states = new TestComparisonFailedStates(localizedMessage, stackTrace); - states.addComparisonFailure((TestComparisionFailedState)myState); - states.addComparisonFailure(comparisionFailedState); - myState = states; + if (myState instanceof CompoundTestFailedState) { + ((CompoundTestFailedState)myState).addFailure(comparisionFailedState); } - else if (myState instanceof TestComparisonFailedStates) { - ((TestComparisonFailedStates)myState).addComparisonFailure(comparisionFailedState); + else if (myState instanceof TestFailedState) { + final CompoundTestFailedState states = new CompoundTestFailedState(localizedMessage, stackTrace); + states.addFailure((TestFailedState)myState); + states.addFailure(comparisionFailedState); + myState = states; } else { myState = comparisionFailedState; @@ -648,8 +656,8 @@ public class SMTestProxy extends AbstractTestProxy { return ((TestComparisionFailedState)myState).getHyperlink(); } - if (myState instanceof TestComparisonFailedStates) { - return ((TestComparisonFailedStates)myState).getHyperlinks().get(0); + if (myState instanceof CompoundTestFailedState) { + return ((CompoundTestFailedState)myState).getHyperlinks().get(0); } if (myChildren != null) { @@ -667,8 +675,8 @@ public class SMTestProxy extends AbstractTestProxy { @NotNull @Override public List getDiffViewerProviders() { - if (myState instanceof TestComparisonFailedStates) { - return ((TestComparisonFailedStates)myState).getHyperlinks(); + if (myState instanceof CompoundTestFailedState) { + return ((CompoundTestFailedState)myState).getHyperlinks(); } return super.getDiffViewerProviders(); } diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/states/TestComparisonFailedStates.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/states/CompoundTestFailedState.java similarity index 69% rename from platform/smRunner/src/com/intellij/execution/testframework/sm/runner/states/TestComparisonFailedStates.java rename to platform/smRunner/src/com/intellij/execution/testframework/sm/runner/states/CompoundTestFailedState.java index d94c64cccedf..f7153352e320 100644 --- a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/states/TestComparisonFailedStates.java +++ b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/states/CompoundTestFailedState.java @@ -26,28 +26,29 @@ import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; -public class TestComparisonFailedStates extends TestFailedState { +public class CompoundTestFailedState extends TestFailedState { - final List myStates = new ArrayList(); + final List myStates = new ArrayList(); - public TestComparisonFailedStates(@Nullable String localizedMessage, @Nullable String stackTrace) { + public CompoundTestFailedState(@Nullable String localizedMessage, @Nullable String stackTrace) { super(localizedMessage, stackTrace); } - public void addComparisonFailure(TestComparisionFailedState state) { + public void addFailure(TestFailedState state) { myStates.add(state); } @Override public void printOn(Printer printer) { - for (TestComparisionFailedState state : myStates) { + for (TestFailedState state : myStates) { state.printOn(printer); } } @NotNull public List getHyperlinks() { - return ContainerUtil.map(myStates, state -> state.getHyperlink()); + return ContainerUtil.map(ContainerUtil.filter(myStates, state -> state instanceof TestComparisionFailedState), + state -> ((TestComparisionFailedState)state).getHyperlink()); } }