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
;
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
;
26 protected void setUp() throws Exception
{
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());
39 myResultsViewer
= myConsole
.getResultsViewer();
40 myEventsProcessor
= new GeneralToSMTRunnerEventsConvertor(myResultsViewer
.getTestsRootNode());
41 myEventsProcessor
.addEventsListener(myResultsViewer
);
42 myTreeModel
= myResultsViewer
.getTreeView().getModel();
44 myEventsProcessor
.onStartTesting();
48 protected void tearDown() throws Exception
{
49 Disposer
.dispose(myEventsProcessor
);
50 Disposer
.dispose(myConsole
);
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
);
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());
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();
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();
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();
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();
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(){
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());
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() {
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();