mark root node as terminated if some nodes aren't final

This commit is contained in:
Sergey Simonchik
2014-01-21 14:39:08 +04:00
parent 5feb54c77b
commit a677cc2dcd
2 changed files with 23 additions and 2 deletions
@@ -94,9 +94,10 @@ public class GeneralIdBasedToSMTRunnerEventsConvertor extends GeneralTestEventsP
// We don't know whether process was destroyed by user
// or it finished after all tests have been run
// Lets assume, if at finish all suites except root suite are passed
// Lets assume, if at finish all nodes except root suite have final state (passed, failed or ignored),
// then all is ok otherwise process was terminated by user
if (myRunningTestNodes.isEmpty()) {
boolean completeTree = isTreeComplete();
if (completeTree) {
myTestsRootProxy.setFinished();
} else {
logProblem("Unexpected running nodes: " + myRunningTestNodes);
@@ -110,6 +111,19 @@ public class GeneralIdBasedToSMTRunnerEventsConvertor extends GeneralTestEventsP
});
}
private boolean isTreeComplete() {
if (!myRunningTestNodes.isEmpty()) {
return false;
}
List<? extends SMTestProxy> children = myTestsRootProxy.getChildren();
for (SMTestProxy child : children) {
if (!child.isFinal() || child.wasTerminated()) {
return false;
}
}
return true;
}
@Override
public void setPrinterProvider(@NotNull TestProxyPrinterProvider printerProvider) {
myTestProxyPrinterProvider = printerProvider;
@@ -143,6 +143,13 @@ public class SMTestProxy extends AbstractTestProxy {
return false;
}
/**
* @return true if the state is final (PASSED, FAILED, IGNORED, TERMINATED)
*/
public boolean isFinal() {
return myState.isFinal();
}
private void setStacktraceIfNotSet(@Nullable String stacktrace) {
if (myStacktrace == null) myStacktrace = stacktrace;
}