80 self.__resultsTree.goto.connect(self.__showSource) |
80 self.__resultsTree.goto.connect(self.__showSource) |
81 self.resultsGroupBox.layout().addWidget(self.__resultsTree) |
81 self.resultsGroupBox.layout().addWidget(self.__resultsTree) |
82 |
82 |
83 self.versionsButton.setIcon(UI.PixmapCache.getIcon("info")) |
83 self.versionsButton.setIcon(UI.PixmapCache.getIcon("info")) |
84 self.clearHistoriesButton.setIcon(UI.PixmapCache.getIcon("clearPrivateData")) |
84 self.clearHistoriesButton.setIcon(UI.PixmapCache.getIcon("clearPrivateData")) |
|
85 self.showMarkersButton.setIcon(UI.PixmapCache.getIcon("select")) |
85 |
86 |
86 self.testsuitePicker.setMode(EricPathPickerModes.OPEN_FILE_MODE) |
87 self.testsuitePicker.setMode(EricPathPickerModes.OPEN_FILE_MODE) |
87 self.testsuitePicker.setInsertPolicy(QComboBox.InsertPolicy.InsertAtTop) |
88 self.testsuitePicker.setInsertPolicy(QComboBox.InsertPolicy.InsertAtTop) |
88 self.testsuitePicker.setSizeAdjustPolicy( |
89 self.testsuitePicker.setSizeAdjustPolicy( |
89 QComboBox.SizeAdjustPolicy.AdjustToMinimumContentsLengthWithIcon |
90 QComboBox.SizeAdjustPolicy.AdjustToMinimumContentsLengthWithIcon |
202 self.__coverageDialog = None |
203 self.__coverageDialog = None |
203 |
204 |
204 self.__editors = [] |
205 self.__editors = [] |
205 self.__testExecutor = None |
206 self.__testExecutor = None |
206 self.__recentLog = "" |
207 self.__recentLog = "" |
|
208 |
|
209 self.__markersWindow = None |
207 |
210 |
208 # connect some signals |
211 # connect some signals |
209 self.discoveryPicker.editTextChanged.connect(self.__resetResults) |
212 self.discoveryPicker.editTextChanged.connect(self.__resetResults) |
210 self.testsuitePicker.editTextChanged.connect(self.__resetResults) |
213 self.testsuitePicker.editTextChanged.connect(self.__resetResults) |
211 self.testComboBox.editTextChanged.connect(self.__resetResults) |
214 self.testComboBox.editTextChanged.connect(self.__resetResults) |
679 @param index index of the selected framework |
682 @param index index of the selected framework |
680 @type int |
683 @type int |
681 """ |
684 """ |
682 self.__resetResults() |
685 self.__resetResults() |
683 self.__updateCoverage() |
686 self.__updateCoverage() |
|
687 self.__updateMarkerSupport() |
684 |
688 |
685 @pyqtSlot() |
689 @pyqtSlot() |
686 def __updateCoverage(self): |
690 def __updateCoverage(self): |
687 """ |
691 """ |
688 Private slot to update the state of the coverage checkbox depending on |
692 Private slot to update the state of the coverage checkbox depending on |
699 hasCoverage = executor.hasCoverage(interpreter) |
703 hasCoverage = executor.hasCoverage(interpreter) |
700 |
704 |
701 self.coverageCheckBox.setEnabled(hasCoverage) |
705 self.coverageCheckBox.setEnabled(hasCoverage) |
702 if not hasCoverage: |
706 if not hasCoverage: |
703 self.coverageCheckBox.setChecked(False) |
707 self.coverageCheckBox.setChecked(False) |
|
708 |
|
709 @pyqtSlot() |
|
710 def __updateMarkerSupport(self): |
|
711 """ |
|
712 Private slot to update the state of the marker related widgets depending on |
|
713 the selected framework's capabilities. |
|
714 """ |
|
715 supportsMarkers = False |
|
716 |
|
717 venvName = self.venvComboBox.currentText() |
|
718 if venvName: |
|
719 framework = self.frameworkComboBox.currentText() |
|
720 if framework: |
|
721 interpreter = self.__venvManager.getVirtualenvInterpreter(venvName) |
|
722 executor = self.__frameworkRegistry.createExecutor(framework, self) |
|
723 supportsMarkers = executor.supportsMarkers(interpreter) |
|
724 |
|
725 # 1. marker expression line edit |
|
726 self.markerExpressionEdit.setEnabled(supportsMarkers) |
|
727 if not supportsMarkers: |
|
728 self.markerExpressionEdit.clear() |
|
729 |
|
730 # 2. show markers button |
|
731 self.showMarkersButton.setEnabled(supportsMarkers) |
|
732 if self.__markersWindow is not None: |
|
733 self.__markersWindow.close() |
|
734 |
|
735 @pyqtSlot() |
|
736 def on_showMarkersButton_clicked(self): |
|
737 """ |
|
738 Private slot to show a window containing the list of defined markers. |
|
739 """ |
|
740 venvName = self.venvComboBox.currentText() |
|
741 if venvName: |
|
742 framework = self.frameworkComboBox.currentText() |
|
743 if framework: |
|
744 if self.discoverCheckBox.isChecked(): |
|
745 workdir = self.discoveryPicker.currentText() |
|
746 elif self.testsuitePicker.currentText(): |
|
747 workdir = os.path.dirname(self.testsuitePicker.currentText()) |
|
748 else: |
|
749 workdir = "" |
|
750 |
|
751 interpreter = self.__venvManager.getVirtualenvInterpreter(venvName) |
|
752 executor = self.__frameworkRegistry.createExecutor(framework, self) |
|
753 markers = executor.getMarkers(interpreter, workdir) |
|
754 |
|
755 if self.__markersWindow is None: |
|
756 from .MarkersWindow import MarkersWindow |
|
757 |
|
758 self.__markersWindow = MarkersWindow() |
|
759 self.__markersWindow.showMarkers(markers) |
704 |
760 |
705 @pyqtSlot() |
761 @pyqtSlot() |
706 def on_versionsButton_clicked(self): |
762 def on_versionsButton_clicked(self): |
707 """ |
763 """ |
708 Private slot to show the versions of available plugins. |
764 Private slot to show the versions of available plugins. |
789 interpreter=interpreter, |
845 interpreter=interpreter, |
790 discover=discover, |
846 discover=discover, |
791 discoveryStart=discoveryStart, |
847 discoveryStart=discoveryStart, |
792 testFilename=testFileName, |
848 testFilename=testFileName, |
793 testName=testName, |
849 testName=testName, |
|
850 testMarkerExpression=self.markerExpressionEdit.text(), |
794 failFast=self.failfastCheckBox.isChecked(), |
851 failFast=self.failfastCheckBox.isChecked(), |
795 failedOnly=failedOnly, |
852 failedOnly=failedOnly, |
796 collectCoverage=self.coverageCheckBox.isChecked(), |
853 collectCoverage=self.coverageCheckBox.isChecked(), |
797 eraseCoverage=self.coverageEraseCheckBox.isChecked(), |
854 eraseCoverage=self.coverageEraseCheckBox.isChecked(), |
798 coverageFile=coverageFile, |
855 coverageFile=coverageFile, |