diff -r 8ab45a4a6d96 -r 8e588f403fd9 src/eric7/Testing/TestingWidget.py --- a/src/eric7/Testing/TestingWidget.py Sun Sep 04 16:11:32 2022 +0200 +++ b/src/eric7/Testing/TestingWidget.py Mon Sep 05 18:08:43 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,7 @@ """ self.__resetResults() self.__updateCoverage() + self.__updateMarkerSupport() @pyqtSlot() def __updateCoverage(self): @@ -703,6 +707,58 @@ 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 on_versionsButton_clicked(self): """ Private slot to show the versions of available plugins. @@ -791,6 +847,7 @@ discoveryStart=discoveryStart, testFilename=testFileName, testName=testName, + testMarkerExpression=self.markerExpressionEdit.text(), failFast=self.failfastCheckBox.isChecked(), failedOnly=failedOnly, collectCoverage=self.coverageCheckBox.isChecked(),