| /* |
| * Copyright 2000-2009 JetBrains s.r.o. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package com.intellij.execution.testframework.sm.runner.ui; |
| |
| import com.intellij.execution.testframework.AbstractTestProxy; |
| import com.intellij.execution.testframework.TestConsoleProperties; |
| import com.intellij.execution.testframework.sm.runner.BaseSMTRunnerTestCase; |
| import com.intellij.execution.testframework.sm.runner.SMTestProxy; |
| import com.intellij.openapi.util.Disposer; |
| import org.jetbrains.annotations.Nullable; |
| |
| /** |
| * @author Roman Chernyatchik |
| */ |
| public class SMTRunnerUIActionsHandlerTest extends BaseSMTRunnerTestCase { |
| private MockTestResultsViewer myResultsViewer; |
| private TestConsoleProperties myProperties; |
| private SMTRunnerUIActionsHandler myUIActionsHandler; |
| private AbstractTestProxy mySelectedTestProxy; |
| |
| @Override |
| protected void setUp() throws Exception { |
| super.setUp(); |
| |
| myProperties = createConsoleProperties(); |
| myResultsViewer = new MockTestResultsViewer(myProperties, mySuite) { |
| @Override |
| public void selectAndNotify(@Nullable final AbstractTestProxy proxy) { |
| super.selectAndNotify(proxy); |
| mySelectedTestProxy = proxy; |
| } |
| }; |
| |
| myUIActionsHandler = new SMTRunnerUIActionsHandler(myProperties); |
| |
| TestConsoleProperties.HIDE_PASSED_TESTS.set(myProperties, false); |
| TestConsoleProperties.OPEN_FAILURE_LINE.set(myProperties, false); |
| TestConsoleProperties.SCROLL_TO_SOURCE.set(myProperties, false); |
| TestConsoleProperties.SELECT_FIRST_DEFECT.set(myProperties, false); |
| TestConsoleProperties.TRACK_RUNNING_TEST.set(myProperties, false); |
| } |
| |
| @Override |
| protected void tearDown() throws Exception { |
| Disposer.dispose(myResultsViewer); |
| |
| super.tearDown(); |
| } |
| |
| public void testSelectFirstDeffect_Failed() { |
| TestConsoleProperties.SELECT_FIRST_DEFECT.set(myProperties, true); |
| mySuite.setStarted(); |
| |
| final SMTestProxy testsSuite = createSuiteProxy("my suite", mySuite); |
| testsSuite.setStarted(); |
| |
| // passed test |
| final SMTestProxy testPassed1 = createTestProxy("testPassed1", testsSuite); |
| testPassed1.setStarted(); |
| |
| //failed test |
| final SMTestProxy testFailed1 = createTestProxy("testFailed1", testsSuite); |
| testFailed1.setStarted(); |
| myUIActionsHandler.onTestNodeAdded(myResultsViewer, testFailed1); |
| assertNull(mySelectedTestProxy); |
| |
| testFailed1.setTestFailed("", "", false); |
| //myUIActionsHandler.onTestFinished(testFailed1); |
| assertNull(mySelectedTestProxy); |
| |
| // passed test numer 2 |
| mySelectedTestProxy = null; |
| final SMTestProxy testPassed2 = createTestProxy("testPassed2", testsSuite); |
| testPassed2.setStarted(); |
| myUIActionsHandler.onTestNodeAdded(myResultsViewer, testPassed2); |
| assertNull(mySelectedTestProxy); |
| |
| testPassed2.setFinished(); |
| //myUIActionsHandler.onTestFinished(testPassed2); |
| assertNull(mySelectedTestProxy); |
| |
| |
| //failed test 2 |
| final SMTestProxy testFailed2 = createTestProxy("testFailed1", testsSuite); |
| testFailed2.setStarted(); |
| myUIActionsHandler.onTestNodeAdded(myResultsViewer, testFailed2); |
| assertNull(mySelectedTestProxy); |
| |
| testFailed2.setTestFailed("", "", false); |
| //myUIActionsHandler.onTestFinished(testFailed2); |
| assertNull(mySelectedTestProxy); |
| |
| // finish suite |
| testsSuite.setFinished(); |
| assertNull(mySelectedTestProxy); |
| |
| //testing finished |
| mySuite.setFinished(); |
| assertNull(mySelectedTestProxy); |
| |
| myUIActionsHandler.onTestingFinished(myResultsViewer); |
| assertEquals(testFailed1, mySelectedTestProxy); |
| } |
| |
| public void testSelectFirstDeffect_Error() { |
| TestConsoleProperties.SELECT_FIRST_DEFECT.set(myProperties, true); |
| mySuite.setStarted(); |
| |
| final SMTestProxy testsSuite = createSuiteProxy("my suite", mySuite); |
| testsSuite.setStarted(); |
| |
| // passed test |
| final SMTestProxy testPassed1 = createTestProxy("testPassed1", testsSuite); |
| testPassed1.setStarted(); |
| |
| //failed test |
| final SMTestProxy testError = createTestProxy("testError", testsSuite); |
| testError.setStarted(); |
| myUIActionsHandler.onTestNodeAdded(myResultsViewer, testError); |
| assertNull(mySelectedTestProxy); |
| |
| testError.setTestFailed("", "", true); |
| //myUIActionsHandler.onTestFinished(testFailed1); |
| assertNull(mySelectedTestProxy); |
| |
| // passed test numer 2 |
| mySelectedTestProxy = null; |
| final SMTestProxy testPassed2 = createTestProxy("testPassed2", testsSuite); |
| testPassed2.setStarted(); |
| myUIActionsHandler.onTestNodeAdded(myResultsViewer, testPassed2); |
| assertNull(mySelectedTestProxy); |
| |
| testPassed2.setFinished(); |
| //myUIActionsHandler.onTestFinished(testPassed2); |
| assertNull(mySelectedTestProxy); |
| |
| |
| //failed test |
| final SMTestProxy testFailed2 = createTestProxy("testFailed1", testsSuite); |
| testFailed2.setStarted(); |
| myUIActionsHandler.onTestNodeAdded(myResultsViewer, testFailed2); |
| assertNull(mySelectedTestProxy); |
| |
| testFailed2.setTestFailed("", "", false); |
| //myUIActionsHandler.onTestFinished(testFailed2); |
| assertNull(mySelectedTestProxy); |
| |
| // finish suite |
| testsSuite.setFinished(); |
| assertNull(mySelectedTestProxy); |
| |
| //testing finished |
| mySuite.setFinished(); |
| assertNull(mySelectedTestProxy); |
| |
| myUIActionsHandler.onTestingFinished(myResultsViewer); |
| assertEquals(testError, mySelectedTestProxy); |
| } |
| |
| |
| public void testSelectFirstDefect_Priority_Error() { |
| // Priority: error -> failure |
| TestConsoleProperties.SELECT_FIRST_DEFECT.set(myProperties, true); |
| mySuite.setStarted(); |
| |
| final SMTestProxy testsSuite = createSuiteProxy("my suite", mySuite); |
| testsSuite.setStarted(); |
| |
| // pending test |
| final SMTestProxy testPending = createTestProxy("testPending", testsSuite); |
| testPending.setStarted(); |
| myUIActionsHandler.onTestNodeAdded(myResultsViewer, testPending); |
| testPending.setTestIgnored("", ""); |
| |
| //failed test |
| final SMTestProxy testFailed = createTestProxy("testFailed", testsSuite); |
| testFailed.setStarted(); |
| myUIActionsHandler.onTestNodeAdded(myResultsViewer, testFailed); |
| testFailed.setTestFailed("", "", false); |
| |
| //error test |
| final SMTestProxy testError = createTestProxy("testError", testsSuite); |
| testError.setStarted(); |
| myUIActionsHandler.onTestNodeAdded(myResultsViewer, testError); |
| testError.setTestFailed("", "", true); |
| |
| // Second error test just to check that first failed will be selected |
| final SMTestProxy testError2 = createTestProxy("testError2", testsSuite); |
| testError2.setStarted(); |
| myUIActionsHandler.onTestNodeAdded(myResultsViewer, testError2); |
| testError2.setTestFailed("", "", true); |
| |
| // finish suite |
| testsSuite.setFinished(); |
| assertNull(mySelectedTestProxy); |
| |
| //testing finished |
| mySuite.setFinished(); |
| assertNull(mySelectedTestProxy); |
| |
| myUIActionsHandler.onTestingFinished(myResultsViewer); |
| assertEquals(testError, mySelectedTestProxy); |
| } |
| |
| public void testSelectFirstDefect_Priority_Failure() { |
| // Priority: error -> failure |
| TestConsoleProperties.SELECT_FIRST_DEFECT.set(myProperties, true); |
| mySuite.setStarted(); |
| |
| final SMTestProxy testsSuite = createSuiteProxy("my suite", mySuite); |
| testsSuite.setStarted(); |
| |
| // pending test |
| final SMTestProxy testPending = createTestProxy("testPending", testsSuite); |
| testPending.setStarted(); |
| myUIActionsHandler.onTestNodeAdded(myResultsViewer, testPending); |
| testPending.setTestIgnored("", ""); |
| |
| //failed test |
| final SMTestProxy testFailed = createTestProxy("testFailed", testsSuite); |
| testFailed.setStarted(); |
| myUIActionsHandler.onTestNodeAdded(myResultsViewer, testFailed); |
| testFailed.setTestFailed("", "", false); |
| |
| // Second failed test just to check that first failed will be selected |
| final SMTestProxy testFailed2 = createTestProxy("testFailed2", testsSuite); |
| testFailed2.setStarted(); |
| myUIActionsHandler.onTestNodeAdded(myResultsViewer, testFailed2); |
| testFailed2.setTestFailed("", "", false); |
| |
| // finish suite |
| testsSuite.setFinished(); |
| assertNull(mySelectedTestProxy); |
| |
| //testing finished |
| mySuite.setFinished(); |
| assertNull(mySelectedTestProxy); |
| |
| myUIActionsHandler.onTestingFinished(myResultsViewer); |
| assertEquals(testFailed, mySelectedTestProxy); |
| } |
| |
| public void testSelectFirstDefect_Priority_Pending() { |
| // Priority: error -> failure |
| TestConsoleProperties.SELECT_FIRST_DEFECT.set(myProperties, true); |
| mySuite.setStarted(); |
| |
| final SMTestProxy testsSuite = createSuiteProxy("my suite", mySuite); |
| testsSuite.setStarted(); |
| |
| // pending test |
| final SMTestProxy testPending = createTestProxy("testPending", testsSuite); |
| testPending.setStarted(); |
| myUIActionsHandler.onTestNodeAdded(myResultsViewer, testPending); |
| testPending.setTestIgnored("", ""); |
| |
| // finish suite |
| testsSuite.setFinished(); |
| assertNull(mySelectedTestProxy); |
| |
| //testing finished |
| mySuite.setFinished(); |
| assertNull(mySelectedTestProxy); |
| |
| myUIActionsHandler.onTestingFinished(myResultsViewer); |
| // pending tests shouldn't be considered as errors/failures |
| assertNull(mySelectedTestProxy); |
| } |
| |
| public void testTrackRunningTest() { |
| TestConsoleProperties.TRACK_RUNNING_TEST.set(myProperties, true); |
| mySuite.setStarted(); |
| |
| final SMTestProxy testsSuite = createSuiteProxy("my suite", mySuite); |
| testsSuite.setStarted(); |
| assertNull(mySelectedTestProxy); |
| |
| // passed test |
| final SMTestProxy testPassed1 = createTestProxy("testPassed1", testsSuite); |
| testPassed1.setStarted(); |
| myUIActionsHandler.onTestNodeAdded(myResultsViewer, testPassed1); |
| assertEquals(testPassed1, mySelectedTestProxy); |
| |
| testPassed1.setFinished(); |
| //myUIActionsHandler.onTestFinished(testPassed1); |
| assertEquals(testPassed1, mySelectedTestProxy); |
| |
| //failed test |
| final SMTestProxy testFailed1 = createTestProxy("testFailed1", testsSuite); |
| testFailed1.setStarted(); |
| myUIActionsHandler.onTestNodeAdded(myResultsViewer, testFailed1); |
| assertEquals(testFailed1, mySelectedTestProxy); |
| |
| testFailed1.setTestFailed("", "", false); |
| //myUIActionsHandler.onTestFinished(testFailed1); |
| assertEquals(testFailed1, mySelectedTestProxy); |
| |
| //error test |
| final SMTestProxy testError = createTestProxy("testError", testsSuite); |
| testError.setStarted(); |
| myUIActionsHandler.onTestNodeAdded(myResultsViewer, testError); |
| assertEquals(testError, mySelectedTestProxy); |
| |
| testError.setTestFailed("", "", true); |
| //myUIActionsHandler.onTestFinished(testError); |
| assertEquals(testError, mySelectedTestProxy); |
| |
| //terminated test |
| final SMTestProxy testTerminated = createTestProxy("testTerimated", testsSuite); |
| testTerminated.setStarted(); |
| myUIActionsHandler.onTestNodeAdded(myResultsViewer, testTerminated); |
| assertEquals(testTerminated, mySelectedTestProxy); |
| |
| testTerminated.setTerminated(); |
| //myUIActionsHandler.onTestFinished(testError); |
| assertEquals(testTerminated, mySelectedTestProxy); |
| |
| // passed test numer 2 |
| mySelectedTestProxy = null; |
| final SMTestProxy testPassed2 = createTestProxy("testPassed2", testsSuite); |
| testPassed2.setStarted(); |
| myUIActionsHandler.onTestNodeAdded(myResultsViewer, testPassed2); |
| assertEquals(testPassed2, mySelectedTestProxy); |
| |
| testPassed2.setFinished(); |
| //myUIActionsHandler.onTestFinished(testPassed2); |
| assertEquals(testPassed2, mySelectedTestProxy); |
| |
| |
| //failed test 2 |
| final SMTestProxy testFailed2 = createTestProxy("testFailed2", testsSuite); |
| testFailed2.setStarted(); |
| myUIActionsHandler.onTestNodeAdded(myResultsViewer, testFailed2); |
| assertEquals(testFailed2, mySelectedTestProxy); |
| final SMTestProxy lastSelectedTest = testFailed2; |
| |
| testFailed2.setTestFailed("", "", false); |
| //myUIActionsHandler.onTestFinished(testFailed2); |
| assertEquals(lastSelectedTest, mySelectedTestProxy); |
| |
| // finish suite |
| testsSuite.setFinished(); |
| assertEquals(lastSelectedTest, mySelectedTestProxy); |
| |
| // root suite finished |
| mySuite.setFinished(); |
| assertEquals(lastSelectedTest, mySelectedTestProxy); |
| |
| //testing finished |
| myUIActionsHandler.onTestingFinished(myResultsViewer); |
| assertEquals(lastSelectedTest, mySelectedTestProxy); |
| } |
| } |