sm test: @NotNull com.intellij.execution.testframework.sm.runner.GeneralIdBasedToSMTR...
authorSergey Simonchik <sergey.simonchik@jetbrains.com>
Wed, 2 Nov 2016 11:42:18 +0000 (14:42 +0300)
committerSergey Simonchik <sergey.simonchik@jetbrains.com>
Wed, 2 Nov 2016 11:42:18 +0000 (14:42 +0300)
platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralIdBasedToSMTRunnerEventsConvertor.java
platform/smRunner/src/com/intellij/execution/testframework/sm/runner/events/TestSuiteStartedEvent.java
platform/smRunner/testSrc/com/intellij/execution/testframework/sm/runner/GeneralIdBasedToSMTRunnerEventsConvertorTest.java

index 7a31beee8189eb20508388152361094ee5f3c58a..f599c5f9f8a795669644550eba60ae9823573212 100644 (file)
@@ -128,7 +128,8 @@ public class GeneralIdBasedToSMTRunnerEventsConvertor extends GeneralTestEventsP
       return;
     }
 
-    if (!validateNodeId(startedNodeEvent)) {
+    String nodeId = validateAndGetNodeId(startedNodeEvent);
+    if (nodeId == null) {
       return;
     }
 
@@ -142,7 +143,7 @@ public class GeneralIdBasedToSMTRunnerEventsConvertor extends GeneralTestEventsP
         childProxy.setPreferredPrinter(printer);
       }
     }
-    node = new Node(startedNodeEvent.getId(), parentNode, childProxy);
+    node = new Node(nodeId, parentNode, childProxy);
     myNodeByIdMap.put(startedNodeEvent.getId(), node);
     if (myLocator != null) {
       childProxy.setLocator(myLocator);
@@ -209,7 +210,7 @@ public class GeneralIdBasedToSMTRunnerEventsConvertor extends GeneralTestEventsP
   private Node findNodeToTerminate(@NotNull TreeNodeEvent treeNodeEvent) {
     Node node = findNode(treeNodeEvent);
     if (node == null) {
-      logProblem("Trying to finish noexistent node: " + treeNodeEvent);
+      logProblem("Trying to finish nonexistent node: " + treeNodeEvent);
       return null;
     }
     return node;
@@ -313,21 +314,19 @@ public class GeneralIdBasedToSMTRunnerEventsConvertor extends GeneralTestEventsP
     addToInvokeLater(() -> fireOnTestsCountInSuite(count));
   }
 
-  private boolean validateNodeId(@NotNull TreeNodeEvent treeNodeEvent) {
+  @Nullable
+  private String validateAndGetNodeId(@NotNull TreeNodeEvent treeNodeEvent) {
     String nodeId = treeNodeEvent.getId();
     if (nodeId == null || nodeId.equals(TreeNodeEvent.ROOT_NODE_ID)) {
-      logProblem("Node id should be initialized: " + treeNodeEvent + ".", true);
-      return false;
+      logProblem((nodeId == null ? "Missing" : "Illegal") + " nodeId: " + treeNodeEvent, true);
     }
-    return true;
+    return nodeId;
   }
 
   @Nullable
   private Node findNode(@NotNull TreeNodeEvent treeNodeEvent) {
-    if (!validateNodeId(treeNodeEvent)) {
-      return null;
-    }
-    return myNodeByIdMap.get(treeNodeEvent.getId());
+    String nodeId = validateAndGetNodeId(treeNodeEvent);
+    return nodeId != null ? myNodeByIdMap.get(nodeId) : null;
   }
 
   @Nullable
@@ -412,14 +411,14 @@ public class GeneralIdBasedToSMTRunnerEventsConvertor extends GeneralTestEventsP
     private final SMTestProxy myProxy;
     private State myState;
 
-    Node(@Nullable String id, @Nullable Node parentNode, @NotNull SMTestProxy proxy) {
+    Node(@NotNull String id, @Nullable Node parentNode, @NotNull SMTestProxy proxy) {
       myId = id;
       myParentNode = parentNode;
       myProxy = proxy;
       myState = State.NOT_RUNNING;
     }
 
-    @Nullable
+    @NotNull
     public String getId() {
       return myId;
     }
@@ -467,7 +466,7 @@ public class GeneralIdBasedToSMTRunnerEventsConvertor extends GeneralTestEventsP
 
     @Override
     public int hashCode() {
-      return myId != null ? myId.hashCode() : -1;
+      return myId.hashCode();
     }
 
     @Override
index 3c1c1bae0931288150d0e74d54326a4737b5a1da..180ba8e53bf901a59b2204a1de1ba11de62a44c0 100644 (file)
@@ -21,6 +21,16 @@ import org.jetbrains.annotations.Nullable;
 
 public class TestSuiteStartedEvent extends BaseStartedNodeEvent {
 
+  public TestSuiteStartedEvent(@Nullable String name,
+                               @Nullable String id,
+                               @Nullable String parentId,
+                               @Nullable String locationUrl,
+                               @Nullable String nodeType,
+                               @Nullable String nodeArgs,
+                               boolean running) {
+    super(name, id, parentId, locationUrl, nodeType, nodeArgs, running);
+  }
+
   public TestSuiteStartedEvent(@NotNull TestSuiteStarted suiteStarted,
                                @Nullable String locationUrl) {
     super(suiteStarted.getSuiteName(),
index 38b0f37707885b6bc7c411cdd1c42002efe289e4..3363aa0f26a36bc77aae1a06ed7def99f42c87de 100644 (file)
@@ -17,6 +17,8 @@ package com.intellij.execution.testframework.sm.runner;
 
 import com.intellij.execution.testframework.sm.runner.events.TestFailedEvent;
 import com.intellij.execution.testframework.sm.runner.events.TestStartedEvent;
+import com.intellij.execution.testframework.sm.runner.events.TestSuiteStartedEvent;
+import com.intellij.execution.testframework.sm.runner.events.TreeNodeEvent;
 import com.intellij.openapi.util.Disposer;
 import org.jetbrains.annotations.NotNull;
 
@@ -34,8 +36,12 @@ public class GeneralIdBasedToSMTRunnerEventsConvertorTest extends BaseSMTRunnerT
 
   @Override
   protected void tearDown() throws Exception {
-    Disposer.dispose(myEventsProcessor);
-    super.tearDown();
+    try {
+      Disposer.dispose(myEventsProcessor);
+    }
+    finally {
+      super.tearDown();
+    }
   }
 
   public void testOnStartedTesting() {
@@ -45,27 +51,80 @@ public class GeneralIdBasedToSMTRunnerEventsConvertorTest extends BaseSMTRunnerT
   }
 
   public void testOnTestStarted() throws InterruptedException {
-    onTestStarted("my test", "1", "0");
-    SMTestProxy proxy = myEventsProcessor.findProxyById("1");
+    onTestStarted("my test", "1", TreeNodeEvent.ROOT_NODE_ID, true);
+    SMTestProxy proxy = validateTest("1", "my test", true, myRootProxy);
+    onTestFailed("1", "", 1);
+    validateTestFailure("1", proxy, 1);
+  }
 
-    assertNotNull(proxy);
-    assertTrue(proxy.isInProgress());
-    assertEquals(1, myRootProxy.getChildren().size());
+  public void testRunningSuite() throws Exception {
+    onSuiteStarted("Code", "1", TreeNodeEvent.ROOT_NODE_ID);
+    SMTestProxy suiteProxy = validateSuite("1", "Code", myRootProxy);
+    onTestStarted("should work", "2", "1", true);
+    SMTestProxy testProxy = validateTest("2", "should work", true, suiteProxy);
+    onTestFailed("2", "NPE", 5);
+    validateTestFailure("2", testProxy, 5);
+    assertTrue(suiteProxy.isInProgress());
 
-    onTestFailed("1", "", 1);
-    proxy = myEventsProcessor.findProxyById("1");
+    onSuiteStarted("Bugs", "3", TreeNodeEvent.ROOT_NODE_ID);
+    SMTestProxy bugsSuiteProxy = validateSuite("3", "Bugs", myRootProxy);
+    onTestStarted("should be fixed", "4", "3", false);
+    validateTest("4", "should be fixed", false, bugsSuiteProxy);
+    assertFalse(bugsSuiteProxy.isInProgress());
+  }
+
+  @NotNull
+  private SMTestProxy validateSuite(@NotNull String id,
+                                    @NotNull String expectedName,
+                                    @NotNull SMTestProxy parentProxy) {
+    SMTestProxy suite = myEventsProcessor.findProxyById(id);
+    assertNotNull(suite);
+    assertTrue(suite.isSuite());
+    assertEquals(expectedName, suite.getName());
+    assertFalse(suite.isInProgress());
+    assertTrue(parentProxy.getChildren().contains(suite));
+    return suite;
+  }
+
+  @NotNull
+  private SMTestProxy validateTest(@NotNull String id,
+                                   @NotNull String expectedName,
+                                   boolean inProgress,
+                                   @NotNull SMTestProxy parent) {
+    SMTestProxy suite = myEventsProcessor.findProxyById(id);
+    assertNotNull(suite);
+    assertFalse(suite.isSuite());
+    assertTrue(suite.isLeaf());
+    assertEquals(expectedName, suite.getName());
+    assertEquals(inProgress, suite.isInProgress());
+    assertTrue(parent.getChildren().contains(suite));
+    return suite;
+  }
+
+  @NotNull
+  private SMTestProxy validateTestFailure(@NotNull String id,
+                                          @NotNull SMTestProxy expectedTestProxy,
+                                          long expectedDurationMillis) {
+    SMTestProxy test = myEventsProcessor.findProxyById(id);
+    assertEquals(expectedTestProxy, test);
+    assertFalse(test.isSuite());
+    assertTrue(test.isFinal());
+    assertTrue(test.isDefect());
+    assertEquals(Long.valueOf(expectedDurationMillis), test.getDuration());
+    return test;
+  }
 
-    assertNotNull(proxy);
-    assertTrue(proxy.isDefect());
-    assertEquals(Long.valueOf(1), proxy.getDuration());
+  private void onSuiteStarted(@NotNull String suiteName, @NotNull String id, @NotNull String parentId) {
+    myEventsProcessor.onSuiteStarted(new TestSuiteStartedEvent(suiteName, id, parentId, null, null, null, false));
   }
 
-  private void onTestStarted(@NotNull String testName, String id, String parentId) {
-    myEventsProcessor.onTestStarted(new TestStartedEvent(testName, id, parentId, null, null, null, true));
+  private void onTestStarted(@NotNull String testName, @NotNull String id, @NotNull String parentId, boolean running) {
+    myEventsProcessor.onTestStarted(new TestStartedEvent(testName, id, parentId, null, null, null, running));
   }
 
-  private void onTestFailed(String id, @NotNull String errorMessage, int duration) {
-    myEventsProcessor.onTestFailure(new TestFailedEvent(null, id, errorMessage, null, false, null, null, null, duration));
+  private void onTestFailed(@NotNull String id, @NotNull String errorMessage, int durationMillis) {
+    myEventsProcessor.onTestFailure(new TestFailedEvent(null, id, errorMessage, null, false, null,
+                                                        null, null, durationMillis));
   }
 
 }