2 * Copyright 2000-2009 JetBrains s.r.o.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package com
.intellij
.execution
.testframework
.sm
.runner
.ui
;
18 import com
.intellij
.execution
.testframework
.AbstractTestProxy
;
19 import com
.intellij
.execution
.testframework
.TestConsoleProperties
;
20 import com
.intellij
.execution
.testframework
.sm
.runner
.BaseSMTRunnerTestCase
;
21 import com
.intellij
.execution
.testframework
.sm
.runner
.SMTestProxy
;
22 import com
.intellij
.openapi
.util
.Disposer
;
23 import org
.jetbrains
.annotations
.Nullable
;
26 * @author Roman Chernyatchik
28 public class SMTRunnerUIActionsHandlerTest
extends BaseSMTRunnerTestCase
{
29 private MockTestResultsViewer myResultsViewer
;
30 private TestConsoleProperties myProperties
;
31 private SMTRunnerUIActionsHandler myUIActionsHandler
;
32 private AbstractTestProxy mySelectedTestProxy
;
35 protected void setUp() throws Exception
{
38 myProperties
= createConsoleProperties();
39 myResultsViewer
= new MockTestResultsViewer(myProperties
, mySuite
) {
41 public void selectAndNotify(@Nullable final AbstractTestProxy proxy
) {
42 super.selectAndNotify(proxy
);
43 mySelectedTestProxy
= proxy
;
47 myUIActionsHandler
= new SMTRunnerUIActionsHandler(myProperties
);
49 TestConsoleProperties
.HIDE_PASSED_TESTS
.set(myProperties
, false);
50 TestConsoleProperties
.OPEN_FAILURE_LINE
.set(myProperties
, false);
51 TestConsoleProperties
.SCROLL_TO_SOURCE
.set(myProperties
, false);
52 TestConsoleProperties
.SELECT_FIRST_DEFECT
.set(myProperties
, false);
53 TestConsoleProperties
.TRACK_RUNNING_TEST
.set(myProperties
, false);
57 protected void tearDown() throws Exception
{
58 Disposer
.dispose(myResultsViewer
);
63 public void testSelectFirstDeffect_Failed() {
64 TestConsoleProperties
.SELECT_FIRST_DEFECT
.set(myProperties
, true);
67 final SMTestProxy testsSuite
= createSuiteProxy("my suite", mySuite
);
68 testsSuite
.setStarted();
71 final SMTestProxy testPassed1
= createTestProxy("testPassed1", testsSuite
);
72 testPassed1
.setStarted();
75 final SMTestProxy testFailed1
= createTestProxy("testFailed1", testsSuite
);
76 testFailed1
.setStarted();
77 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testFailed1
);
78 assertNull(mySelectedTestProxy
);
80 testFailed1
.setTestFailed("", "", false);
81 //myUIActionsHandler.onTestFinished(testFailed1);
82 assertNull(mySelectedTestProxy
);
84 // passed test numer 2
85 mySelectedTestProxy
= null;
86 final SMTestProxy testPassed2
= createTestProxy("testPassed2", testsSuite
);
87 testPassed2
.setStarted();
88 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testPassed2
);
89 assertNull(mySelectedTestProxy
);
91 testPassed2
.setFinished();
92 //myUIActionsHandler.onTestFinished(testPassed2);
93 assertNull(mySelectedTestProxy
);
97 final SMTestProxy testFailed2
= createTestProxy("testFailed1", testsSuite
);
98 testFailed2
.setStarted();
99 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testFailed2
);
100 assertNull(mySelectedTestProxy
);
102 testFailed2
.setTestFailed("", "", false);
103 //myUIActionsHandler.onTestFinished(testFailed2);
104 assertNull(mySelectedTestProxy
);
107 testsSuite
.setFinished();
108 assertNull(mySelectedTestProxy
);
111 mySuite
.setFinished();
112 assertNull(mySelectedTestProxy
);
114 myUIActionsHandler
.onTestingFinished(myResultsViewer
);
115 assertEquals(testFailed1
, mySelectedTestProxy
);
118 public void testSelectFirstDeffect_Error() {
119 TestConsoleProperties
.SELECT_FIRST_DEFECT
.set(myProperties
, true);
120 mySuite
.setStarted();
122 final SMTestProxy testsSuite
= createSuiteProxy("my suite", mySuite
);
123 testsSuite
.setStarted();
126 final SMTestProxy testPassed1
= createTestProxy("testPassed1", testsSuite
);
127 testPassed1
.setStarted();
130 final SMTestProxy testError
= createTestProxy("testError", testsSuite
);
131 testError
.setStarted();
132 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testError
);
133 assertNull(mySelectedTestProxy
);
135 testError
.setTestFailed("", "", true);
136 //myUIActionsHandler.onTestFinished(testFailed1);
137 assertNull(mySelectedTestProxy
);
139 // passed test numer 2
140 mySelectedTestProxy
= null;
141 final SMTestProxy testPassed2
= createTestProxy("testPassed2", testsSuite
);
142 testPassed2
.setStarted();
143 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testPassed2
);
144 assertNull(mySelectedTestProxy
);
146 testPassed2
.setFinished();
147 //myUIActionsHandler.onTestFinished(testPassed2);
148 assertNull(mySelectedTestProxy
);
152 final SMTestProxy testFailed2
= createTestProxy("testFailed1", testsSuite
);
153 testFailed2
.setStarted();
154 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testFailed2
);
155 assertNull(mySelectedTestProxy
);
157 testFailed2
.setTestFailed("", "", false);
158 //myUIActionsHandler.onTestFinished(testFailed2);
159 assertNull(mySelectedTestProxy
);
162 testsSuite
.setFinished();
163 assertNull(mySelectedTestProxy
);
166 mySuite
.setFinished();
167 assertNull(mySelectedTestProxy
);
169 myUIActionsHandler
.onTestingFinished(myResultsViewer
);
170 assertEquals(testError
, mySelectedTestProxy
);
174 public void testSelectFirstDeffect_Priority_Error() {
175 // Priority: error -> failure -> pending
176 TestConsoleProperties
.SELECT_FIRST_DEFECT
.set(myProperties
, true);
177 mySuite
.setStarted();
179 final SMTestProxy testsSuite
= createSuiteProxy("my suite", mySuite
);
180 testsSuite
.setStarted();
183 final SMTestProxy testPending
= createTestProxy("testPending", testsSuite
);
184 testPending
.setStarted();
185 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testPending
);
186 testPending
.setTestIgnored("", "");
189 final SMTestProxy testFailed
= createTestProxy("testFailed", testsSuite
);
190 testFailed
.setStarted();
191 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testFailed
);
192 testFailed
.setTestFailed("", "", false);
195 final SMTestProxy testError
= createTestProxy("testError", testsSuite
);
196 testError
.setStarted();
197 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testError
);
198 testError
.setTestFailed("", "", true);
200 // Second error test just to check that first failed will be selected
201 final SMTestProxy testError2
= createTestProxy("testError2", testsSuite
);
202 testError2
.setStarted();
203 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testError2
);
204 testError2
.setTestFailed("", "", true);
207 testsSuite
.setFinished();
208 assertNull(mySelectedTestProxy
);
211 mySuite
.setFinished();
212 assertNull(mySelectedTestProxy
);
214 myUIActionsHandler
.onTestingFinished(myResultsViewer
);
215 assertEquals(testError
, mySelectedTestProxy
);
218 public void testSelectFirstDeffect_Priority_Failure() {
219 // Priority: error -> failure -> pending
220 TestConsoleProperties
.SELECT_FIRST_DEFECT
.set(myProperties
, true);
221 mySuite
.setStarted();
223 final SMTestProxy testsSuite
= createSuiteProxy("my suite", mySuite
);
224 testsSuite
.setStarted();
227 final SMTestProxy testPending
= createTestProxy("testPending", testsSuite
);
228 testPending
.setStarted();
229 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testPending
);
230 testPending
.setTestIgnored("", "");
233 final SMTestProxy testFailed
= createTestProxy("testFailed", testsSuite
);
234 testFailed
.setStarted();
235 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testFailed
);
236 testFailed
.setTestFailed("", "", false);
238 // Second failed test just to check that first failed will be selected
239 final SMTestProxy testFailed2
= createTestProxy("testFailed2", testsSuite
);
240 testFailed2
.setStarted();
241 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testFailed2
);
242 testFailed2
.setTestFailed("", "", false);
245 testsSuite
.setFinished();
246 assertNull(mySelectedTestProxy
);
249 mySuite
.setFinished();
250 assertNull(mySelectedTestProxy
);
252 myUIActionsHandler
.onTestingFinished(myResultsViewer
);
253 assertEquals(testFailed
, mySelectedTestProxy
);
256 public void testSelectFirstDeffect_Priority_Pending() {
257 // Priority: error -> failure -> pending
258 TestConsoleProperties
.SELECT_FIRST_DEFECT
.set(myProperties
, true);
259 mySuite
.setStarted();
261 final SMTestProxy testsSuite
= createSuiteProxy("my suite", mySuite
);
262 testsSuite
.setStarted();
265 final SMTestProxy testPending
= createTestProxy("testPending", testsSuite
);
266 testPending
.setStarted();
267 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testPending
);
268 testPending
.setTestIgnored("", "");
270 // Second pending test just to check that first failed will be selected
271 final SMTestProxy testPending2
= createTestProxy("testPending2", testsSuite
);
272 testPending2
.setStarted();
273 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testPending2
);
274 testPending2
.setTestIgnored("", "");
277 testsSuite
.setFinished();
278 assertNull(mySelectedTestProxy
);
281 mySuite
.setFinished();
282 assertNull(mySelectedTestProxy
);
284 myUIActionsHandler
.onTestingFinished(myResultsViewer
);
285 assertEquals(testPending
, mySelectedTestProxy
);
288 public void testTrackRunningTest() {
289 TestConsoleProperties
.TRACK_RUNNING_TEST
.set(myProperties
, true);
290 mySuite
.setStarted();
292 final SMTestProxy testsSuite
= createSuiteProxy("my suite", mySuite
);
293 testsSuite
.setStarted();
294 assertNull(mySelectedTestProxy
);
297 final SMTestProxy testPassed1
= createTestProxy("testPassed1", testsSuite
);
298 testPassed1
.setStarted();
299 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testPassed1
);
300 assertEquals(testPassed1
, mySelectedTestProxy
);
302 testPassed1
.setFinished();
303 //myUIActionsHandler.onTestFinished(testPassed1);
304 assertEquals(testPassed1
, mySelectedTestProxy
);
307 final SMTestProxy testFailed1
= createTestProxy("testFailed1", testsSuite
);
308 testFailed1
.setStarted();
309 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testFailed1
);
310 assertEquals(testFailed1
, mySelectedTestProxy
);
312 testFailed1
.setTestFailed("", "", false);
313 //myUIActionsHandler.onTestFinished(testFailed1);
314 assertEquals(testFailed1
, mySelectedTestProxy
);
317 final SMTestProxy testError
= createTestProxy("testError", testsSuite
);
318 testError
.setStarted();
319 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testError
);
320 assertEquals(testError
, mySelectedTestProxy
);
322 testError
.setTestFailed("", "", true);
323 //myUIActionsHandler.onTestFinished(testError);
324 assertEquals(testError
, mySelectedTestProxy
);
327 final SMTestProxy testTerminated
= createTestProxy("testTerimated", testsSuite
);
328 testTerminated
.setStarted();
329 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testTerminated
);
330 assertEquals(testTerminated
, mySelectedTestProxy
);
332 testTerminated
.setTerminated();
333 //myUIActionsHandler.onTestFinished(testError);
334 assertEquals(testTerminated
, mySelectedTestProxy
);
336 // passed test numer 2
337 mySelectedTestProxy
= null;
338 final SMTestProxy testPassed2
= createTestProxy("testPassed2", testsSuite
);
339 testPassed2
.setStarted();
340 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testPassed2
);
341 assertEquals(testPassed2
, mySelectedTestProxy
);
343 testPassed2
.setFinished();
344 //myUIActionsHandler.onTestFinished(testPassed2);
345 assertEquals(testPassed2
, mySelectedTestProxy
);
349 final SMTestProxy testFailed2
= createTestProxy("testFailed2", testsSuite
);
350 testFailed2
.setStarted();
351 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testFailed2
);
352 assertEquals(testFailed2
, mySelectedTestProxy
);
353 final SMTestProxy lastSelectedTest
= testFailed2
;
355 testFailed2
.setTestFailed("", "", false);
356 //myUIActionsHandler.onTestFinished(testFailed2);
357 assertEquals(lastSelectedTest
, mySelectedTestProxy
);
360 testsSuite
.setFinished();
361 assertEquals(lastSelectedTest
, mySelectedTestProxy
);
363 // root suite finished
364 mySuite
.setFinished();
365 assertEquals(lastSelectedTest
, mySelectedTestProxy
);
368 myUIActionsHandler
.onTestingFinished(myResultsViewer
);
369 assertEquals(lastSelectedTest
, mySelectedTestProxy
);