src/eric7/Testing/TestingWidget.py

branch
eric7-maintenance
changeset 9371
1da8bc75946f
parent 9264
18a7312cfdb3
parent 9313
6bac6775abb2
child 9442
906485dcd210
diff -r 90dc02c8a384 -r 1da8bc75946f src/eric7/Testing/TestingWidget.py
--- a/src/eric7/Testing/TestingWidget.py	Fri Sep 02 14:10:44 2022 +0200
+++ b/src/eric7/Testing/TestingWidget.py	Sat Oct 01 13:06:10 2022 +0200
@@ -82,6 +82,7 @@
 
         self.versionsButton.setIcon(UI.PixmapCache.getIcon("info"))
         self.clearHistoriesButton.setIcon(UI.PixmapCache.getIcon("clearPrivateData"))
+        self.showMarkersButton.setIcon(UI.PixmapCache.getIcon("select"))
 
         self.testsuitePicker.setMode(EricPathPickerModes.OPEN_FILE_MODE)
         self.testsuitePicker.setInsertPolicy(QComboBox.InsertPolicy.InsertAtTop)
@@ -205,6 +206,8 @@
         self.__testExecutor = None
         self.__recentLog = ""
 
+        self.__markersWindow = None
+
         # connect some signals
         self.discoveryPicker.editTextChanged.connect(self.__resetResults)
         self.testsuitePicker.editTextChanged.connect(self.__resetResults)
@@ -681,6 +684,8 @@
         """
         self.__resetResults()
         self.__updateCoverage()
+        self.__updateMarkerSupport()
+        self.__updatePatternSupport()
 
     @pyqtSlot()
     def __updateCoverage(self):
@@ -703,6 +708,77 @@
             self.coverageCheckBox.setChecked(False)
 
     @pyqtSlot()
+    def __updateMarkerSupport(self):
+        """
+        Private slot to update the state of the marker related widgets depending on
+        the selected framework's capabilities.
+        """
+        supportsMarkers = False
+
+        venvName = self.venvComboBox.currentText()
+        if venvName:
+            framework = self.frameworkComboBox.currentText()
+            if framework:
+                interpreter = self.__venvManager.getVirtualenvInterpreter(venvName)
+                executor = self.__frameworkRegistry.createExecutor(framework, self)
+                supportsMarkers = executor.supportsMarkers(interpreter)
+
+        # 1. marker expression line edit
+        self.markerExpressionEdit.setEnabled(supportsMarkers)
+        if not supportsMarkers:
+            self.markerExpressionEdit.clear()
+
+        # 2. show markers button
+        self.showMarkersButton.setEnabled(supportsMarkers)
+        if self.__markersWindow is not None:
+            self.__markersWindow.close()
+
+    @pyqtSlot()
+    def on_showMarkersButton_clicked(self):
+        """
+        Private slot to show a window containing the list of defined markers.
+        """
+        venvName = self.venvComboBox.currentText()
+        if venvName:
+            framework = self.frameworkComboBox.currentText()
+            if framework:
+                if self.discoverCheckBox.isChecked():
+                    workdir = self.discoveryPicker.currentText()
+                elif self.testsuitePicker.currentText():
+                    workdir = os.path.dirname(self.testsuitePicker.currentText())
+                else:
+                    workdir = ""
+
+                interpreter = self.__venvManager.getVirtualenvInterpreter(venvName)
+                executor = self.__frameworkRegistry.createExecutor(framework, self)
+                markers = executor.getMarkers(interpreter, workdir)
+
+                if self.__markersWindow is None:
+                    from .MarkersWindow import MarkersWindow
+
+                    self.__markersWindow = MarkersWindow()
+                self.__markersWindow.showMarkers(markers)
+
+    @pyqtSlot()
+    def __updatePatternSupport(self):
+        """
+        Private slot to update the state of the test name pattern line edit depending on
+        the selected framework's capabilities.
+        """
+        supportsPatterns = False
+
+        venvName = self.venvComboBox.currentText()
+        if venvName:
+            framework = self.frameworkComboBox.currentText()
+            if framework:
+                interpreter = self.__venvManager.getVirtualenvInterpreter(venvName)
+                executor = self.__frameworkRegistry.createExecutor(framework, self)
+                supportsPatterns = executor.supportsPatterns(interpreter)
+
+        self.testNamePatternEdit.setEnabled(supportsPatterns)
+        self.testNamePatternEdit.clear()
+
+    @pyqtSlot()
     def on_versionsButton_clicked(self):
         """
         Private slot to show the versions of available plugins.
@@ -791,6 +867,8 @@
             discoveryStart=discoveryStart,
             testFilename=testFileName,
             testName=testName,
+            testNamePattern=self.testNamePatternEdit.text(),
+            testMarkerExpression=self.markerExpressionEdit.text(),
             failFast=self.failfastCheckBox.isChecked(),
             failedOnly=failedOnly,
             collectCoverage=self.coverageCheckBox.isChecked(),

eric ide

mercurial