compound state for all kinds of failures (IDEA-156747)

This commit is contained in:
Anna Kozlova
2016-06-03 10:55:04 +03:00
parent 6df5ee849b
commit fd5e296488
2 changed files with 27 additions and 18 deletions
@@ -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<DiffHyperlink> getDiffViewerProviders() {
if (myState instanceof TestComparisonFailedStates) {
return ((TestComparisonFailedStates)myState).getHyperlinks();
if (myState instanceof CompoundTestFailedState) {
return ((CompoundTestFailedState)myState).getHyperlinks();
}
return super.getDiffViewerProviders();
}
@@ -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<TestComparisionFailedState> myStates = new ArrayList<TestComparisionFailedState>();
final List<TestFailedState> myStates = new ArrayList<TestFailedState>();
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<DiffHyperlink> getHyperlinks() {
return ContainerUtil.map(myStates, state -> state.getHyperlink());
return ContainerUtil.map(ContainerUtil.filter(myStates, state -> state instanceof TestComparisionFailedState),
state -> ((TestComparisionFailedState)state).getHyperlink());
}
}