mirror of
https://github.com/python/cpython.git
synced 2025-11-25 21:11:09 +00:00
bpo-39007: Add auditing events to functions in winreg (GH-17541)
Also allows winreg.CloseKey() to accept same types as other functions.
This commit is contained in:
parent
b8cbe74c34
commit
ee17e37356
5 changed files with 217 additions and 26 deletions
|
|
@ -304,6 +304,29 @@ def test_unraisablehook():
|
|||
write_unraisable_exc(RuntimeError("nonfatal-error"), "for audit hook test", None)
|
||||
|
||||
|
||||
def test_winreg():
|
||||
from winreg import OpenKey, EnumKey, CloseKey, HKEY_LOCAL_MACHINE
|
||||
|
||||
def hook(event, args):
|
||||
if not event.startswith("winreg."):
|
||||
return
|
||||
print(event, *args)
|
||||
|
||||
sys.addaudithook(hook)
|
||||
|
||||
k = OpenKey(HKEY_LOCAL_MACHINE, "Software")
|
||||
EnumKey(k, 0)
|
||||
try:
|
||||
EnumKey(k, 10000)
|
||||
except OSError:
|
||||
pass
|
||||
else:
|
||||
raise RuntimeError("Expected EnumKey(HKLM, 10000) to fail")
|
||||
|
||||
kv = k.Detach()
|
||||
CloseKey(kv)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
from test.libregrtest.setup import suppress_msvcrt_asserts
|
||||
|
||||
|
|
|
|||
|
|
@ -104,6 +104,20 @@ class AuditTest(unittest.TestCase):
|
|||
"RuntimeError('nonfatal-error') Exception ignored for audit hook test",
|
||||
)
|
||||
|
||||
def test_winreg(self):
|
||||
support.import_module("winreg")
|
||||
returncode, events, stderr = self.run_python("test_winreg")
|
||||
if returncode:
|
||||
self.fail(stderr)
|
||||
|
||||
self.assertEqual(events[0][0], "winreg.OpenKey")
|
||||
self.assertEqual(events[1][0], "winreg.OpenKey/result")
|
||||
expected = events[1][2]
|
||||
self.assertTrue(expected)
|
||||
self.assertSequenceEqual(["winreg.EnumKey", " ", f"{expected} 0"], events[2])
|
||||
self.assertSequenceEqual(["winreg.EnumKey", " ", f"{expected} 10000"], events[3])
|
||||
self.assertSequenceEqual(["winreg.PyHKEY.Detach", " ", expected], events[4])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue