[pypy-commit] pypy default: enhance rwinreg to more easily allow python2 to 3, 'fix' test to properly skip
mattip
pypy.commits at gmail.com
Mon Jan 1 16:10:54 EST 2018
Author: Matti Picus <matti.picus at gmail.com>
Branch:
Changeset: r93606:c5b147d52043
Date: 2017-12-30 23:00 +0200
http://bitbucket.org/pypy/pypy/changeset/c5b147d52043/
Log: enhance rwinreg to more easily allow python2 to 3, 'fix' test to
properly skip
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',))
@@ -174,6 +174,7 @@
raises(EnvironmentError, EnumKey, key, 1)
def test_delete(self):
+ # 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)
@@ -189,6 +190,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)
More information about the pypy-commit
mailing list