Author: Matti Picus <matti.pi...@gmail.com> Branch: py3.5 Changeset: r93607:6c36fd9c5c97 Date: 2017-12-30 23:00 +0200 http://bitbucket.org/pypy/pypy/changeset/6c36fd9c5c97/
Log: enhance rwinreg to more easily allow python2 to 3, 'fix' test to properly skip (grafted from c5b147d52043e8eafbe5abbb435a7ad46c4f712f) diff --git a/pypy/module/_winreg/test/test_winreg.py b/pypy/module/_winreg/test/test_winreg.py --- a/pypy/module/_winreg/test/test_winreg.py +++ b/pypy/module/_winreg/test/test_winreg.py @@ -12,11 +12,11 @@ priv_flags = win32security.TOKEN_ADJUST_PRIVILEGES | win32security.TOKEN_QUERY hToken = win32security.OpenProcessToken (win32api.GetCurrentProcess (), priv_flags) privilege_id = win32security.LookupPrivilegeValue (None, "SeBackupPrivilege") - win32security.AdjustTokenPrivileges (hToken, 0, [(privilege_id, win32security.SE_PRIVILEGE_ENABLED)]) + ret = win32security.AdjustTokenPrivileges (hToken, 0, [(privilege_id, win32security.SE_PRIVILEGE_ENABLED)]) except: canSaveKey = False else: - canSaveKey = True + canSaveKey = len(ret) > 0 class AppTestHKey: #spaceconfig = dict(usemodules=('_winreg',)) @@ -177,7 +177,8 @@ raises(EnvironmentError, EnumKey, key, 1) def test_delete(self): - from winreg import OpenKey, KEY_ALL_ACCESS, DeleteValue, DeleteKey + # must be run after test_SetValueEx + from _winreg import OpenKey, KEY_ALL_ACCESS, DeleteValue, DeleteKey key = OpenKey(self.root_key, self.test_key_name, 0, KEY_ALL_ACCESS) sub_key = OpenKey(key, "sub_key", 0, KEY_ALL_ACCESS) @@ -192,6 +193,7 @@ h.Close() def test_savekey(self): + # must be run after test_SetValueEx if not self.canSaveKey: skip("CPython needs win32api to set the SeBackupPrivilege security privilege") from winreg import OpenKey, KEY_ALL_ACCESS, SaveKey diff --git a/rpython/rlib/rwinreg.py b/rpython/rlib/rwinreg.py --- a/rpython/rlib/rwinreg.py +++ b/rpython/rlib/rwinreg.py @@ -47,71 +47,72 @@ HKEY = rwin32.HANDLE PHKEY = rffi.CArrayPtr(HKEY) REGSAM = rwin32.DWORD +suffix = 'A' RegSetValue = external( - 'RegSetValueA', + 'RegSetValue' + suffix, [HKEY, rffi.CCHARP, rwin32.DWORD, rffi.CCHARP, rwin32.DWORD], rffi.LONG) RegSetValueEx = external( - 'RegSetValueExA', + 'RegSetValueEx' + suffix, [HKEY, rffi.CCHARP, rwin32.DWORD, rwin32.DWORD, rffi.CCHARP, rwin32.DWORD], rffi.LONG) RegQueryValue = external( - 'RegQueryValueA', + 'RegQueryValue' + suffix, [HKEY, rffi.CCHARP, rffi.CCHARP, rwin32.PLONG], rffi.LONG) RegQueryValueEx = external( - 'RegQueryValueExA', + 'RegQueryValueEx' + suffix, [HKEY, rffi.CCHARP, rwin32.LPDWORD, rwin32.LPDWORD, rffi.CCHARP, rwin32.LPDWORD], rffi.LONG) RegCreateKey = external( - 'RegCreateKeyA', + 'RegCreateKey' + suffix, [HKEY, rffi.CCHARP, PHKEY], rffi.LONG) RegCreateKeyEx = external( - 'RegCreateKeyExA', + 'RegCreateKeyEx' + suffix, [HKEY, rffi.CCHARP, rwin32.DWORD, rffi.CCHARP, rwin32.DWORD, REGSAM, rffi.VOIDP, PHKEY, rwin32.LPDWORD], rffi.LONG) RegDeleteValue = external( - 'RegDeleteValueA', + 'RegDeleteValue' + suffix, [HKEY, rffi.CCHARP], rffi.LONG) RegDeleteKey = external( - 'RegDeleteKeyA', + 'RegDeleteKey' + suffix, [HKEY, rffi.CCHARP], rffi.LONG) RegOpenKeyEx = external( - 'RegOpenKeyExA', + 'RegOpenKeyEx' + suffix, [HKEY, rffi.CCHARP, rwin32.DWORD, REGSAM, PHKEY], rffi.LONG) RegEnumValue = external( - 'RegEnumValueA', + 'RegEnumValue' + suffix, [HKEY, rwin32.DWORD, rffi.CCHARP, rwin32.LPDWORD, rwin32.LPDWORD, rwin32.LPDWORD, rffi.CCHARP, rwin32.LPDWORD], rffi.LONG) RegEnumKeyEx = external( - 'RegEnumKeyExA', + 'RegEnumKeyEx' + suffix, [HKEY, rwin32.DWORD, rffi.CCHARP, rwin32.LPDWORD, rwin32.LPDWORD, rffi.CCHARP, rwin32.LPDWORD, rwin32.PFILETIME], rffi.LONG) RegQueryInfoKey = external( - 'RegQueryInfoKeyA', + 'RegQueryInfoKey' + suffix, [HKEY, rffi.CCHARP, rwin32.LPDWORD, rwin32.LPDWORD, rwin32.LPDWORD, rwin32.LPDWORD, rwin32.LPDWORD, rwin32.LPDWORD, rwin32.LPDWORD, rwin32.LPDWORD, @@ -129,17 +130,17 @@ rffi.LONG) RegLoadKey = external( - 'RegLoadKeyA', + 'RegLoadKey' + suffix, [HKEY, rffi.CCHARP, rffi.CCHARP], rffi.LONG) RegSaveKey = external( - 'RegSaveKeyA', + 'RegSaveKey' + suffix, [HKEY, rffi.CCHARP, rffi.VOIDP], rffi.LONG) RegConnectRegistry = external( - 'RegConnectRegistryA', + 'RegConnectRegistry' + suffix, [rffi.CCHARP, HKEY, PHKEY], rffi.LONG) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit