def test_on_windows_with_no_installations(self, monkeypatch): assert virtualenv.IS_WIN mock_winreg = self.mock_virtualenv_winreg(monkeypatch, {}) installed_pythons = virtualenv.get_installed_pythons() assert installed_pythons == {} assert mock_winreg.mock_calls == [ call.CreateKey(mock_winreg.HKEY_LOCAL_MACHINE, "Software\\Python\\PythonCore"), call.EnumKey(self.key_local_machine, 0), call.CloseKey(self.key_local_machine), call.CreateKey(mock_winreg.HKEY_CURRENT_USER, "Software\\Python\\PythonCore"), call.EnumKey(self.key_current_user, 0), call.CloseKey(self.key_current_user), ]
def test_on_windows(self, monkeypatch): assert virtualenv.IS_WIN mock_winreg = self.mock_virtualenv_winreg( monkeypatch, { self.key_local_machine: ( "2.4", "2.7", "3.2", "3.4", "3.5", # 64-bit only "3.6-32", # 32-bit only "3.7", "3.7-32", # both 32 & 64-bit with a 64-bit user install "3.8", ), # 64-bit with a 32-bit user install self.key_current_user: ("2.5", "2.7", "3.7", "3.8-32"), }, ) monkeypatch.setattr(virtualenv, "join", "{}\\{}".format) installed_pythons = virtualenv.get_installed_pythons() assert installed_pythons == { "2": self.key_current_user + "-2.7-path\\python.exe", "2.4": self.key_local_machine + "-2.4-path\\python.exe", "2.5": self.key_current_user + "-2.5-path\\python.exe", "2.7": self.key_current_user + "-2.7-path\\python.exe", "3": self.key_local_machine + "-3.8-path\\python.exe", "3.2": self.key_local_machine + "-3.2-path\\python.exe", "3.4": self.key_local_machine + "-3.4-path\\python.exe", "3.5": self.key_local_machine + "-3.5-path\\python.exe", "3.5-64": self.key_local_machine + "-3.5-path\\python.exe", "3.6": self.key_local_machine + "-3.6-32-path\\python.exe", "3.6-32": self.key_local_machine + "-3.6-32-path\\python.exe", "3.7": self.key_current_user + "-3.7-path\\python.exe", "3.7-32": self.key_local_machine + "-3.7-32-path\\python.exe", "3.7-64": self.key_current_user + "-3.7-path\\python.exe", "3.8": self.key_local_machine + "-3.8-path\\python.exe", "3.8-32": self.key_current_user + "-3.8-32-path\\python.exe", "3.8-64": self.key_local_machine + "-3.8-path\\python.exe", } assert mock_winreg.mock_calls == [ call.CreateKey(mock_winreg.HKEY_LOCAL_MACHINE, "Software\\Python\\PythonCore"), call.EnumKey(self.key_local_machine, 0), call.QueryValue(self.key_local_machine, "2.4\\InstallPath"), call.EnumKey(self.key_local_machine, 1), call.QueryValue(self.key_local_machine, "2.7\\InstallPath"), call.EnumKey(self.key_local_machine, 2), call.QueryValue(self.key_local_machine, "3.2\\InstallPath"), call.EnumKey(self.key_local_machine, 3), call.QueryValue(self.key_local_machine, "3.4\\InstallPath"), call.EnumKey(self.key_local_machine, 4), call.QueryValue(self.key_local_machine, "3.5\\InstallPath"), call.EnumKey(self.key_local_machine, 5), call.QueryValue(self.key_local_machine, "3.6-32\\InstallPath"), call.EnumKey(self.key_local_machine, 6), call.QueryValue(self.key_local_machine, "3.7\\InstallPath"), call.EnumKey(self.key_local_machine, 7), call.QueryValue(self.key_local_machine, "3.7-32\\InstallPath"), call.EnumKey(self.key_local_machine, 8), call.QueryValue(self.key_local_machine, "3.8\\InstallPath"), call.EnumKey(self.key_local_machine, 9), call.CloseKey(self.key_local_machine), call.CreateKey(mock_winreg.HKEY_CURRENT_USER, "Software\\Python\\PythonCore"), call.EnumKey(self.key_current_user, 0), call.QueryValue(self.key_current_user, "2.5\\InstallPath"), call.EnumKey(self.key_current_user, 1), call.QueryValue(self.key_current_user, "2.7\\InstallPath"), call.EnumKey(self.key_current_user, 2), call.QueryValue(self.key_current_user, "3.7\\InstallPath"), call.EnumKey(self.key_current_user, 3), call.QueryValue(self.key_current_user, "3.8-32\\InstallPath"), call.EnumKey(self.key_current_user, 4), call.CloseKey(self.key_current_user), ]