|
30 | 30 |
|
31 | 31 | from ..context import IS_WINDOWS |
32 | 32 | # from ..controller.filecontrollers import ResourceFileController, TestDataDirectoryController, TestCaseFileController |
33 | | -from ..publish.messages import (RideTestRunning, RideTestPaused, RideTestPassed, RideTestFailed, |
34 | | - RideTestExecutionStarted, RideImportSetting, RideExcludesChanged, RideIncludesChanged, |
| 33 | +from ..publish.messages import (RideTestRunning, RideTestPaused, RideTestPassed, RideTestFailed, RideTestSkipped, |
| 34 | + RideTestExecutionStarted, RideTestStopped, RideImportSetting, RideExcludesChanged, RideIncludesChanged, |
35 | 35 | RideOpenSuite, RideNewProject) |
36 | 36 | from ..ui.images import (RUNNING_IMAGE_INDEX, PASSED_IMAGE_INDEX, FAILED_IMAGE_INDEX, PAUSED_IMAGE_INDEX, |
37 | | - ROBOT_IMAGE_INDEX) |
| 37 | + SKIPPED_IMAGE_INDEX, ROBOT_IMAGE_INDEX) |
38 | 38 | from ..ui.treenodehandlers import TestCaseHandler, TestDataDirectoryHandler, TestCaseFileHandler |
39 | 39 | from ..publish import (PUBLISHER, RideTreeSelection, RideFileNameChanged, RideItem, RideUserKeywordAdded, |
40 | 40 | RideTestCaseAdded, RideUserKeywordRemoved, RideTestCaseRemoved, RideDataFileRemoved, |
@@ -319,6 +319,8 @@ def _subscribe_to_messages(self): |
319 | 319 | (self._test_result, RideTestPaused), |
320 | 320 | (self._test_result, RideTestPassed), |
321 | 321 | (self._test_result, RideTestFailed), |
| 322 | + (self._test_result, RideTestSkipped), |
| 323 | + (self._test_result, RideTestStopped), |
322 | 324 | (self._handle_import_setting_message, RideImportSetting), |
323 | 325 | (self._mark_excludes, RideExcludesChanged), |
324 | 326 | (self._mark_excludes, RideIncludesChanged), |
@@ -369,11 +371,19 @@ def _test_result(self, message): |
369 | 371 | test: TestCaseController = message.item |
370 | 372 | if not test: |
371 | 373 | # test object will be None when running with DataDriver |
| 374 | + # when runner is interrupted, is also None, so let's stop animation |
| 375 | + if self._animctrl: |
| 376 | + self._animctrl.Stop() |
| 377 | + self._animctrl.Animation.Destroy() |
| 378 | + self._animctrl.Destroy() |
| 379 | + self._animctrl = None |
372 | 380 | return |
373 | 381 | if isinstance(message, RideTestPassed): |
374 | 382 | test.run_passed = True |
375 | 383 | elif isinstance(message, RideTestFailed): |
376 | 384 | test.run_passed = False |
| 385 | + elif isinstance(message, RideTestSkipped): |
| 386 | + test.run_passed = False |
377 | 387 | else: |
378 | 388 | test.run_passed = None |
379 | 389 | wx.CallAfter(self._set_icon_from_execution_results, message.item) |
@@ -423,6 +433,8 @@ def _get_icon_index_for(self, controller): |
423 | 433 | return PASSED_IMAGE_INDEX |
424 | 434 | if self._execution_results.has_failed(controller): |
425 | 435 | return FAILED_IMAGE_INDEX |
| 436 | + if self._execution_results.has_skipped(controller): |
| 437 | + return SKIPPED_IMAGE_INDEX |
426 | 438 | return ROBOT_IMAGE_INDEX |
427 | 439 |
|
428 | 440 | def populate(self, model): |
|
0 commit comments