src/eric7/Testing/TestingWidget.py

branch
eric7
changeset 9388
bfe7ea6599a3
parent 9313
6bac6775abb2
child 9413
80c06d472826
--- a/src/eric7/Testing/TestingWidget.py	Wed Oct 05 09:39:15 2022 +0200
+++ b/src/eric7/Testing/TestingWidget.py	Wed Oct 05 16:19:31 2022 +0200
@@ -174,6 +174,7 @@
             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
@@ -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,
@@ -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("")

eric ide

mercurial