| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -514,6 +514,17 @@ def test_not_in_gc(): | |||
| 514 | 514 | assert hook not in o | |
| 515 | 515 | ||
| 516 | 516 | ||
| 517 | + def test_sys_monitoring_register_callback(): | ||
| 518 | + import sys | ||
| 519 | + | ||
| 520 | + def hook(event, args): | ||
| 521 | + if event.startswith("sys.monitoring"): | ||
| 522 | + print(event, args) | ||
| 523 | + | ||
| 524 | + sys.addaudithook(hook) | ||
| 525 | + sys.monitoring.register_callback(1, 1, None) | ||
| 526 | + | ||
| 527 | + | ||
| 517 | 528 | if __name__ == "__main__": | |
| 518 | 529 | from test.support import suppress_msvcrt_asserts | |
| 519 | 530 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -257,5 +257,18 @@ def test_not_in_gc(self): | |||
| 257 | 257 | self.fail(stderr) | |
| 258 | 258 | ||
| 259 | 259 | ||
| 260 | + def test_sys_monitoring_register_callback(self): | ||
| 261 | + returncode, events, stderr = self.run_python("test_sys_monitoring_register_callback") | ||
| 262 | + if returncode: | ||
| 263 | + self.fail(stderr) | ||
| 264 | + | ||
| 265 | + if support.verbose: | ||
| 266 | + print(*events, sep='\n') | ||
| 267 | + actual = [(ev[0], ev[2]) for ev in events] | ||
| 268 | + expected = [("sys.monitoring.register_callback", "(None,)")] | ||
| 269 | + | ||
| 270 | + self.assertEqual(actual, expected) | ||
| 271 | + | ||
| 272 | + | ||
| 260 | 273 | if __name__ == "__main__": | |
| 261 | 274 | unittest.main() | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,3 @@ | |||
| 1 | + PEP 669 specifies that ``sys.monitoring.register_callback`` will generate an | ||
| 2 | + audit event. Pre-releases of Python 3.12 did not generate the audit event. | ||
| 3 | + This is now fixed. | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1851,6 +1851,9 @@ monitoring_register_callback_impl(PyObject *module, int tool_id, int event, | |||
| 1851 | 1851 | PyErr_Format(PyExc_ValueError, "invalid event %d", event); | |
| 1852 | 1852 | return NULL; | |
| 1853 | 1853 | } | |
| 1854 | + if (PySys_Audit("sys.monitoring.register_callback", "O", func) < 0) { | ||
| 1855 | + return NULL; | ||
| 1856 | + } | ||
| 1854 | 1857 | if (func == Py_None) { | |
| 1855 | 1858 | func = NULL; | |
| 1856 | 1859 | } | |
| Back | FazBrowse Home | New Git URL |
0 commit comments