src/eric7/Testing/TestingWidget.py

branch
eric7
changeset 10404
f7d9c31f0c38
parent 10373
093dcebe5ecb
child 10405
df7e1694d0eb
--- 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):
     """

eric ide

mercurial