testRunner: ensure tests are terminated

This commit is contained in:
Anna Kozlova
2015-06-09 14:36:21 +03:00
parent 9cafce49a5
commit 3a778e944a
3 changed files with 19 additions and 15 deletions
@@ -96,7 +96,7 @@ public class GeneralIdBasedToSMTRunnerEventsConvertor extends GeneralTestEventsP
// or it finished after all tests have been run
// 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
boolean completeTree = isTreeComplete();
boolean completeTree = isTreeComplete(myRunningTestNodes, myTestsRootProxy);
if (completeTree) {
myTestsRootProxy.setFinished();
} else {
@@ -113,19 +113,6 @@ 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;
@@ -29,6 +29,9 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* Processes events of test runner in general text-based form.
@@ -135,4 +138,18 @@ public abstract class GeneralTestEventsProcessor implements Disposable {
myTransferToEDTQueue.offer(runnable);
}
}
protected static <T> boolean isTreeComplete(Collection<T> runningTests, SMTestProxy.SMRootTestProxy rootNode) {
if (!runningTests.isEmpty()) {
return false;
}
List<? extends SMTestProxy> children = rootNode.getChildren();
for (SMTestProxy child : children) {
if (!child.isFinal() || child.wasTerminated()) {
return false;
}
}
return true;
}
}
@@ -100,7 +100,7 @@ public class GeneralToSMTRunnerEventsConvertor extends GeneralTestEventsProcesso
// or it finished after all tests have been run
// Lets assume, if at finish all suites except root suite are passed
// then all is ok otherwise process was terminated by user
if (!myTestsRootNode.equals(mySuitesStack.getCurrentSuite())) {
if (!isTreeComplete(myRunningTestsFullNameToProxy.keySet(), myTestsRootNode)) {
myTestsRootNode.setTerminated();
myRunningTestsFullNameToProxy.clear();
}