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

Reply via email to