src/eric7/Testing/TestingWidget.py

branch
eric7-maintenance
changeset 9442
906485dcd210
parent 9371
1da8bc75946f
parent 9413
80c06d472826
child 9549
67295777d9fe
diff -r f23c43e18046 -r 906485dcd210 src/eric7/Testing/TestingWidget.py
--- a/src/eric7/Testing/TestingWidget.py	Sun Oct 02 11:44:07 2022 +0200
+++ b/src/eric7/Testing/TestingWidget.py	Sat Oct 29 15:24:59 2022 +0200
@@ -15,10 +15,10 @@
 from PyQt6.QtCore import pyqtSignal, pyqtSlot, Qt, QEvent, QCoreApplication
 from PyQt6.QtWidgets import QAbstractButton, QComboBox, QDialogButtonBox, QWidget
 
-from EricWidgets import EricMessageBox
-from EricWidgets.EricApplication import ericApp
-from EricWidgets.EricMainWindow import EricMainWindow
-from EricWidgets.EricPathPicker import EricPathPickerModes
+from eric7.EricWidgets import EricMessageBox
+from eric7.EricWidgets.EricApplication import ericApp
+from eric7.EricWidgets.EricMainWindow import EricMainWindow
+from eric7.EricWidgets.EricPathPicker import EricPathPickerModes
 
 from .Ui_TestingWidget import Ui_TestingWidget
 
@@ -27,10 +27,10 @@
 from .Interfaces.TestExecutorBase import TestConfig, TestResult, TestResultCategory
 from .Interfaces.TestFrameworkRegistry import TestFrameworkRegistry
 
-import Preferences
-import UI.PixmapCache
+from eric7 import Preferences
+from eric7.EricGui import EricPixmapCache
 
-from Globals import (
+from eric7.Globals import (
     recentNameTestDiscoverHistory,
     recentNameTestFileHistory,
     recentNameTestNameHistory,
@@ -80,9 +80,9 @@
         self.__resultsTree.goto.connect(self.__showSource)
         self.resultsGroupBox.layout().addWidget(self.__resultsTree)
 
-        self.versionsButton.setIcon(UI.PixmapCache.getIcon("info"))
-        self.clearHistoriesButton.setIcon(UI.PixmapCache.getIcon("clearPrivateData"))
-        self.showMarkersButton.setIcon(UI.PixmapCache.getIcon("select"))
+        self.versionsButton.setIcon(EricPixmapCache.getIcon("info"))
+        self.clearHistoriesButton.setIcon(EricPixmapCache.getIcon("clearPrivateData"))
+        self.showMarkersButton.setIcon(EricPixmapCache.getIcon("select"))
 
         self.testsuitePicker.setMode(EricPathPickerModes.OPEN_FILE_MODE)
         self.testsuitePicker.setInsertPolicy(QComboBox.InsertPolicy.InsertAtTop)
@@ -165,7 +165,7 @@
         self.setWindowFlags(
             self.windowFlags() | Qt.WindowType.WindowContextHelpButtonHint
         )
-        self.setWindowIcon(UI.PixmapCache.getIcon("eric"))
+        self.setWindowIcon(EricPixmapCache.getIcon("eric"))
         self.setWindowTitle(self.tr("Testing"))
 
         try:
@@ -174,9 +174,10 @@
             self.__project = ericApp().getObject("Project")
             self.__project.projectOpened.connect(self.__projectOpened)
             self.__project.projectClosed.connect(self.__projectClosed)
+            self.__projectEnvironmentMarker = self.tr("<project>")
         except KeyError:
             # we were called as a standalone application
-            from VirtualEnv.VirtualenvManager import VirtualenvManager
+            from eric7.VirtualEnv.VirtualenvManager import VirtualenvManager
 
             self.__venvManager = VirtualenvManager(self)
             self.__venvManager.virtualEnvironmentAdded.connect(
@@ -191,6 +192,7 @@
             ericApp().registerObject("VirtualEnvManager", self.__venvManager)
 
             self.__project = None
+            self.__projectEnvironmentMarker = ""
 
         self.__discoverHistory = []
         self.__fileHistory = []
@@ -238,6 +240,20 @@
 
         self.tabWidget.setCurrentIndex(0)
 
+    def __determineInterpreter(self, venvName):
+        """
+        Private method to determine the interpreter to be used.
+
+        @param venvName name of the virtual environment
+        @type str
+        @return path of the interpreter executable
+        @rtype str
+        """
+        if self.__project and venvName == self.__projectEnvironmentMarker:
+            return self.__project.getProjectInterpreter()
+        else:
+            return self.__venvManager.getVirtualenvInterpreter(venvName)
+
     def __populateVenvComboBox(self):
         """
         Private method to (re-)populate the virtual environments selector.
@@ -248,6 +264,8 @@
 
         self.venvComboBox.clear()
         self.venvComboBox.addItem("")
+        if self.__project and self.__project.isOpen():
+            self.venvComboBox.addItem(self.__projectEnvironmentMarker)
         self.venvComboBox.addItems(sorted(self.__venvManager.getVirtualenvNames()))
         self.venvComboBox.setCurrentText(currentText)
 
@@ -262,9 +280,7 @@
         self.frameworkComboBox.clear()
 
         if bool(self.venvComboBox.currentText()):
-            interpreter = self.__venvManager.getVirtualenvInterpreter(
-                self.venvComboBox.currentText()
-            )
+            interpreter = self.__determineInterpreter(self.venvComboBox.currentText())
             self.frameworkComboBox.addItem("")
             for index, (name, executor) in enumerate(
                 sorted(self.__frameworkRegistry.getFrameworks().items()), start=1
@@ -699,7 +715,7 @@
         if venvName:
             framework = self.frameworkComboBox.currentText()
             if framework:
-                interpreter = self.__venvManager.getVirtualenvInterpreter(venvName)
+                interpreter = self.__determineInterpreter(venvName)
                 executor = self.__frameworkRegistry.createExecutor(framework, self)
                 hasCoverage = executor.hasCoverage(interpreter)
 
@@ -719,7 +735,7 @@
         if venvName:
             framework = self.frameworkComboBox.currentText()
             if framework:
-                interpreter = self.__venvManager.getVirtualenvInterpreter(venvName)
+                interpreter = self.__determineInterpreter(venvName)
                 executor = self.__frameworkRegistry.createExecutor(framework, self)
                 supportsMarkers = executor.supportsMarkers(interpreter)
 
@@ -749,7 +765,7 @@
                 else:
                     workdir = ""
 
-                interpreter = self.__venvManager.getVirtualenvInterpreter(venvName)
+                interpreter = self.__determineInterpreter(venvName)
                 executor = self.__frameworkRegistry.createExecutor(framework, self)
                 markers = executor.getMarkers(interpreter, workdir)
 
@@ -771,7 +787,7 @@
         if venvName:
             framework = self.frameworkComboBox.currentText()
             if framework:
-                interpreter = self.__venvManager.getVirtualenvInterpreter(venvName)
+                interpreter = self.__determineInterpreter(venvName)
                 executor = self.__frameworkRegistry.createExecutor(framework, self)
                 supportsPatterns = executor.supportsPatterns(interpreter)
 
@@ -787,7 +803,7 @@
         if venvName:
             headerText = self.tr("<h3>Versions of Frameworks and their" " Plugins</h3>")
             versionsText = ""
-            interpreter = self.__venvManager.getVirtualenvInterpreter(venvName)
+            interpreter = self.__determineInterpreter(venvName)
             for framework in sorted(self.__frameworkRegistry.getFrameworks().keys()):
                 executor = self.__frameworkRegistry.createExecutor(framework, self)
                 versions = executor.getVersions(interpreter)
@@ -858,9 +874,7 @@
             )
         else:
             coverageFile = ""
-        interpreter = self.__venvManager.getVirtualenvInterpreter(
-            self.__recentEnvironment
-        )
+        interpreter = self.__determineInterpreter(self.__recentEnvironment)
         config = TestConfig(
             interpreter=interpreter,
             discover=discover,
@@ -1080,7 +1094,7 @@
         run.
         """
         if self.__coverageDialog is None:
-            from DataViews.PyCoverageDialog import PyCoverageDialog
+            from eric7.DataViews.PyCoverageDialog import PyCoverageDialog
 
             self.__coverageDialog = PyCoverageDialog(self)
             self.__coverageDialog.openFile.connect(self.__openEditor)
@@ -1099,7 +1113,7 @@
         """
         Private slot to show the output of the most recent test run.
         """
-        from EricWidgets.EricPlainTextDialog import EricPlainTextDialog
+        from eric7.EricWidgets.EricPlainTextDialog import EricPlainTextDialog
 
         dlg = EricPlainTextDialog(
             title=self.tr("Test Run Output"), text=self.__recentLog
@@ -1121,7 +1135,8 @@
         """
         Private slot to handle a project being opened.
         """
-        self.venvComboBox.setCurrentText(self.__project.getProjectVenv())
+        self.venvComboBox.insertItem(1, self.__projectEnvironmentMarker)
+        self.venvComboBox.setCurrentIndex(1)
         self.frameworkComboBox.setCurrentText(
             self.__project.getProjectTestingFramework()
         )
@@ -1132,6 +1147,7 @@
         """
         Private slot to handle a project being closed.
         """
+        self.venvComboBox.removeItem(1)  # <project> is always at index 1
         self.venvComboBox.setCurrentText("")
         self.frameworkComboBox.setCurrentText("")
         self.__insertDiscovery("")
@@ -1164,7 +1180,7 @@
         @param linenumber line number to place the cursor at (defaults to 1)
         @type int (optional)
         """
-        from QScintilla.MiniEditor import MiniEditor
+        from eric7.QScintilla.MiniEditor import MiniEditor
 
         editor = MiniEditor(filename, "Python3", self)
         editor.gotoLine(linenumber)

eric ide

mercurial