smrunner: dependency on ruby module removed
[fedora-idea.git] / smRunner / testSrc / com / intellij / execution / testframework / sm / runner / GeneralToSMTRunnerEventsConvertorTest.java
blobab9c0091808d8937b2e02845aef0d147da487760
1 package com.intellij.execution.testframework.sm.runner;
3 import com.intellij.execution.runners.ExecutionEnvironment;
4 import com.intellij.execution.testframework.TestConsoleProperties;
5 import com.intellij.execution.testframework.sm.Marker;
6 import com.intellij.execution.testframework.sm.runner.ui.SMTRunnerConsoleView;
7 import com.intellij.execution.testframework.sm.runner.ui.SMTRunnerTestTreeView;
8 import com.intellij.execution.testframework.sm.runner.ui.SMTestRunnerResultsForm;
9 import com.intellij.openapi.util.Disposer;
10 import org.jetbrains.annotations.Nullable;
12 import javax.swing.tree.DefaultMutableTreeNode;
13 import javax.swing.tree.TreeModel;
14 import java.util.List;
16 /**
17 * @author Roman Chernyatchik
19 public class GeneralToSMTRunnerEventsConvertorTest extends BaseSMTRunnerTestCase {
20 private SMTRunnerConsoleView myConsole;
21 private GeneralToSMTRunnerEventsConvertor myEventsProcessor;
22 private TreeModel myTreeModel;
23 private SMTestRunnerResultsForm myResultsViewer;
25 @Override
26 protected void setUp() throws Exception {
27 super.setUp();
29 TestConsoleProperties consoleProperties = createConsoleProperties();
30 TestConsoleProperties.HIDE_PASSED_TESTS.set(consoleProperties, false);
31 TestConsoleProperties.OPEN_FAILURE_LINE.set(consoleProperties, false);
32 TestConsoleProperties.SCROLL_TO_SOURCE.set(consoleProperties, false);
33 TestConsoleProperties.SELECT_FIRST_DEFECT.set(consoleProperties, false);
34 TestConsoleProperties.TRACK_RUNNING_TEST.set(consoleProperties, false);
36 final ExecutionEnvironment environment = new ExecutionEnvironment();
37 myConsole = new SMTRunnerConsoleView(consoleProperties, environment.getRunnerSettings(), environment.getConfigurationSettings());
38 myConsole.initUI();
39 myResultsViewer = myConsole.getResultsViewer();
40 myEventsProcessor = new GeneralToSMTRunnerEventsConvertor(myResultsViewer.getTestsRootNode());
41 myEventsProcessor.addEventsListener(myResultsViewer);
42 myTreeModel = myResultsViewer.getTreeView().getModel();
44 myEventsProcessor.onStartTesting();
47 @Override
48 protected void tearDown() throws Exception {
49 Disposer.dispose(myEventsProcessor);
50 Disposer.dispose(myConsole);
52 super.tearDown();
55 public void testOnStartedTesting() {
56 final Object rootTreeNode = myTreeModel.getRoot();
57 assertEquals(0, myTreeModel.getChildCount(rootTreeNode));
59 final SMTRunnerNodeDescriptor nodeDescriptor =
60 (SMTRunnerNodeDescriptor)((DefaultMutableTreeNode)rootTreeNode).getUserObject();
61 assertFalse(nodeDescriptor.expandOnDoubleClick());
63 final SMTestProxy rootProxy = SMTRunnerTestTreeView.getTestProxyFor(rootTreeNode);
64 assertNotNull(rootProxy);
66 assertTrue(rootProxy.wasLaunched());
67 assertTrue(rootProxy.isInProgress());
68 assertTrue(rootProxy.isLeaf());
70 assertEquals("[root]", rootTreeNode.toString());
73 public void testOnTestStarted() throws InterruptedException {
74 onTestStarted("some_test");
75 final String fullName = myEventsProcessor.getFullTestName("some_test");
76 final SMTestProxy proxy = myEventsProcessor.getProxyByFullTestName(fullName);
78 assertNotNull(proxy);
79 assertTrue(proxy.isInProgress());
81 final Object rootTreeNode = (myTreeModel.getRoot());
82 assertEquals(1, myTreeModel.getChildCount(rootTreeNode));
83 final SMTestProxy rootProxy = SMTRunnerTestTreeView.getTestProxyFor(rootTreeNode);
84 assertNotNull(rootProxy);
85 assertSameElements(rootProxy.getChildren(), proxy);
88 onTestStarted("some_test2");
89 final String fullName2 = myEventsProcessor.getFullTestName("some_test2");
90 final SMTestProxy proxy2 = myEventsProcessor.getProxyByFullTestName(fullName2);
91 assertSameElements(rootProxy.getChildren(), proxy, proxy2);
94 public void testOnTestStarted_Twice() {
95 onTestStarted("some_test");
96 onTestStarted("some_test");
98 assertEquals(1, myEventsProcessor.getRunningTestsQuantity());
101 public void testOnTestStarted_WithLocation() throws InterruptedException {
102 onTestStarted("some_test", "file://some/file.rb:1");
103 final String fullName = myEventsProcessor.getFullTestName("some_test");
104 final SMTestProxy proxy = myEventsProcessor.getProxyByFullTestName(fullName);
106 assertNotNull(proxy);
107 assertEquals("file://some/file.rb:1", proxy.getLocationUrl());
110 public void testOnTestFailure() {
111 onTestStarted("some_test");
112 myEventsProcessor.onTestFailure("some_test", "", "", false);
114 final String fullName = myEventsProcessor.getFullTestName("some_test");
115 final SMTestProxy proxy = myEventsProcessor.getProxyByFullTestName(fullName);
117 assertTrue(proxy.isDefect());
118 assertFalse(proxy.isInProgress());
121 public void testOnTestFailure_Twice() {
122 onTestStarted("some_test");
123 myEventsProcessor.onTestFailure("some_test", "", "", false);
124 myEventsProcessor.onTestFailure("some_test", "", "", false);
126 assertEquals(1, myEventsProcessor.getRunningTestsQuantity());
127 assertEquals(1, myEventsProcessor.getFailedTestsSet().size());
130 public void testOnTestError() {
131 onTestStarted("some_test");
132 myEventsProcessor.onTestFailure("some_test", "", "", true);
134 final String fullName = myEventsProcessor.getFullTestName("some_test");
135 final SMTestProxy proxy = myEventsProcessor.getProxyByFullTestName(fullName);
137 assertTrue(proxy.isDefect());
138 assertFalse(proxy.isInProgress());
141 public void testOnTestIgnored() {
142 onTestStarted("some_test");
143 myEventsProcessor.onTestIgnored("some_test", "", null);
145 final String fullName = myEventsProcessor.getFullTestName("some_test");
146 final SMTestProxy proxy = myEventsProcessor.getProxyByFullTestName(fullName);
148 assertTrue(proxy.isDefect());
149 assertFalse(proxy.isInProgress());
152 public void testOnTestFinished() {
153 onTestStarted("some_test");
154 final String fullName = myEventsProcessor.getFullTestName("some_test");
155 final SMTestProxy proxy = myEventsProcessor.getProxyByFullTestName(fullName);
156 myEventsProcessor.onTestFinished("some_test", 10);
158 assertEquals(0, myEventsProcessor.getRunningTestsQuantity());
159 assertEquals(0, myEventsProcessor.getFailedTestsSet().size());
162 assertFalse(proxy.isDefect());
163 assertFalse(proxy.isInProgress());
165 //Tree
166 final Object rootTreeNode = myTreeModel.getRoot();
167 assertEquals(1, myTreeModel.getChildCount(rootTreeNode));
168 final SMTestProxy rootProxy = SMTRunnerTestTreeView.getTestProxyFor(rootTreeNode);
169 assertNotNull(rootProxy);
170 assertSameElements(rootProxy.getChildren(), proxy);
173 //TODO[romeo] catch assertion
174 //public void testFinished_Twice() {
175 // myEventsProcessor.onTestStarted("some_test");
176 // myEventsProcessor.onTestFinished("some_test");
177 // myEventsProcessor.onTestFinished("some_test");
179 // assertEquals(1, myEventsProcessor.getTestsCurrentCount());
180 // assertEquals(0, myEventsProcessor.getRunningTestsFullNameToProxy().size());
181 // assertEquals(0, myEventsProcessor.getFailedTestsSet().size());
185 public void testOnTestFinished_EmptySuite() {
186 myEventsProcessor.onFinishTesting();
188 //Tree
189 final Object rootTreeNode = myTreeModel.getRoot();
190 assertEquals(0, myTreeModel.getChildCount(rootTreeNode));
191 final SMTestProxy rootProxy = SMTRunnerTestTreeView.getTestProxyFor(rootTreeNode);
192 assertNotNull(rootProxy);
194 assertFalse(rootProxy.isInProgress());
195 assertFalse(rootProxy.isDefect());
198 public void testOnFinishedTesting_WithFailure() {
199 onTestStarted("test");
200 myEventsProcessor.onTestFailure("test", "", "", false);
201 myEventsProcessor.onTestFinished("test", 10);
202 myEventsProcessor.onFinishTesting();
204 //Tree
205 final Object rootTreeNode = myTreeModel.getRoot();
206 assertEquals(1, myTreeModel.getChildCount(rootTreeNode));
207 final SMTestProxy rootProxy = SMTRunnerTestTreeView.getTestProxyFor(rootTreeNode);
208 assertNotNull(rootProxy);
210 assertFalse(rootProxy.isInProgress());
211 assertTrue(rootProxy.isDefect());
214 public void testOnFinishedTesting_WithError() {
215 onTestStarted("test");
216 myEventsProcessor.onTestFailure("test", "", "", true);
217 myEventsProcessor.onTestFinished("test", 10);
218 myEventsProcessor.onFinishTesting();
220 //Tree
221 final Object rootTreeNode = myTreeModel.getRoot();
222 assertEquals(1, myTreeModel.getChildCount(rootTreeNode));
223 final SMTestProxy rootProxy = SMTRunnerTestTreeView.getTestProxyFor(rootTreeNode);
224 assertNotNull(rootProxy);
226 assertFalse(rootProxy.isInProgress());
227 assertTrue(rootProxy.isDefect());
230 public void testOnFinishedTesting_WithIgnored() {
231 onTestStarted("test");
232 myEventsProcessor.onTestIgnored("test", "", null);
233 myEventsProcessor.onTestFinished("test", 10);
234 myEventsProcessor.onFinishTesting();
236 //Tree
237 final Object rootTreeNode = myTreeModel.getRoot();
238 assertEquals(1, myTreeModel.getChildCount(rootTreeNode));
239 final SMTestProxy rootProxy = SMTRunnerTestTreeView.getTestProxyFor(rootTreeNode);
240 assertNotNull(rootProxy);
242 assertFalse(rootProxy.isInProgress());
243 assertTrue(rootProxy.isDefect());
246 public void testOnFinishedTesting_twice() {
247 myEventsProcessor.onFinishTesting();
249 final Marker finishedMarker = new Marker();
250 myEventsProcessor.addEventsListener(new SMTRunnerEventsAdapter(){
251 @Override
252 public void onTestingFinished() {
253 finishedMarker.set();
256 myEventsProcessor.onFinishTesting();
257 assertFalse(finishedMarker.isSet());
260 public void testOnSuiteStarted() {
261 onTestSuiteStarted("suite1");
263 //lets check that new tests have right parent
264 onTestStarted("test1");
265 final SMTestProxy test1 =
266 myEventsProcessor.getProxyByFullTestName(myEventsProcessor.getFullTestName("test1"));
267 assertEquals("suite1", test1.getParent().getName());
269 //lets check that new suits have righ parent
270 onTestSuiteStarted("suite2");
271 onTestSuiteStarted("suite3");
272 onTestStarted("test2");
273 final SMTestProxy test2 =
274 myEventsProcessor.getProxyByFullTestName(myEventsProcessor.getFullTestName("test2"));
275 assertEquals("suite3", test2.getParent().getName());
276 assertEquals("suite2", test2.getParent().getParent().getName());
278 myEventsProcessor.onTestFinished("test2", 10);
280 //check that after finishing suite (suite3), current will be parent of finished suite (i.e. suite2)
281 myEventsProcessor.onSuiteFinished("suite3");
282 onTestStarted("test3");
283 final SMTestProxy test3 =
284 myEventsProcessor.getProxyByFullTestName(myEventsProcessor.getFullTestName("test3"));
285 assertEquals("suite2", test3.getParent().getName());
287 //clean up
288 myEventsProcessor.onSuiteFinished("suite2");
289 myEventsProcessor.onSuiteFinished("suite1");
292 public void testOnSuiteStarted_WithLocation() {
293 onTestSuiteStarted("suite1", "file://some/file.rb:1");
295 //lets check that new tests have right parent
296 onTestStarted("test1", "file://some/file.rb:4");
297 final SMTestProxy test1 =
298 myEventsProcessor.getProxyByFullTestName(myEventsProcessor.getFullTestName("test1"));
300 assertEquals("file://some/file.rb:1", test1.getParent().getLocationUrl());
301 assertEquals("file://some/file.rb:4", test1.getLocationUrl());
304 public void testGetCurrentTestSuite() {
305 assertEquals(myResultsViewer.getTestsRootNode(), myEventsProcessor.getCurrentSuite());
307 onTestSuiteStarted("my_suite");
308 assertEquals("my_suite", myEventsProcessor.getCurrentSuite().getName());
311 public void testConcurrentSuite_intersected() {
312 myEventsProcessor.onSuiteStarted("suite1", null);
313 myEventsProcessor.onTestStarted("suite2.test1", null);
315 final SMTestProxy test1 =
316 myEventsProcessor.getProxyByFullTestName(myEventsProcessor.getFullTestName("suite2.test1"));
318 myEventsProcessor.onSuiteFinished("suite1");
320 myEventsProcessor.onSuiteStarted("suite2", null);
321 myEventsProcessor.onTestFinished("suite2.test1", 10);
322 myEventsProcessor.onSuiteFinished("suite2");
324 assertEquals("suite1", test1.getParent().getName());
326 final List<? extends SMTestProxy> children =
327 myResultsViewer.getTestsRootNode().getChildren();
328 assertEquals(2, children.size());
329 assertEquals("suite1", children.get(0).getName());
330 assertEquals(1, children.get(0).getChildren().size());
331 assertEquals("suite2", children.get(1).getName());
332 assertEquals(0, children.get(1).getChildren().size());
335 public void test3212() {
336 // let's make
337 myEventsProcessor.clearInternalSuitesStack();
339 assertEquals(myResultsViewer.getTestsRootNode(), myEventsProcessor.getCurrentSuite());
342 private void onTestStarted(final String testName) {
343 onTestStarted(testName, null);
346 private void onTestStarted(final String testName, @Nullable final String locationUrl) {
347 myEventsProcessor.onTestStarted(testName, locationUrl);
348 myResultsViewer.performUpdate();
351 private void onTestSuiteStarted(final String suiteName) {
352 onTestSuiteStarted(suiteName, null);
355 private void onTestSuiteStarted(final String suiteName, @Nullable final String locationUrl) {
356 myEventsProcessor.onSuiteStarted(suiteName, locationUrl);
357 myResultsViewer.performUpdate();