--- 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("")