mirror of
https://github.com/python/cpython
synced 2024-10-05 18:25:03 +00:00
[3.12] GH-107774: Add missing audit event for PEP 669 (GH-107775) (#107839)
GH-107774: Add missing audit event for PEP 669 (GH-107775)
(cherry picked from commit 494e3d4436
)
Co-authored-by: Mark Shannon <mark@hotpy.org>
This commit is contained in:
parent
ddca26188d
commit
81d3afae1a
|
@ -514,6 +514,17 @@ def test_not_in_gc():
|
|||
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__":
|
||||
from test.support import suppress_msvcrt_asserts
|
||||
|
||||
|
|
|
@ -257,5 +257,18 @@ def test_not_in_gc(self):
|
|||
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__":
|
||||
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.
|
|
@ -1858,6 +1858,9 @@ monitoring_register_callback_impl(PyObject *module, int tool_id, int event,
|
|||
PyErr_Format(PyExc_ValueError, "invalid event %d", event);
|
||||
return NULL;
|
||||
}
|
||||
if (PySys_Audit("sys.monitoring.register_callback", "O", func) < 0) {
|
||||
return NULL;
|
||||
}
|
||||
if (func == Py_None) {
|
||||
func = NULL;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue