From 3a778e944a8705feff0e0f9b8c892116a07ef2b6 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 9 Jun 2015 13:22:13 +0300 Subject: [PATCH] testRunner: ensure tests are terminated --- ...eneralIdBasedToSMTRunnerEventsConvertor.java | 15 +-------------- .../sm/runner/GeneralTestEventsProcessor.java | 17 +++++++++++++++++ .../GeneralToSMTRunnerEventsConvertor.java | 2 +- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralIdBasedToSMTRunnerEventsConvertor.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralIdBasedToSMTRunnerEventsConvertor.java index 9e09381345af..27b4326374aa 100644 --- a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralIdBasedToSMTRunnerEventsConvertor.java +++ b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralIdBasedToSMTRunnerEventsConvertor.java @@ -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 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; diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralTestEventsProcessor.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralTestEventsProcessor.java index 43562be8ddea..145ce234f3f6 100644 --- a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralTestEventsProcessor.java +++ b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralTestEventsProcessor.java @@ -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 boolean isTreeComplete(Collection runningTests, SMTestProxy.SMRootTestProxy rootNode) { + if (!runningTests.isEmpty()) { + return false; + } + List children = rootNode.getChildren(); + for (SMTestProxy child : children) { + if (!child.isFinal() || child.wasTerminated()) { + return false; + } + } + return true; + } } diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralToSMTRunnerEventsConvertor.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralToSMTRunnerEventsConvertor.java index f803a80cb55e..987bda70f2fd 100644 --- a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralToSMTRunnerEventsConvertor.java +++ b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralToSMTRunnerEventsConvertor.java @@ -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(); }