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 testSelectFirstDefect_Priority_Error() {
175 // Priority: error -> failure
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 testSelectFirstDefect_Priority_Failure() {
219 // Priority: error -> failure
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 testSelectFirstDefect_Priority_Pending() {
257 // Priority: error -> failure
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("", "");
271 testsSuite
.setFinished();
272 assertNull(mySelectedTestProxy
);
275 mySuite
.setFinished();
276 assertNull(mySelectedTestProxy
);
278 myUIActionsHandler
.onTestingFinished(myResultsViewer
);
279 // pending tests shouldn't be considered as errors/failures
280 assertNull(mySelectedTestProxy
);
283 public void testTrackRunningTest() {
284 TestConsoleProperties
.TRACK_RUNNING_TEST
.set(myProperties
, true);
285 mySuite
.setStarted();
287 final SMTestProxy testsSuite
= createSuiteProxy("my suite", mySuite
);
288 testsSuite
.setStarted();
289 assertNull(mySelectedTestProxy
);
292 final SMTestProxy testPassed1
= createTestProxy("testPassed1", testsSuite
);
293 testPassed1
.setStarted();
294 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testPassed1
);
295 assertEquals(testPassed1
, mySelectedTestProxy
);
297 testPassed1
.setFinished();
298 //myUIActionsHandler.onTestFinished(testPassed1);
299 assertEquals(testPassed1
, mySelectedTestProxy
);
302 final SMTestProxy testFailed1
= createTestProxy("testFailed1", testsSuite
);
303 testFailed1
.setStarted();
304 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testFailed1
);
305 assertEquals(testFailed1
, mySelectedTestProxy
);
307 testFailed1
.setTestFailed("", "", false);
308 //myUIActionsHandler.onTestFinished(testFailed1);
309 assertEquals(testFailed1
, mySelectedTestProxy
);
312 final SMTestProxy testError
= createTestProxy("testError", testsSuite
);
313 testError
.setStarted();
314 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testError
);
315 assertEquals(testError
, mySelectedTestProxy
);
317 testError
.setTestFailed("", "", true);
318 //myUIActionsHandler.onTestFinished(testError);
319 assertEquals(testError
, mySelectedTestProxy
);
322 final SMTestProxy testTerminated
= createTestProxy("testTerimated", testsSuite
);
323 testTerminated
.setStarted();
324 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testTerminated
);
325 assertEquals(testTerminated
, mySelectedTestProxy
);
327 testTerminated
.setTerminated();
328 //myUIActionsHandler.onTestFinished(testError);
329 assertEquals(testTerminated
, mySelectedTestProxy
);
331 // passed test numer 2
332 mySelectedTestProxy
= null;
333 final SMTestProxy testPassed2
= createTestProxy("testPassed2", testsSuite
);
334 testPassed2
.setStarted();
335 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testPassed2
);
336 assertEquals(testPassed2
, mySelectedTestProxy
);
338 testPassed2
.setFinished();
339 //myUIActionsHandler.onTestFinished(testPassed2);
340 assertEquals(testPassed2
, mySelectedTestProxy
);
344 final SMTestProxy testFailed2
= createTestProxy("testFailed2", testsSuite
);
345 testFailed2
.setStarted();
346 myUIActionsHandler
.onTestNodeAdded(myResultsViewer
, testFailed2
);
347 assertEquals(testFailed2
, mySelectedTestProxy
);
348 final SMTestProxy lastSelectedTest
= testFailed2
;
350 testFailed2
.setTestFailed("", "", false);
351 //myUIActionsHandler.onTestFinished(testFailed2);
352 assertEquals(lastSelectedTest
, mySelectedTestProxy
);
355 testsSuite
.setFinished();
356 assertEquals(lastSelectedTest
, mySelectedTestProxy
);
358 // root suite finished
359 mySuite
.setFinished();
360 assertEquals(lastSelectedTest
, mySelectedTestProxy
);
363 myUIActionsHandler
.onTestingFinished(myResultsViewer
);
364 assertEquals(lastSelectedTest
, mySelectedTestProxy
);