diff -r ea3320d5e8e9 -r f7d9c31f0c38 src/eric7/Testing/TestingWidget.py --- a/src/eric7/Testing/TestingWidget.py Tue Dec 12 09:35:39 2023 +0100 +++ b/src/eric7/Testing/TestingWidget.py Tue Dec 12 16:43:51 2023 +0100 @@ -33,7 +33,7 @@ from .Interfaces import Frameworks from .Interfaces.TestExecutorBase import TestConfig, TestResult, TestResultCategory from .Interfaces.TestFrameworkRegistry import TestFrameworkRegistry -from .TestResultsTree import TestResultsModel, TestResultsTreeView +from .TestResultsTree import TestResultsFilterModel, TestResultsModel, TestResultsTreeView from .Ui_TestingWidget import Ui_TestingWidget @@ -73,8 +73,10 @@ self.__resultsModel = TestResultsModel(self) self.__resultsModel.summary.connect(self.__setStatusLabel) + self.__resultFilterModel = TestResultsFilterModel(self) + self.__resultFilterModel.setSourceModel(self.__resultsModel) self.__resultsTree = TestResultsTreeView(self) - self.__resultsTree.setModel(self.__resultsModel) + self.__resultsTree.setModel(self.__resultFilterModel) self.__resultsTree.goto.connect(self.__showSource) self.resultsGroupBox.layout().addWidget(self.__resultsTree) @@ -99,6 +101,8 @@ ) self.testComboBox.lineEdit().setClearButtonEnabled(True) + self.__allFilter = self.tr("<all>") + # create some more dialog buttons for orchestration self.__showLogButton = self.buttonBox.addButton( self.tr("Show Output..."), QDialogButtonBox.ButtonRole.ActionRole @@ -932,8 +936,10 @@ name=name, id=id, message=desc, + filename=filename, + lineno=lineno, ) - for id, name, desc in testNames + for id, name, desc, filename, lineno in testNames ] self.__resultsModel.addTestResults(testResults) self.__resultsTree.resizeColumns() @@ -1029,6 +1035,7 @@ self.__testExecutor = None self.__adjustPendingState() + self.__updateStatusFilterComboBox() @pyqtSlot(int, float) def __testRunFinished(self, noTests, duration): @@ -1064,6 +1071,7 @@ executor. """ self.__resultsModel.clear() + self.statusFilterComboBox.clear() def __adjustPendingState(self): """ @@ -1202,6 +1210,26 @@ with contextlib.suppress(RuntimeError): editor.close() + @pyqtSlot(str) + def on_statusFilterComboBox_currentTextChanged(self, status): + """ + Private slot handling the selection of a status for items to be shown. + + @param status selected status + @type str + """ + # TODO: not yet implemented + if status == self.__allFilter: + status = "" + + self.__resultFilterModel.setStatusFilterString(status) + + def __updateStatusFilterComboBox(self): + statusFilters = self.__resultsModel.getStatusFilterList() + self.statusFilterComboBox.clear() + self.statusFilterComboBox.addItem(self.__allFilter) + self.statusFilterComboBox.addItems(sorted(statusFilters)) + class TestingWindow(EricMainWindow): """