src/eric7/Testing/TestingWidget.py

Sat, 16 Dec 2023 16:30:55 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 16 Dec 2023 16:30:55 +0100
branch
eric7
changeset 10415
af9a6dac2611
parent 10413
2ecbe43a8e88
child 10421
3d14633f6261
permissions
-rw-r--r--

Testing
- Extended the testing dialog to allow to perform the test with debugger support (only if the dialog was started from within eric IDE).

9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
9653
e67609152c5e Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
3 # Copyright (c) 2022 - 2023 Detlev Offenbach <detlev@die-offenbachs.de>
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a widget to orchestrate unit test execution.
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
10 import contextlib
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import enum
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
12 import locale
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 import os
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9462
diff changeset
15 from PyQt6.QtCore import QCoreApplication, QEvent, Qt, pyqtSignal, pyqtSlot
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
16 from PyQt6.QtWidgets import (
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
17 QAbstractButton,
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
18 QComboBox,
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
19 QDialogButtonBox,
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
20 QTreeWidgetItem,
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
21 QWidget,
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
22 )
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9462
diff changeset
24 from eric7 import Preferences
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
25 from eric7.DataViews.PyCoverageDialog import PyCoverageDialog
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9462
diff changeset
26 from eric7.EricGui import EricPixmapCache
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9388
diff changeset
27 from eric7.EricWidgets import EricMessageBox
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9388
diff changeset
28 from eric7.EricWidgets.EricApplication import ericApp
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9388
diff changeset
29 from eric7.EricWidgets.EricMainWindow import EricMainWindow
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9388
diff changeset
30 from eric7.EricWidgets.EricPathPicker import EricPathPickerModes
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9462
diff changeset
31 from eric7.Globals import (
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9462
diff changeset
32 recentNameTestDiscoverHistory,
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9462
diff changeset
33 recentNameTestEnvironment,
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9462
diff changeset
34 recentNameTestFileHistory,
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9462
diff changeset
35 recentNameTestFramework,
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9462
diff changeset
36 recentNameTestNameHistory,
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9462
diff changeset
37 )
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 from .Interfaces import Frameworks
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
40 from .Interfaces.TestExecutorBase import TestConfig, TestResult, TestResultCategory
9066
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
41 from .Interfaces.TestFrameworkRegistry import TestFrameworkRegistry
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
42 from .TestResultsTree import (
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
43 TestResultsFilterModel,
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
44 TestResultsModel,
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
45 TestResultsTreeView,
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
46 )
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9462
diff changeset
47 from .Ui_TestingWidget import Ui_TestingWidget
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49
9066
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
50 class TestingWidgetModes(enum.Enum):
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 """
9066
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
52 Class defining the various modes of the testing widget.
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
54
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
55 IDLE = 0 # idle, no test were run yet
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
56 RUNNING = 1 # test run being performed
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
57 STOPPED = 2 # test run finished
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
58 DISCOVERY = 3 # discovery of tests being performed
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60
9066
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
61 class TestingWidget(QWidget, Ui_TestingWidget):
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 Class implementing a widget to orchestrate unit test execution.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
64
9066
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
65 @signal testFile(str, int, bool) emitted to show the source of a
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
66 test file
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
67 @signal testRunStopped() emitted after a test run has finished
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
69
9066
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
70 testFile = pyqtSignal(str, int, bool)
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
71 testRunStopped = pyqtSignal()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
72
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
73 TestCaseNameRole = Qt.ItemDataRole.UserRole
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
74 TestCaseFileRole = Qt.ItemDataRole.UserRole + 1
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
75 TestCaseLinenoRole = Qt.ItemDataRole.UserRole + 2
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
76 TestCaseIdRole = Qt.ItemDataRole.UserRole + 3
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
77
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 def __init__(self, testfile=None, parent=None):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
81
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 @param testfile file name of the test to load
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 @type str
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 @param parent reference to the parent widget (defaults to None)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 @type QWidget (optional)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 super().__init__(parent)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 self.setupUi(self)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
89
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 self.__resultsModel = TestResultsModel(self)
9063
f1d7dd7ae471 Corrected the code dealing with subtests.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9062
diff changeset
91 self.__resultsModel.summary.connect(self.__setStatusLabel)
10404
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
92 self.__resultFilterModel = TestResultsFilterModel(self)
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
93 self.__resultFilterModel.setSourceModel(self.__resultsModel)
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 self.__resultsTree = TestResultsTreeView(self)
10404
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
95 self.__resultsTree.setModel(self.__resultFilterModel)
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
96 self.__resultsTree.goto.connect(self.__showSource)
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 self.resultsGroupBox.layout().addWidget(self.__resultsTree)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
98
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9388
diff changeset
99 self.versionsButton.setIcon(EricPixmapCache.getIcon("info"))
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9388
diff changeset
100 self.clearHistoriesButton.setIcon(EricPixmapCache.getIcon("clearPrivateData"))
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9388
diff changeset
101 self.showMarkersButton.setIcon(EricPixmapCache.getIcon("select"))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
102
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 self.testsuitePicker.setMode(EricPathPickerModes.OPEN_FILE_MODE)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
104 self.testsuitePicker.setInsertPolicy(QComboBox.InsertPolicy.InsertAtTop)
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 self.testsuitePicker.setSizeAdjustPolicy(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
106 QComboBox.SizeAdjustPolicy.AdjustToMinimumContentsLengthWithIcon
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
107 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
108
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 self.discoveryPicker.setMode(EricPathPickerModes.DIRECTORY_MODE)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
110 self.discoveryPicker.setInsertPolicy(QComboBox.InsertPolicy.InsertAtTop)
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 self.discoveryPicker.setSizeAdjustPolicy(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
112 QComboBox.SizeAdjustPolicy.AdjustToMinimumContentsLengthWithIcon
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
113 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
114
10217
7888177e7463 Fixed in issue with several editable combo box selectors, that the value could not be changed if the edited text differed by case only. This was caused by the standard QComboBox completer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10020
diff changeset
115 self.testComboBox.completer().setCaseSensitivity(
7888177e7463 Fixed in issue with several editable combo box selectors, that the value could not be changed if the edited text differed by case only. This was caused by the standard QComboBox completer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10020
diff changeset
116 Qt.CaseSensitivity.CaseSensitive
7888177e7463 Fixed in issue with several editable combo box selectors, that the value could not be changed if the edited text differed by case only. This was caused by the standard QComboBox completer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10020
diff changeset
117 )
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 self.testComboBox.lineEdit().setClearButtonEnabled(True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
119
10404
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
120 self.__allFilter = self.tr("<all>")
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
121
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 # create some more dialog buttons for orchestration
9093
437bfe0c5793 Implemented the functionality to show the output of the last test run (i.e. the output sent by the test runner).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9089
diff changeset
123 self.__showLogButton = self.buttonBox.addButton(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
124 self.tr("Show Output..."), QDialogButtonBox.ButtonRole.ActionRole
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
125 )
9093
437bfe0c5793 Implemented the functionality to show the output of the last test run (i.e. the output sent by the test runner).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9089
diff changeset
126 self.__showLogButton.setToolTip(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
127 self.tr("Show the output of the test runner process")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
128 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
129 self.__showLogButton.setWhatsThis(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
130 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
131 """<b>Show Output...</b"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
132 """<p>This button opens a dialog containing the output of the"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
133 """ test runner process of the most recent run.</p>"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
134 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
135 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
136
9070
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
137 self.__showCoverageButton = self.buttonBox.addButton(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
138 self.tr("Show Coverage..."), QDialogButtonBox.ButtonRole.ActionRole
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
139 )
9070
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
140 self.__showCoverageButton.setToolTip(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
141 self.tr("Show code coverage in a new dialog")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
142 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
143 self.__showCoverageButton.setWhatsThis(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
144 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
145 """<b>Show Coverage...</b>"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
146 """<p>This button opens a dialog containing the collected code"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
147 """ coverage data.</p>"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
148 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
149 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
150
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
151 self.__discoverButton = self.buttonBox.addButton(
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
152 self.tr("Discover"), QDialogButtonBox.ButtonRole.ActionRole
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
153 )
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
154 self.__discoverButton.setToolTip(self.tr("Discover Tests"))
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
155 self.__discoverButton.setWhatsThis(
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
156 self.tr(
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
157 """<b>Discover Tests</b>"""
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
158 """<p>This button starts a discovery of available tests.</p>"""
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
159 )
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
160 )
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
161
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 self.__startButton = self.buttonBox.addButton(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
163 self.tr("Start"), QDialogButtonBox.ButtonRole.ActionRole
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
164 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
165
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
166 self.__startButton.setToolTip(self.tr("Start the selected test suite"))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
167 self.__startButton.setWhatsThis(
9576
be9f8e7e42e0 Corrected some 'wrong' string quotes caused by the Black line merging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9573
diff changeset
168 self.tr("""<b>Start Test</b><p>This button starts the test run.</p>""")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
169 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
170
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
171 self.__startFailedButton = self.buttonBox.addButton(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
172 self.tr("Rerun Failed"), QDialogButtonBox.ButtonRole.ActionRole
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
173 )
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
174 self.__startFailedButton.setToolTip(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
175 self.tr("Reruns failed tests of the selected testsuite")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
176 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
177 self.__startFailedButton.setWhatsThis(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
178 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
179 """<b>Rerun Failed</b>"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
180 """<p>This button reruns all failed tests of the most recent"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
181 """ test run.</p>"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
182 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
183 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
184
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 self.__stopButton = self.buttonBox.addButton(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
186 self.tr("Stop"), QDialogButtonBox.ButtonRole.ActionRole
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
187 )
9066
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
188 self.__stopButton.setToolTip(self.tr("Stop the running test"))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
189 self.__stopButton.setWhatsThis(
9576
be9f8e7e42e0 Corrected some 'wrong' string quotes caused by the Black line merging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9573
diff changeset
190 self.tr("""<b>Stop Test</b><p>This button stops a running test.</p>""")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
191 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
192
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 self.setWindowFlags(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
194 self.windowFlags() | Qt.WindowType.WindowContextHelpButtonHint
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 )
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9388
diff changeset
196 self.setWindowIcon(EricPixmapCache.getIcon("eric"))
9066
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
197 self.setWindowTitle(self.tr("Testing"))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
198
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
199 try:
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
200 # we are called from within the eric IDE
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
201 self.__venvManager = ericApp().getObject("VirtualEnvManager")
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
202 self.__project = ericApp().getObject("Project")
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
203 self.__project.projectOpened.connect(self.__projectOpened)
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
204 self.__project.projectClosed.connect(self.__projectClosed)
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
205 except KeyError:
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
206 # we were called as a standalone application
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
207 from eric7.VirtualEnv.VirtualenvManager import ( # __IGNORE_WARNING_I101__
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
208 VirtualenvManager,
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
209 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
210
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
211 self.__venvManager = VirtualenvManager(self)
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
212 self.__venvManager.virtualEnvironmentAdded.connect(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
213 self.__populateVenvComboBox
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
214 )
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
215 self.__venvManager.virtualEnvironmentRemoved.connect(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
216 self.__populateVenvComboBox
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
217 )
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
218 self.__venvManager.virtualEnvironmentChanged.connect(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
219 self.__populateVenvComboBox
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
220 )
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
221 ericApp().registerObject("VirtualEnvManager", self.__venvManager)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
222
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
223 self.__project = None
10415
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
224
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
225 self.debuggerCheckBox.setChecked(False)
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
226 self.debuggerCheckBox.setVisible(False)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
227
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 self.__discoverHistory = []
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 self.__fileHistory = []
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 self.__testNameHistory = []
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 self.__recentFramework = ""
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 self.__recentEnvironment = ""
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
233 self.__failedTests = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
234
9070
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
235 self.__coverageFile = ""
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
236 self.__coverageDialog = None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
237
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 self.__editors = []
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 self.__testExecutor = None
9093
437bfe0c5793 Implemented the functionality to show the output of the last test run (i.e. the output sent by the test runner).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9089
diff changeset
240 self.__recentLog = ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
241
9311
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
242 self.__markersWindow = None
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
243
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 # connect some signals
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
245 self.discoveryPicker.editTextChanged.connect(self.__resetResults)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
246 self.testsuitePicker.editTextChanged.connect(self.__resetResults)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
247 self.testComboBox.editTextChanged.connect(self.__resetResults)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
248
9066
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
249 self.__frameworkRegistry = TestFrameworkRegistry()
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 for framework in Frameworks:
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 self.__frameworkRegistry.register(framework)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
252
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 self.__setIdleMode()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
254
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 self.__loadRecent()
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 self.__populateVenvComboBox()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
257
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
258 if self.__project and self.__project.isOpen():
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
259 self.venvComboBox.setCurrentText(self.__project.getProjectVenv())
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
260 self.frameworkComboBox.setCurrentText(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
261 self.__project.getProjectTestingFramework()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
262 )
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
263 self.__insertDiscovery(self.__project.getProjectPath())
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 else:
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 self.__insertDiscovery("")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
266
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
267 self.__insertTestFile(testfile)
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 self.__insertTestName("")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
269
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 self.clearHistoriesButton.clicked.connect(self.clearRecent)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
271
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 self.tabWidget.setCurrentIndex(0)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
273
9388
bfe7ea6599a3 Added support for project embedded environments to the Testing framework and the Start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
274 def __determineInterpreter(self, venvName):
bfe7ea6599a3 Added support for project embedded environments to the Testing framework and the Start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
275 """
bfe7ea6599a3 Added support for project embedded environments to the Testing framework and the Start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
276 Private method to determine the interpreter to be used.
bfe7ea6599a3 Added support for project embedded environments to the Testing framework and the Start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
277
bfe7ea6599a3 Added support for project embedded environments to the Testing framework and the Start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
278 @param venvName name of the virtual environment
bfe7ea6599a3 Added support for project embedded environments to the Testing framework and the Start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
279 @type str
bfe7ea6599a3 Added support for project embedded environments to the Testing framework and the Start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
280 @return path of the interpreter executable
bfe7ea6599a3 Added support for project embedded environments to the Testing framework and the Start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
281 @rtype str
bfe7ea6599a3 Added support for project embedded environments to the Testing framework and the Start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
282 """
10415
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
283 if (
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
284 self.__project
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
285 and venvName == ericApp().getObject("DebugUI").getProjectEnvironmentString()
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
286 ):
9388
bfe7ea6599a3 Added support for project embedded environments to the Testing framework and the Start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
287 return self.__project.getProjectInterpreter()
bfe7ea6599a3 Added support for project embedded environments to the Testing framework and the Start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
288 else:
bfe7ea6599a3 Added support for project embedded environments to the Testing framework and the Start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
289 return self.__venvManager.getVirtualenvInterpreter(venvName)
bfe7ea6599a3 Added support for project embedded environments to the Testing framework and the Start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
290
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 def __populateVenvComboBox(self):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 Private method to (re-)populate the virtual environments selector.
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 currentText = self.venvComboBox.currentText()
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 if not currentText:
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 currentText = self.__recentEnvironment
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
298
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 self.venvComboBox.clear()
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 self.venvComboBox.addItem("")
9388
bfe7ea6599a3 Added support for project embedded environments to the Testing framework and the Start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
301 if self.__project and self.__project.isOpen():
10415
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
302 venvName = ericApp().getObject("DebugUI").getProjectEnvironmentString()
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
303 if venvName:
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
304 self.venvComboBox.addItem(venvName)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
305 self.venvComboBox.addItems(sorted(self.__venvManager.getVirtualenvNames()))
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
306 self.venvComboBox.setCurrentText(currentText)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
307
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308 def __populateTestFrameworkComboBox(self):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310 Private method to (re-)populate the test framework selector.
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312 currentText = self.frameworkComboBox.currentText()
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313 if not currentText:
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314 currentText = self.__recentFramework
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
315
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 self.frameworkComboBox.clear()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
317
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318 if bool(self.venvComboBox.currentText()):
9388
bfe7ea6599a3 Added support for project embedded environments to the Testing framework and the Start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
319 interpreter = self.__determineInterpreter(self.venvComboBox.currentText())
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320 self.frameworkComboBox.addItem("")
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321 for index, (name, executor) in enumerate(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
322 sorted(self.__frameworkRegistry.getFrameworks().items()), start=1
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323 ):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324 isInstalled = executor.isInstalled(interpreter)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
325 entry = (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
326 name if isInstalled else self.tr("{0} (not available)").format(name)
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
327 )
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328 self.frameworkComboBox.addItem(entry)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
329 self.frameworkComboBox.model().item(index).setEnabled(isInstalled)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
330
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331 self.frameworkComboBox.setCurrentText(self.__recentFramework)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
332
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
333 def getResultsModel(self):
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
334 """
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
335 Public method to get a reference to the model containing the test
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
336 result data.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
337
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
338 @return reference to the test results model
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
339 @rtype TestResultsModel
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
340 """
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
341 return self.__resultsModel
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
342
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
343 def hasFailedTests(self):
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
344 """
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
345 Public method to check for failed tests.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
346
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
347 @return flag indicating the existence of failed tests
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
348 @rtype bool
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
349 """
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
350 return bool(self.__resultsModel.getFailedTests())
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
351
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
352 def getFailedTests(self):
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
353 """
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
354 Public method to get the list of failed tests (if any).
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
355
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
356 @return list of IDs of failed tests
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
357 @rtype list of str
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
358 """
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
359 return self.__failedTests[:]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
360
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361 @pyqtSlot(str)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 def __insertHistory(self, widget, history, item):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364 Private slot to insert an item into a history object.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
365
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366 @param widget reference to the widget
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367 @type QComboBox or EricComboPathPicker
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
368 @param history array containing the history
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369 @type list of str
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 @param item item to be inserted
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
371 @type str
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
372 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
373 # prepend the given directory to the discovery picker
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
374 if item is None:
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 item = ""
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376 if item in history:
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 history.remove(item)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 history.insert(0, item)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379 widget.clear()
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380 widget.addItems(history)
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
381 widget.setEditText(item)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
382
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 @pyqtSlot(str)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
384 def __insertDiscovery(self, start):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 Private slot to insert the discovery start directory into the
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387 discoveryPicker object.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
388
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
389 @param start start directory name to be inserted
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
390 @type str
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
391 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
392 self.__insertHistory(self.discoveryPicker, self.__discoverHistory, start)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
393
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
394 @pyqtSlot(str)
9072
8d3ae97ee666 Modified the 'getTestFileName()' function of the Utilities module to allow for additional test file name patterns (currently 'test...' and 'test_...').
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9070
diff changeset
395 def setTestFile(self, testFile, forProject=False):
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
396 """
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
397 Public slot to set the given test file as the current one.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
398
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
399 @param testFile path of the test file
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
400 @type str
9072
8d3ae97ee666 Modified the 'getTestFileName()' function of the Utilities module to allow for additional test file name patterns (currently 'test...' and 'test_...').
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9070
diff changeset
401 @param forProject flag indicating that this call is for a project
8d3ae97ee666 Modified the 'getTestFileName()' function of the Utilities module to allow for additional test file name patterns (currently 'test...' and 'test_...').
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9070
diff changeset
402 (defaults to False)
8d3ae97ee666 Modified the 'getTestFileName()' function of the Utilities module to allow for additional test file name patterns (currently 'test...' and 'test_...').
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9070
diff changeset
403 @type bool (optional)
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
404 """
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
405 if testFile:
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
406 self.__insertTestFile(testFile)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
407
9072
8d3ae97ee666 Modified the 'getTestFileName()' function of the Utilities module to allow for additional test file name patterns (currently 'test...' and 'test_...').
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9070
diff changeset
408 self.discoverCheckBox.setChecked(forProject or not bool(testFile))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
409
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
410 if forProject:
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
411 self.__projectOpened()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
412
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
413 self.tabWidget.setCurrentIndex(0)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
414
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
415 @pyqtSlot(str)
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
416 def __insertTestFile(self, prog):
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
417 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
418 Private slot to insert a test file name into the testsuitePicker
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
419 object.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
420
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
421 @param prog test file name to be inserted
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
422 @type str
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
423 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
424 self.__insertHistory(self.testsuitePicker, self.__fileHistory, prog)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
425
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
426 @pyqtSlot(str)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
427 def __insertTestName(self, testName):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
428 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
429 Private slot to insert a test name into the testComboBox object.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
430
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
431 @param testName name of the test to be inserted
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
432 @type str
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
433 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
434 self.__insertHistory(self.testComboBox, self.__testNameHistory, testName)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
435
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
436 def __loadRecent(self):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
437 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
438 Private method to load the most recently used lists.
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
439 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
440 Preferences.Prefs.rsettings.sync()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
441
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
442 # 1. recently selected test framework and virtual environment
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
443 self.__recentEnvironment = Preferences.Prefs.rsettings.value(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
444 recentNameTestEnvironment, ""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
445 )
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
446 self.__recentFramework = Preferences.Prefs.rsettings.value(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
447 recentNameTestFramework, ""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
448 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
449
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
450 # 2. discovery history
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
451 self.__discoverHistory = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
452 rs = Preferences.Prefs.rsettings.value(recentNameTestDiscoverHistory)
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
453 if rs is not None:
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
454 recent = [f for f in Preferences.toList(rs) if os.path.exists(f)]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
455 self.__discoverHistory = recent[: Preferences.getDebugger("RecentNumber")]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
456
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
457 # 3. test file history
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
458 self.__fileHistory = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
459 rs = Preferences.Prefs.rsettings.value(recentNameTestFileHistory)
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
460 if rs is not None:
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
461 recent = [f for f in Preferences.toList(rs) if os.path.exists(f)]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
462 self.__fileHistory = recent[: Preferences.getDebugger("RecentNumber")]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
463
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
464 # 4. test name history
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
465 self.__testNameHistory = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
466 rs = Preferences.Prefs.rsettings.value(recentNameTestNameHistory)
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
467 if rs is not None:
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
468 recent = [n for n in Preferences.toList(rs) if n]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
469 self.__testNameHistory = recent[: Preferences.getDebugger("RecentNumber")]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
470
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
471 def __saveRecent(self):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
472 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
473 Private method to save the most recently used lists.
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
474 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
475 Preferences.Prefs.rsettings.setValue(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
476 recentNameTestEnvironment, self.__recentEnvironment
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
477 )
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
478 Preferences.Prefs.rsettings.setValue(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
479 recentNameTestFramework, self.__recentFramework
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
480 )
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
481 Preferences.Prefs.rsettings.setValue(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
482 recentNameTestDiscoverHistory, self.__discoverHistory
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
483 )
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
484 Preferences.Prefs.rsettings.setValue(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
485 recentNameTestFileHistory, self.__fileHistory
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
486 )
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
487 Preferences.Prefs.rsettings.setValue(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
488 recentNameTestNameHistory, self.__testNameHistory
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
489 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
490
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
491 Preferences.Prefs.rsettings.sync()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
492
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
493 @pyqtSlot()
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
494 def clearRecent(self):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
495 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
496 Public slot to clear the recently used lists.
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
497 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
498 # clear histories
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
499 self.__discoverHistory = []
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
500 self.__fileHistory = []
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
501 self.__testNameHistory = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
502
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
503 # clear widgets with histories
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
504 self.discoveryPicker.clear()
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
505 self.testsuitePicker.clear()
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
506 self.testComboBox.clear()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
507
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
508 # sync histories
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
509 self.__saveRecent()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
510
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
511 @pyqtSlot()
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
512 def __resetResults(self):
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
513 """
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
514 Private slot to reset the test results tab and data.
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
515 """
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
516 self.__totalCount = 0
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
517 self.__runCount = 0
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
518
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
519 self.progressCounterRunCount.setText("0")
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
520 self.progressCounterRemCount.setText("0")
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
521 self.progressProgressBar.setMaximum(100)
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
522 self.progressProgressBar.setValue(0)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
523
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
524 self.statusLabel.clear()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
525
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
526 self.__resultsModel.clear()
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
527 self.__updateButtonBoxButtons()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
528
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
529 @pyqtSlot()
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
530 def __updateButtonBoxButtons(self):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
531 """
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
532 Private slot to update the state of the buttons of the button box.
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
533 """
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
534 failedAvailable = bool(self.__resultsModel.getFailedTests())
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
535
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
536 # Discover button
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
537 if self.__mode in (TestingWidgetModes.IDLE, TestingWidgetModes.STOPPED):
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
538 self.__discoverButton.setEnabled(
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
539 bool(self.venvComboBox.currentText())
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
540 and bool(self.frameworkComboBox.currentText())
10413
2ecbe43a8e88 Fixed a few glitches in the testing widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
541 and self.discoverCheckBox.isChecked()
2ecbe43a8e88 Fixed a few glitches in the testing widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
542 and bool(self.discoveryPicker.currentText())
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
543 )
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
544 else:
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
545 self.__discoverButton.setEnabled(False)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
546 self.__discoverButton.setDefault(False)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
547
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
548 # Start button
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
549 if self.__mode in (TestingWidgetModes.IDLE, TestingWidgetModes.STOPPED):
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
550 self.__startButton.setEnabled(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
551 bool(self.venvComboBox.currentText())
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
552 and bool(self.frameworkComboBox.currentText())
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
553 and (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
554 (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
555 self.discoverCheckBox.isChecked()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
556 and bool(self.discoveryPicker.currentText())
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
557 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
558 or bool(self.testsuitePicker.currentText())
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
559 )
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
560 )
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
561 self.__startButton.setDefault(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
562 self.__mode == TestingWidgetModes.IDLE or not failedAvailable
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
563 )
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
564 else:
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
565 self.__startButton.setEnabled(False)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
566 self.__startButton.setDefault(False)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
567
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
568 # Start Failed button
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
569 self.__startFailedButton.setEnabled(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
570 self.__mode == TestingWidgetModes.STOPPED and failedAvailable
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
571 )
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
572 self.__startFailedButton.setDefault(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
573 self.__mode == TestingWidgetModes.STOPPED and failedAvailable
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
574 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
575
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
576 # Stop button
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
577 self.__stopButton.setEnabled(self.__mode == TestingWidgetModes.RUNNING)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
578 self.__stopButton.setDefault(self.__mode == TestingWidgetModes.RUNNING)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
579
9070
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
580 # Code coverage button
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
581 self.__showCoverageButton.setEnabled(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
582 self.__mode == TestingWidgetModes.STOPPED
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
583 and bool(self.__coverageFile)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
584 and (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
585 (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
586 self.discoverCheckBox.isChecked()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
587 and bool(self.discoveryPicker.currentText())
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
588 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
589 or bool(self.testsuitePicker.currentText())
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
590 )
9070
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
591 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
592
9093
437bfe0c5793 Implemented the functionality to show the output of the last test run (i.e. the output sent by the test runner).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9089
diff changeset
593 # Log output button
437bfe0c5793 Implemented the functionality to show the output of the last test run (i.e. the output sent by the test runner).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9089
diff changeset
594 self.__showLogButton.setEnabled(bool(self.__recentLog))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
595
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
596 # Close button
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
597 self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setEnabled(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
598 self.__mode in (TestingWidgetModes.IDLE, TestingWidgetModes.STOPPED)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
599 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
600
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
601 @pyqtSlot()
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
602 def __updateProgress(self):
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
603 """
10020
3f2e1d0ef4e2 Optimized the testing widget code in order to speed up the display of test results (see issue 500).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
604 Private slot to update the progress indicators.
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
605 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
606 self.progressCounterRunCount.setText(str(self.__runCount))
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
607 self.progressCounterRemCount.setText(str(self.__totalCount - self.__runCount))
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
608 self.progressProgressBar.setMaximum(self.__totalCount)
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
609 self.progressProgressBar.setValue(self.__runCount)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
610
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
611 @pyqtSlot()
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
612 def __setIdleMode(self):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
613 """
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
614 Private slot to switch the widget to idle mode.
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
615 """
9066
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
616 self.__mode = TestingWidgetModes.IDLE
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
617 self.__updateButtonBoxButtons()
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
618 self.progressGroupBox.hide()
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
619 self.tabWidget.setCurrentIndex(0)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
620
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
621 self.raise_()
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
622 self.activateWindow()
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
623
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
624 @pyqtSlot()
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
625 def __setDiscoverMode(self):
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
626 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
627 Private slot to switch the widget to test discovery mode.
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
628 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
629 self.__mode = TestingWidgetModes.DISCOVERY
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
630
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
631 self.__totalCount = 0
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
632
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
633 self.sbLabel.setText("Discovering Tests")
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
634 self.tabWidget.setCurrentIndex(0)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
635 self.__updateButtonBoxButtons()
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
636
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
637 @pyqtSlot()
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
638 def __setRunningMode(self):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
639 """
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
640 Private slot to switch the widget to running mode.
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
641 """
9066
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
642 self.__mode = TestingWidgetModes.RUNNING
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
643
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
644 self.__totalCount = 0
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
645 self.__runCount = 0
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
646
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
647 self.__coverageFile = ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
648
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
649 self.sbLabel.setText(self.tr("Running"))
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
650 self.tabWidget.setCurrentIndex(1)
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
651 self.__updateButtonBoxButtons()
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
652 self.__updateProgress()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
653
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
654 self.progressGroupBox.show()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
655
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
656 @pyqtSlot()
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
657 def __setStoppedMode(self):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
658 """
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
659 Private slot to switch the widget to stopped mode.
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
660 """
9066
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
661 self.__mode = TestingWidgetModes.STOPPED
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
662 if self.__totalCount == 0:
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
663 self.progressProgressBar.setMaximum(100)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
664
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
665 self.progressGroupBox.hide()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
666
10020
3f2e1d0ef4e2 Optimized the testing widget code in order to speed up the display of test results (see issue 500).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
667 self.__resultsTree.resizeColumns()
3f2e1d0ef4e2 Optimized the testing widget code in order to speed up the display of test results (see issue 500).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
668
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
669 self.__updateButtonBoxButtons()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
670
9066
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
671 self.testRunStopped.emit()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
672
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
673 self.raise_()
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
674 self.activateWindow()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
675
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
676 @pyqtSlot(bool)
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
677 def on_discoverCheckBox_toggled(self, checked):
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
678 """
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
679 Private slot handling state changes of the 'discover' checkbox.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
680
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
681 @param checked state of the checkbox
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
682 @type bool
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
683 """
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
684 if not bool(self.discoveryPicker.currentText()):
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
685 if self.__project and self.__project.isOpen():
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
686 self.__insertDiscovery(self.__project.getProjectPath())
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
687 else:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
688 self.__insertDiscovery(Preferences.getMultiProject("Workspace"))
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
689
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
690 self.__resetResults()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
691
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
692 self.discoveryList.clear()
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
693
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
694 @pyqtSlot(str)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
695 def on_discoveryPicker_editTextChanged(self, txt):
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
696 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
697 Private slot to handle a change of the discovery start directory.
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
698
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
699 @param txt new discovery start directory
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
700 @type str
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
701 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
702 self.discoveryList.clear()
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
703
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
704 @pyqtSlot()
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
705 def on_testsuitePicker_aboutToShowPathPickerDialog(self):
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
706 """
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
707 Private slot called before the test file selection dialog is shown.
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
708 """
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
709 if self.__project:
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
710 # we were called from within eric
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
711 py3Extensions = " ".join(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
712 [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
713 "*{0}".format(ext)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
714 for ext in ericApp()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
715 .getObject("DebugServer")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
716 .getExtensions("Python3")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
717 ]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
718 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
719 fileFilter = self.tr("Python3 Files ({0});;All Files (*)").format(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
720 py3Extensions
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
721 )
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
722 else:
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
723 # standalone application
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
724 fileFilter = self.tr("Python Files (*.py);;All Files (*)")
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
725 self.testsuitePicker.setFilters(fileFilter)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
726
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
727 defaultDirectory = (
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
728 self.__project.getProjectPath()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
729 if self.__project and self.__project.isOpen()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
730 else Preferences.getMultiProject("Workspace")
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
731 )
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
732 if not defaultDirectory:
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
733 defaultDirectory = os.path.expanduser("~")
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
734 self.testsuitePicker.setDefaultDirectory(defaultDirectory)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
735
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
736 @pyqtSlot(QAbstractButton)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
737 def on_buttonBox_clicked(self, button):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
738 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
739 Private slot called by a button of the button box clicked.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
740
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
741 @param button button that was clicked
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
742 @type QAbstractButton
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
743 """
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
744 if button == self.__discoverButton:
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
745 self.__discoverTests()
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
746 if button == self.__startButton:
10415
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
747 self.startTests(debug=self.debuggerCheckBox.isChecked())
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
748 self.__saveRecent()
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
749 elif button == self.__stopButton:
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
750 self.__stopTests()
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
751 elif button == self.__startFailedButton:
10415
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
752 self.startTests(failedOnly=True, debug=self.debuggerCheckBox.isChecked())
9070
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
753 elif button == self.__showCoverageButton:
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
754 self.__showCoverageDialog()
9093
437bfe0c5793 Implemented the functionality to show the output of the last test run (i.e. the output sent by the test runner).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9089
diff changeset
755 elif button == self.__showLogButton:
437bfe0c5793 Implemented the functionality to show the output of the last test run (i.e. the output sent by the test runner).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9089
diff changeset
756 self.__showLogOutput()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
757
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
758 @pyqtSlot(int)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
759 def on_venvComboBox_currentIndexChanged(self, index):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
760 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
761 Private slot handling the selection of a virtual environment.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
762
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
763 @param index index of the selected environment
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
764 @type int
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
765 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
766 self.__populateTestFrameworkComboBox()
10413
2ecbe43a8e88 Fixed a few glitches in the testing widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
767 self.discoveryList.clear()
2ecbe43a8e88 Fixed a few glitches in the testing widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
768
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
769 self.__updateButtonBoxButtons()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
770
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
771 self.versionsButton.setEnabled(bool(self.venvComboBox.currentText()))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
772
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
773 self.__updateCoverage()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
774
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
775 @pyqtSlot(int)
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
776 def on_frameworkComboBox_currentIndexChanged(self, index):
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
777 """
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
778 Private slot handling the selection of a test framework.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
779
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
780 @param index index of the selected framework
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
781 @type int
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
782 """
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
783 self.__resetResults()
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
784 self.__updateCoverage()
9311
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
785 self.__updateMarkerSupport()
9313
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
786 self.__updatePatternSupport()
10413
2ecbe43a8e88 Fixed a few glitches in the testing widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10405
diff changeset
787 self.discoveryList.clear()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
788
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
789 @pyqtSlot()
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
790 def __updateCoverage(self):
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
791 """
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
792 Private slot to update the state of the coverage checkbox depending on
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
793 the selected framework's capabilities.
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
794 """
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
795 hasCoverage = False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
796
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
797 venvName = self.venvComboBox.currentText()
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
798 if venvName:
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
799 framework = self.frameworkComboBox.currentText()
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
800 if framework:
9388
bfe7ea6599a3 Added support for project embedded environments to the Testing framework and the Start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
801 interpreter = self.__determineInterpreter(venvName)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
802 executor = self.__frameworkRegistry.createExecutor(framework, self)
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
803 hasCoverage = executor.hasCoverage(interpreter)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
804
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
805 self.coverageCheckBox.setEnabled(hasCoverage)
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
806 if not hasCoverage:
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
807 self.coverageCheckBox.setChecked(False)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
808
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
809 @pyqtSlot()
9311
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
810 def __updateMarkerSupport(self):
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
811 """
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
812 Private slot to update the state of the marker related widgets depending on
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
813 the selected framework's capabilities.
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
814 """
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
815 supportsMarkers = False
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
816
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
817 venvName = self.venvComboBox.currentText()
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
818 if venvName:
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
819 framework = self.frameworkComboBox.currentText()
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
820 if framework:
9388
bfe7ea6599a3 Added support for project embedded environments to the Testing framework and the Start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
821 interpreter = self.__determineInterpreter(venvName)
9311
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
822 executor = self.__frameworkRegistry.createExecutor(framework, self)
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
823 supportsMarkers = executor.supportsMarkers(interpreter)
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
824
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
825 # 1. marker expression line edit
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
826 self.markerExpressionEdit.setEnabled(supportsMarkers)
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
827 if not supportsMarkers:
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
828 self.markerExpressionEdit.clear()
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
829
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
830 # 2. show markers button
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
831 self.showMarkersButton.setEnabled(supportsMarkers)
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
832 if self.__markersWindow is not None:
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
833 self.__markersWindow.close()
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
834
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
835 @pyqtSlot()
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
836 def on_showMarkersButton_clicked(self):
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
837 """
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
838 Private slot to show a window containing the list of defined markers.
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
839 """
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
840 from .MarkersWindow import MarkersWindow
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
841
9311
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
842 venvName = self.venvComboBox.currentText()
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
843 if venvName:
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
844 framework = self.frameworkComboBox.currentText()
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
845 if framework:
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
846 if self.discoverCheckBox.isChecked():
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
847 workdir = self.discoveryPicker.currentText()
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
848 elif self.testsuitePicker.currentText():
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
849 workdir = os.path.dirname(self.testsuitePicker.currentText())
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
850 else:
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
851 workdir = ""
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
852
9388
bfe7ea6599a3 Added support for project embedded environments to the Testing framework and the Start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
853 interpreter = self.__determineInterpreter(venvName)
9311
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
854 executor = self.__frameworkRegistry.createExecutor(framework, self)
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
855 markers = executor.getMarkers(interpreter, workdir)
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
856
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
857 if self.__markersWindow is None:
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
858 self.__markersWindow = MarkersWindow()
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
859 self.__markersWindow.showMarkers(markers)
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
860
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
861 @pyqtSlot()
9313
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
862 def __updatePatternSupport(self):
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
863 """
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
864 Private slot to update the state of the test name pattern line edit depending on
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
865 the selected framework's capabilities.
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
866 """
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
867 supportsPatterns = False
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
868
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
869 venvName = self.venvComboBox.currentText()
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
870 if venvName:
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
871 framework = self.frameworkComboBox.currentText()
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
872 if framework:
9388
bfe7ea6599a3 Added support for project embedded environments to the Testing framework and the Start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
873 interpreter = self.__determineInterpreter(venvName)
9313
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
874 executor = self.__frameworkRegistry.createExecutor(framework, self)
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
875 supportsPatterns = executor.supportsPatterns(interpreter)
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
876
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
877 self.testNamePatternEdit.setEnabled(supportsPatterns)
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
878 self.testNamePatternEdit.clear()
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
879
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
880 @pyqtSlot()
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
881 def on_versionsButton_clicked(self):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
882 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
883 Private slot to show the versions of available plugins.
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
884 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
885 venvName = self.venvComboBox.currentText()
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
886 if venvName:
9576
be9f8e7e42e0 Corrected some 'wrong' string quotes caused by the Black line merging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9573
diff changeset
887 headerText = self.tr("<h3>Versions of Frameworks and their Plugins</h3>")
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
888 versionsText = ""
9388
bfe7ea6599a3 Added support for project embedded environments to the Testing framework and the Start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
889 interpreter = self.__determineInterpreter(venvName)
10373
093dcebe5ecb Corrected some uses of dict.keys(), dict.values() and dict.items().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10303
diff changeset
890 for framework in sorted(self.__frameworkRegistry.getFrameworks()):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
891 executor = self.__frameworkRegistry.createExecutor(framework, self)
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
892 versions = executor.getVersions(interpreter)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
893 if versions:
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
894 txt = "<p><strong>{0} {1}</strong>".format(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
895 versions["name"], versions["version"]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
896 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
897
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
898 if versions["plugins"]:
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
899 txt += "<table>"
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
900 for pluginVersion in versions["plugins"]:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
901 txt += self.tr("<tr><td>{0}</td><td>{1}</td></tr>").format(
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
902 pluginVersion["name"], pluginVersion["version"]
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
903 )
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
904 txt += "</table>"
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
905 txt += "</p>"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
906
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
907 versionsText += txt
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
908
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
909 if not versionsText:
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
910 versionsText = self.tr("No version information available.")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
911
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
912 EricMessageBox.information(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
913 self, self.tr("Versions"), headerText + versionsText
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
914 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
915
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
916 @pyqtSlot()
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
917 def __discoverTests(self):
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
918 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
919 Private slot to discover tests but don't execute them.
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
920 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
921 if self.__mode in (TestingWidgetModes.RUNNING, TestingWidgetModes.DISCOVERY):
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
922 return
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
923
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
924 self.__recentLog = ""
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
925
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
926 environment = self.venvComboBox.currentText()
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
927 framework = self.frameworkComboBox.currentText()
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
928
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
929 discoveryStart = self.discoveryPicker.currentText()
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
930
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
931 self.sbLabel.setText(self.tr("Discovering Tests"))
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
932 QCoreApplication.processEvents()
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
933
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
934 interpreter = self.__determineInterpreter(environment)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
935 config = TestConfig(
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
936 interpreter=interpreter,
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
937 discover=True,
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
938 discoveryStart=discoveryStart,
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
939 discoverOnly=True,
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
940 testNamePattern=self.testNamePatternEdit.text(),
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
941 testMarkerExpression=self.markerExpressionEdit.text(),
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
942 failFast=self.failfastCheckBox.isChecked(),
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
943 )
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
944
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
945 self.__testExecutor = self.__frameworkRegistry.createExecutor(framework, self)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
946 self.__testExecutor.collected.connect(self.__testsDiscovered)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
947 self.__testExecutor.collectError.connect(self.__testDiscoveryError)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
948 self.__testExecutor.testFinished.connect(self.__testDiscoveryProcessFinished)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
949 self.__testExecutor.discoveryAboutToBeStarted.connect(
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
950 self.__testDiscoveryAboutToBeStarted
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
951 )
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
952
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
953 self.__setDiscoverMode()
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
954 self.__testExecutor.discover(config, [])
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
955
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
956 @pyqtSlot()
10415
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
957 def startTests(self, failedOnly=False, debug=False):
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
958 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
959 Public slot to start the test run.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
960
10415
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
961 @param failedOnly flag indicating to run only failed tests (defaults to False)
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
962 @type bool (optional)
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
963 @param debug flag indicating to start the test run with debugger support
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
964 (defaults to False)
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
965 @type bool (optional)
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
966 """
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
967 if self.__mode in (TestingWidgetModes.RUNNING, TestingWidgetModes.DISCOVERY):
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
968 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
969
9093
437bfe0c5793 Implemented the functionality to show the output of the last test run (i.e. the output sent by the test runner).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9089
diff changeset
970 self.__recentLog = ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
971
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
972 self.__recentEnvironment = self.venvComboBox.currentText()
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
973 self.__recentFramework = self.frameworkComboBox.currentText()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
974
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
975 self.__failedTests = self.__resultsModel.getFailedTests() if failedOnly else []
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
976 discover = self.discoverCheckBox.isChecked()
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
977 if discover:
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
978 discoveryStart = self.discoveryPicker.currentText()
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
979 testFileName = ""
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
980 testName = ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
981
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
982 if discoveryStart:
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
983 self.__insertDiscovery(discoveryStart)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
984 else:
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
985 discoveryStart = ""
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
986 testFileName = self.testsuitePicker.currentText()
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
987 if testFileName:
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
988 self.__insertTestFile(testFileName)
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
989 testName = self.testComboBox.currentText()
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
990 if testName:
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
991 self.__insertTestName(testName)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
992
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
993 self.sbLabel.setText(self.tr("Preparing Testsuite"))
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
994 QCoreApplication.processEvents()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
995
9070
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
996 if self.__project:
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
997 mainScript = self.__project.getMainScript(True)
9084
ee36935f4edd Corrected some little issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9081
diff changeset
998 coverageFile = (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
999 os.path.splitext(mainScript)[0] + ".coverage" if mainScript else ""
9084
ee36935f4edd Corrected some little issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9081
diff changeset
1000 )
9070
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
1001 else:
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
1002 coverageFile = ""
9388
bfe7ea6599a3 Added support for project embedded environments to the Testing framework and the Start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
1003 interpreter = self.__determineInterpreter(self.__recentEnvironment)
10415
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
1004
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1005 testCases = self.__selectedTestCases()
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1006 if not testCases and self.discoveryList.topLevelItemCount() > 0:
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1007 ok = EricMessageBox.yesNo(
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1008 self,
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1009 self.tr("Running Tests"),
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1010 self.tr("No test case has been selected. Shall all test cases be run?"),
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1011 )
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1012 if not ok:
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1013 return
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1014
9066
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
1015 config = TestConfig(
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1016 interpreter=interpreter,
9070
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
1017 discover=discover,
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1018 discoveryStart=discoveryStart,
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1019 testCases=testCases,
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1020 testFilename=testFileName,
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1021 testName=testName,
9313
6bac6775abb2 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9311
diff changeset
1022 testNamePattern=self.testNamePatternEdit.text(),
9311
8e588f403fd9 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
1023 testMarkerExpression=self.markerExpressionEdit.text(),
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1024 failFast=self.failfastCheckBox.isChecked(),
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
1025 failedOnly=failedOnly,
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1026 collectCoverage=self.coverageCheckBox.isChecked(),
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1027 eraseCoverage=self.coverageEraseCheckBox.isChecked(),
9070
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
1028 coverageFile=coverageFile,
10415
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
1029 venvName=self.__recentEnvironment,
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1030 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1031
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1032 self.__testExecutor = self.__frameworkRegistry.createExecutor(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1033 self.__recentFramework, self
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1034 )
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1035 self.__testExecutor.collected.connect(self.__testsCollected)
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1036 self.__testExecutor.collectError.connect(self.__testsCollectError)
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1037 self.__testExecutor.startTest.connect(self.__testStarted)
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1038 self.__testExecutor.testResult.connect(self.__processTestResult)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1039 self.__testExecutor.testFinished.connect(self.__testProcessFinished)
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1040 self.__testExecutor.testRunFinished.connect(self.__testRunFinished)
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1041 self.__testExecutor.stop.connect(self.__testsStopped)
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1042 self.__testExecutor.coverageDataSaved.connect(self.__coverageData)
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
1043 self.__testExecutor.testRunAboutToBeStarted.connect(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1044 self.__testRunAboutToBeStarted
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1045 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1046
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1047 self.__setRunningMode()
10415
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
1048 if debug:
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
1049 self.__testExecutor.startDebug(config, [], ericApp().getObject("DebugUI"))
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
1050 else:
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
1051 self.__testExecutor.start(config, [])
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1052
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1053 @pyqtSlot()
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1054 def __stopTests(self):
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1055 """
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1056 Private slot to stop the current test run.
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1057 """
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1058 self.__testExecutor.stopIfRunning()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1059
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1060 @pyqtSlot(list)
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1061 def __testsCollected(self, testNames):
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1062 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1063 Private slot handling the 'collected' signal of the executor.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1064
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
1065 @param testNames list of tuples containing the test id, the test name
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1066 a description, the file name, the line number and the test path as a list
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1067 of collected tests
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1068 @type list of tuple of (str, str, str, str, int, list)
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1069 """
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1070 testResults = [
9066
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
1071 TestResult(
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
1072 category=TestResultCategory.PENDING,
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1073 status=self.tr("pending"),
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1074 name=name,
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1075 id=id,
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1076 message=desc,
10404
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
1077 filename=filename,
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
1078 lineno=lineno,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1079 )
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1080 for id, name, desc, filename, lineno, _ in testNames
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1081 ]
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
1082 self.__resultsModel.addTestResults(testResults)
10020
3f2e1d0ef4e2 Optimized the testing widget code in order to speed up the display of test results (see issue 500).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1083 self.__resultsTree.resizeColumns()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1084
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
1085 self.__totalCount += len(testResults)
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1086 self.__updateProgress()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1087
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1088 @pyqtSlot(list)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1089 def __testsCollectError(self, errors):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1090 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1091 Private slot handling the 'collectError' signal of the executor.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1092
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1093 @param errors list of tuples containing the test name and a description
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1094 of the error
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1095 @type list of tuple of (str, str)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1096 """
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1097 testResults = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1098
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1099 for testFile, error in errors:
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1100 if testFile:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1101 testResults.append(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1102 TestResult(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1103 category=TestResultCategory.FAIL,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1104 status=self.tr("Failure"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1105 name=testFile,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1106 id=testFile,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1107 message=self.tr("Collection Error"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1108 extra=error.splitlines(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1109 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1110 )
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1111 else:
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1112 EricMessageBox.critical(
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1113 self,
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1114 self.tr("Collection Error"),
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1115 self.tr(
9576
be9f8e7e42e0 Corrected some 'wrong' string quotes caused by the Black line merging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9573
diff changeset
1116 "<p>There was an error while collecting tests.</p><p>{0}</p>"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1117 ).format("<br/>".join(error.splitlines())),
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1118 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1119
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1120 if testResults:
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1121 self.__resultsModel.addTestResults(testResults)
10020
3f2e1d0ef4e2 Optimized the testing widget code in order to speed up the display of test results (see issue 500).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1122 self.__resultsTree.resizeColumns()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1123
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1124 @pyqtSlot(tuple)
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1125 def __testStarted(self, test):
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1126 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1127 Private slot handling the 'startTest' signal of the executor.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1128
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1129 @param test tuple containing the id, name and short description of the
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1130 tests about to be run
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1131 @type tuple of (str, str, str)
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1132 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1133 self.__resultsModel.updateTestResults(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1134 [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1135 TestResult(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1136 category=TestResultCategory.RUNNING,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1137 status=self.tr("running"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1138 id=test[0],
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1139 name=test[1],
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1140 message="" if test[2] is None else test[2],
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1141 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1142 ]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1143 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1144
9066
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
1145 @pyqtSlot(TestResult)
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1146 def __processTestResult(self, result):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1147 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1148 Private slot to handle the receipt of a test result object.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1149
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1150 @param result test result object
9066
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
1151 @type TestResult
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1152 """
9063
f1d7dd7ae471 Corrected the code dealing with subtests.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9062
diff changeset
1153 if not result.subtestResult:
f1d7dd7ae471 Corrected the code dealing with subtests.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9062
diff changeset
1154 self.__runCount += 1
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1155 self.__updateProgress()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1156
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1157 self.__resultsModel.updateTestResults([result])
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1158
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1159 @pyqtSlot(list, str)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1160 def __testProcessFinished(self, results, output):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1161 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1162 Private slot to handle the 'testFinished' signal of the executor.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1163
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1164 @param results list of test result objects (if not sent via the
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1165 'testResult' signal
9066
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
1166 @type list of TestResult
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1167 @param output string containing the test process output (if any)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1168 @type str
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1169 """
9093
437bfe0c5793 Implemented the functionality to show the output of the last test run (i.e. the output sent by the test runner).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9089
diff changeset
1170 self.__recentLog = output
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1171
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1172 self.__setStoppedMode()
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1173 self.__testExecutor = None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1174
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
1175 self.__adjustPendingState()
10404
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
1176 self.__updateStatusFilterComboBox()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1177
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1178 @pyqtSlot(int, float)
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1179 def __testRunFinished(self, noTests, duration):
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1180 """
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1181 Private slot to handle the 'testRunFinished' signal of the executor.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1182
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1183 @param noTests number of tests run by the executor
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1184 @type int
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1185 @param duration time needed in seconds to run the tests
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1186 @type float
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1187 """
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1188 self.sbLabel.setText(
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1189 self.tr("Ran %n test(s) in {0}s", "", noTests).format(
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1190 locale.format_string("%.3f", duration, grouping=True)
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1191 )
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1192 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1193
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1194 self.__setStoppedMode()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1195
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1196 @pyqtSlot()
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1197 def __testsStopped(self):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1198 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1199 Private slot to handle the 'stop' signal of the executor.
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1200 """
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1201 self.sbLabel.setText(self.tr("Ran %n test(s)", "", self.__runCount))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1202
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1203 self.__setStoppedMode()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1204
9064
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
1205 @pyqtSlot()
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
1206 def __testRunAboutToBeStarted(self):
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
1207 """
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
1208 Private slot to handle the 'testRunAboutToBeStarted' signal of the
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
1209 executor.
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
1210 """
339bb8c8007d Implemented the "Rerun Failed" functionality for the new unit test interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9063
diff changeset
1211 self.__resultsModel.clear()
10404
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
1212 self.statusFilterComboBox.clear()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1213
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
1214 def __adjustPendingState(self):
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
1215 """
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
1216 Private method to change the status indicator of all still pending
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
1217 tests to "not run".
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
1218 """
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
1219 newResults = []
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
1220 for result in self.__resultsModel.getTestResults():
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
1221 if result.category == TestResultCategory.PENDING:
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
1222 result.category = TestResultCategory.SKIP
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
1223 result.status = self.tr("not run")
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
1224 newResults.append(result)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1225
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
1226 if newResults:
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
1227 self.__resultsModel.updateTestResults(newResults)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1228
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1229 @pyqtSlot(str)
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1230 def __coverageData(self, coverageFile):
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1231 """
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1232 Private slot to handle the 'coverageData' signal of the executor.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1233
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1234 @param coverageFile file containing the coverage data
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1235 @type str
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1236 """
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9059
diff changeset
1237 self.__coverageFile = coverageFile
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1238
9070
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
1239 @pyqtSlot()
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
1240 def __showCoverageDialog(self):
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
1241 """
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
1242 Private slot to show a code coverage dialog for the most recent test
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
1243 run.
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
1244 """
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
1245 if self.__coverageDialog is None:
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
1246 self.__coverageDialog = PyCoverageDialog(self)
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
1247 self.__coverageDialog.openFile.connect(self.__openEditor)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1248
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
1249 testDir = (
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
1250 self.discoveryPicker.currentText()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1251 if self.discoverCheckBox.isChecked()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1252 else os.path.dirname(self.testsuitePicker.currentText())
9089
b48a6d0f6309 Implemented support for the 'pytest' framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9084
diff changeset
1253 )
9070
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
1254 if testDir:
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
1255 self.__coverageDialog.show()
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
1256 self.__coverageDialog.start(self.__coverageFile, testDir)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1257
9093
437bfe0c5793 Implemented the functionality to show the output of the last test run (i.e. the output sent by the test runner).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9089
diff changeset
1258 @pyqtSlot()
437bfe0c5793 Implemented the functionality to show the output of the last test run (i.e. the output sent by the test runner).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9089
diff changeset
1259 def __showLogOutput(self):
437bfe0c5793 Implemented the functionality to show the output of the last test run (i.e. the output sent by the test runner).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9089
diff changeset
1260 """
437bfe0c5793 Implemented the functionality to show the output of the last test run (i.e. the output sent by the test runner).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9089
diff changeset
1261 Private slot to show the output of the most recent test run.
437bfe0c5793 Implemented the functionality to show the output of the last test run (i.e. the output sent by the test runner).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9089
diff changeset
1262 """
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9388
diff changeset
1263 from eric7.EricWidgets.EricPlainTextDialog import EricPlainTextDialog
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1264
9093
437bfe0c5793 Implemented the functionality to show the output of the last test run (i.e. the output sent by the test runner).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9089
diff changeset
1265 dlg = EricPlainTextDialog(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1266 title=self.tr("Test Run Output"), text=self.__recentLog
9093
437bfe0c5793 Implemented the functionality to show the output of the last test run (i.e. the output sent by the test runner).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9089
diff changeset
1267 )
437bfe0c5793 Implemented the functionality to show the output of the last test run (i.e. the output sent by the test runner).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9089
diff changeset
1268 dlg.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1269
9063
f1d7dd7ae471 Corrected the code dealing with subtests.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9062
diff changeset
1270 @pyqtSlot(str)
f1d7dd7ae471 Corrected the code dealing with subtests.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9062
diff changeset
1271 def __setStatusLabel(self, statusText):
f1d7dd7ae471 Corrected the code dealing with subtests.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9062
diff changeset
1272 """
f1d7dd7ae471 Corrected the code dealing with subtests.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9062
diff changeset
1273 Private slot to set the status label to the text sent by the model.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1274
9063
f1d7dd7ae471 Corrected the code dealing with subtests.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9062
diff changeset
1275 @param statusText text to be shown
f1d7dd7ae471 Corrected the code dealing with subtests.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9062
diff changeset
1276 @type str
f1d7dd7ae471 Corrected the code dealing with subtests.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9062
diff changeset
1277 """
f1d7dd7ae471 Corrected the code dealing with subtests.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9062
diff changeset
1278 self.statusLabel.setText(f"<b>{statusText}</b>")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1279
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1280 @pyqtSlot()
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1281 def __projectOpened(self):
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1282 """
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1283 Private slot to handle a project being opened.
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1284 """
10415
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
1285 self.venvComboBox.insertItem(
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
1286 1, ericApp().getObject("DebugUI").getProjectEnvironmentString()
af9a6dac2611 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10413
diff changeset
1287 )
9388
bfe7ea6599a3 Added support for project embedded environments to the Testing framework and the Start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
1288 self.venvComboBox.setCurrentIndex(1)
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1289 self.frameworkComboBox.setCurrentText(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1290 self.__project.getProjectTestingFramework()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1291 )
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1292 self.__insertDiscovery(self.__project.getProjectPath())
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1293
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1294 @pyqtSlot()
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1295 def __projectClosed(self):
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1296 """
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1297 Private slot to handle a project being closed.
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1298 """
9388
bfe7ea6599a3 Added support for project embedded environments to the Testing framework and the Start dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9313
diff changeset
1299 self.venvComboBox.removeItem(1) # <project> is always at index 1
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1300 self.venvComboBox.setCurrentText("")
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1301 self.frameworkComboBox.setCurrentText("")
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1302 self.__insertDiscovery("")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1303
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1304 @pyqtSlot(str, int)
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1305 def __showSource(self, filename, lineno):
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1306 """
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1307 Private slot to show the source of a traceback in an editor.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1308
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1309 @param filename file name of the file to be shown
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1310 @type str
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1311 @param lineno line number to go to in the file
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1312 @type int
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1313 """
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1314 if self.__project:
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1315 # running as part of eric IDE
9066
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
1316 self.testFile.emit(filename, lineno, True)
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1317 else:
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1318 self.__openEditor(filename, lineno)
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1319 self.__resultsTree.resizeColumns()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1320
9070
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
1321 def __openEditor(self, filename, linenumber=1):
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1322 """
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1323 Private method to open an editor window for the given file.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1324
9066
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
1325 Note: This method opens an editor window when the testing dialog
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1326 is called as a standalone application.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1327
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1328 @param filename path of the file to be opened
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1329 @type str
9070
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
1330 @param linenumber line number to place the cursor at (defaults to 1)
eab09a1ab8ce Implemented the "Show Coverage" functionality and corrected the coverage related code in UnittestRunner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9066
diff changeset
1331 @type int (optional)
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1332 """
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9388
diff changeset
1333 from eric7.QScintilla.MiniEditor import MiniEditor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1334
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1335 editor = MiniEditor(filename, "Python3", self)
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1336 editor.gotoLine(linenumber)
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1337 editor.show()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1338
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1339 self.__editors.append(editor)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1340
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1341 def closeEvent(self, event):
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1342 """
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1343 Protected method to handle the close event.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1344
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1345 @param event close event
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1346 @type QCloseEvent
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1347 """
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1348 event.accept()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1349
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1350 for editor in self.__editors:
9462
e65379fdbd97 Changed code to resolve or acknowledge some potential security issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
1351 with contextlib.suppress(RuntimeError):
9065
39405e6eba20 Integrated the new testing widget into the eric IDE (compared to as a standalone app) and implemented the 'Show Source' functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9064
diff changeset
1352 editor.close()
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1353
10404
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
1354 @pyqtSlot(str)
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
1355 def on_statusFilterComboBox_currentTextChanged(self, status):
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
1356 """
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
1357 Private slot handling the selection of a status for items to be shown.
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
1358
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
1359 @param status selected status
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
1360 @type str
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
1361 """
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
1362 if status == self.__allFilter:
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
1363 status = ""
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
1364
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
1365 self.__resultFilterModel.setStatusFilterString(status)
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
1366
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1367 if not self.__project:
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1368 # running in standalone mode
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1369 self.__resultsTree.resizeColumns()
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1370
10404
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
1371 def __updateStatusFilterComboBox(self):
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1372 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1373 Private method to update the status filter dialog box.
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1374 """
10404
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
1375 statusFilters = self.__resultsModel.getStatusFilterList()
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
1376 self.statusFilterComboBox.clear()
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
1377 self.statusFilterComboBox.addItem(self.__allFilter)
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
1378 self.statusFilterComboBox.addItems(sorted(statusFilters))
f7d9c31f0c38 Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
1379
10405
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1380 ############################################################################
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1381 ## Methods below are handling the discovery only mode.
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1382 ############################################################################
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1383
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1384 def __findDiscoveryItem(self, modulePath):
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1385 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1386 Private method to find an item given the module path.
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1387
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1388 @param modulePath path of the module in dotted notation
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1389 @type str
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1390 @return reference to the item or None
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1391 @rtype QTreeWidgetItem or None
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1392 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1393 itm = self.discoveryList.topLevelItem(0)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1394 while itm is not None:
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1395 if itm.data(0, TestingWidget.TestCaseNameRole) == modulePath:
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1396 return itm
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1397
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1398 itm = self.discoveryList.itemBelow(itm)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1399
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1400 return None
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1401
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1402 @pyqtSlot(list)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1403 def __testsDiscovered(self, testNames):
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1404 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1405 Private slot handling the 'collected' signal of the executor in discovery
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1406 mode.
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1407
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1408 @param testNames list of tuples containing the test id, the test name
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1409 a description, the file name, the line number and the test path as a list
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1410 of collected tests
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1411 @type list of tuple of (str, str, str, str, int, list)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1412 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1413 for tid, _name, _desc, filename, lineno, testPath in testNames:
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1414 parent = None
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1415 for index in range(1, len(testPath) + 1):
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1416 modulePath = ".".join(testPath[:index])
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1417 itm = self.__findDiscoveryItem(modulePath)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1418 if itm is not None:
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1419 parent = itm
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1420 else:
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1421 if parent is None:
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1422 itm = QTreeWidgetItem(self.discoveryList, [testPath[index - 1]])
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1423 else:
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1424 itm = QTreeWidgetItem(parent, [testPath[index - 1]])
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1425 parent.setExpanded(True)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1426 itm.setFlags(itm.flags() | Qt.ItemFlag.ItemIsUserCheckable)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1427 itm.setCheckState(0, Qt.CheckState.Unchecked)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1428 itm.setData(0, TestingWidget.TestCaseNameRole, modulePath)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1429 itm.setData(0, TestingWidget.TestCaseLinenoRole, 0)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1430 if os.path.splitext(os.path.basename(filename))[0] == itm.text(0):
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1431 itm.setData(0, TestingWidget.TestCaseFileRole, filename)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1432 elif parent:
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1433 fn = parent.data(0, TestingWidget.TestCaseFileRole)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1434 if fn:
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1435 itm.setData(0, TestingWidget.TestCaseFileRole, fn)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1436 parent = itm
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1437
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1438 if parent:
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1439 parent.setData(0, TestingWidget.TestCaseLinenoRole, lineno)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1440 parent.setData(0, TestingWidget.TestCaseIdRole, tid)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1441
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1442 self.__totalCount += len(testNames)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1443
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1444 self.sbLabel.setText(self.tr("Discovered %n Test(s)", "", self.__totalCount))
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1445
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1446 def __testDiscoveryError(self, errors):
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1447 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1448 Private slot handling the 'collectError' signal of the executor.
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1449
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1450 @param errors list of tuples containing the test name and a description
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1451 of the error
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1452 @type list of tuple of (str, str)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1453 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1454 for _testFile, error in errors:
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1455 EricMessageBox.critical(
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1456 self,
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1457 self.tr("Discovery Error"),
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1458 self.tr(
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1459 "<p>There was an error while discovering tests in <b>{0}</b>.</p>"
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1460 "<p>{1}</p>"
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1461 ).format("<br/>".join(error.splitlines())),
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1462 )
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1463
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1464 def __testDiscoveryProcessFinished(self, results, output): # noqa: U100
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1465 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1466 Private slot to handle the 'testFinished' signal of the executor in
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1467 discovery mode.
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1468
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1469 @param results list of test result objects (if not sent via the
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1470 'testResult' signal)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1471 @type list of TestResult
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1472 @param output string containing the test process output (if any)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1473 @type str
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1474 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1475 self.__recentLog = output
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1476
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1477 self.__setIdleMode()
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1478
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1479 def __testDiscoveryAboutToBeStarted(self):
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1480 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1481 Private slot to handle the 'testDiscoveryAboutToBeStarted' signal of the
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1482 executor.
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1483 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1484 self.discoveryList.clear()
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1485
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1486 @pyqtSlot(QTreeWidgetItem, int)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1487 def on_discoveryList_itemChanged(self, item, column):
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1488 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1489 Private slot handling the user checking or unchecking an item.
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1490
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1491 @param item reference to the item
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1492 @type QTreeWidgetItem
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1493 @param column changed column
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1494 @type int
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1495 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1496 if column == 0:
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1497 for index in range(item.childCount()):
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1498 item.child(index).setCheckState(0, item.checkState(0))
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1499
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1500 @pyqtSlot(QTreeWidgetItem, int)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1501 def on_discoveryList_itemActivated(self, item, column):
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1502 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1503 Private slot handling the user activating an item.
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1504
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1505 @param item reference to the item
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1506 @type QTreeWidgetItem
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1507 @param column column of the double click
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1508 @type int
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1509 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1510 if item:
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1511 filename = item.data(0, TestingWidget.TestCaseFileRole)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1512 if filename:
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1513 self.__showSource(
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1514 filename, item.data(0, TestingWidget.TestCaseLinenoRole) + 1
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1515 )
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1516
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1517 def __selectedTestCases(self, parent=None):
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1518 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1519 Private method to assemble the list of selected test cases and suites.
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1520
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1521 @param parent reference to the parent item
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1522 @type QTreeWidgetItem
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1523 @return list of selected test cases
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1524 @rtype list of str
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1525 """
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1526 selectedTests = []
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1527 itemsList = (
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1528 [
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1529 # top level
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1530 self.discoveryList.topLevelItem(index)
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1531 for index in range(self.discoveryList.topLevelItemCount())
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1532 ]
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1533 if parent is None
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1534 else [parent.child(index) for index in range(parent.childCount())]
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1535 )
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1536
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1537 for itm in itemsList:
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1538 if itm.checkState(0) == Qt.CheckState.Checked and itm.childCount() == 0:
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1539 selectedTests.append(itm.data(0, TestingWidget.TestCaseIdRole))
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1540 if itm.childCount():
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1541 # recursively check children
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1542 selectedTests.extend(self.__selectedTestCases(itm))
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1543
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1544 return selectedTests
df7e1694d0eb Testing
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10404
diff changeset
1545
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1546
9066
a219ade50f7c Performed some refactoring to avoid possible name clashes on case-insensitive systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9065
diff changeset
1547 class TestingWindow(EricMainWindow):
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1548 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1549 Main window class for the standalone dialog.
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1550 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1551
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1552 def __init__(self, testfile=None, parent=None):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1553 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1554 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1555
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1556 @param testfile file name of the test script to open
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1557 @type str
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1558 @param parent reference to the parent widget
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1559 @type QWidget
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1560 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1561 super().__init__(parent)
10303
ee1aadab1215 Changed code to use the 'argparse' module to parse the command line parameters instead of using own code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10217
diff changeset
1562 self.__cw = TestingWidget(parent=self)
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1563 self.__cw.installEventFilter(self)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1564 size = self.__cw.size()
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1565 self.setCentralWidget(self.__cw)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1566 self.resize(size)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1567
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1568 self.setStyle(Preferences.getUI("Style"), Preferences.getUI("StyleSheet"))
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1569
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1570 self.__cw.buttonBox.accepted.connect(self.close)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1571 self.__cw.buttonBox.rejected.connect(self.close)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1572
10303
ee1aadab1215 Changed code to use the 'argparse' module to parse the command line parameters instead of using own code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10217
diff changeset
1573 self.__cw.setTestFile(testfile)
ee1aadab1215 Changed code to use the 'argparse' module to parse the command line parameters instead of using own code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10217
diff changeset
1574
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1575 def eventFilter(self, obj, event):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1576 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1577 Public method to filter events.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1578
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1579 @param obj reference to the object the event is meant for (QObject)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1580 @param event reference to the event object (QEvent)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1581 @return flag indicating, whether the event was handled (boolean)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1582 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1583 if event.type() == QEvent.Type.Close:
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1584 QCoreApplication.exit(0)
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1585 return True
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1586
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1587 return False
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1588
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1589
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1590 def clearSavedHistories(self):
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1591 """
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1592 Function to clear the saved history lists.
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1593 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1594 Preferences.Prefs.rsettings.setValue(recentNameTestDiscoverHistory, [])
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1595 Preferences.Prefs.rsettings.setValue(recentNameTestFileHistory, [])
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1596 Preferences.Prefs.rsettings.setValue(recentNameTestNameHistory, [])
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1597
9059
e7fd342f8bfc Implemented the basic functionality of the new unit test framework.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1598 Preferences.Prefs.rsettings.sync()

eric ide

mercurial