mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
GH-107774: Add missing audit event for PEP 669 (GH-107775)
This commit is contained in:
parent
39ef93edb9
commit
494e3d4436
4 changed files with 30 additions and 0 deletions
|
@ -514,6 +514,17 @@ def test_not_in_gc():
|
||||||
assert hook not in o
|
assert hook not in o
|
||||||
|
|
||||||
|
|
||||||
|
def test_sys_monitoring_register_callback():
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def hook(event, args):
|
||||||
|
if event.startswith("sys.monitoring"):
|
||||||
|
print(event, args)
|
||||||
|
|
||||||
|
sys.addaudithook(hook)
|
||||||
|
sys.monitoring.register_callback(1, 1, None)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
from test.support import suppress_msvcrt_asserts
|
from test.support import suppress_msvcrt_asserts
|
||||||
|
|
||||||
|
|
|
@ -257,5 +257,18 @@ class AuditTest(unittest.TestCase):
|
||||||
self.fail(stderr)
|
self.fail(stderr)
|
||||||
|
|
||||||
|
|
||||||
|
def test_sys_monitoring_register_callback(self):
|
||||||
|
returncode, events, stderr = self.run_python("test_sys_monitoring_register_callback")
|
||||||
|
if returncode:
|
||||||
|
self.fail(stderr)
|
||||||
|
|
||||||
|
if support.verbose:
|
||||||
|
print(*events, sep='\n')
|
||||||
|
actual = [(ev[0], ev[2]) for ev in events]
|
||||||
|
expected = [("sys.monitoring.register_callback", "(None,)")]
|
||||||
|
|
||||||
|
self.assertEqual(actual, expected)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
PEP 669 specifies that ``sys.monitoring.register_callback`` will generate an
|
||||||
|
audit event. Pre-releases of Python 3.12 did not generate the audit event.
|
||||||
|
This is now fixed.
|
|
@ -1851,6 +1851,9 @@ monitoring_register_callback_impl(PyObject *module, int tool_id, int event,
|
||||||
PyErr_Format(PyExc_ValueError, "invalid event %d", event);
|
PyErr_Format(PyExc_ValueError, "invalid event %d", event);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
if (PySys_Audit("sys.monitoring.register_callback", "O", func) < 0) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
if (func == Py_None) {
|
if (func == Py_None) {
|
||||||
func = NULL;
|
func = NULL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue