@@ -208,140 +208,72 @@ def test_sys_writestderr(self):
208208
209209    @unittest .skipIf (_testlimitedcapi  is  None , 'need _testlimitedcapi module' ) 
210210    def  test_sys_audit (self ):
211+         # Test PySys_Audit() 
211212        sys_audit  =  _testlimitedcapi .sys_audit 
212- 
213213        audit_events  =  []
214214        def  audit_hook (event , args ):
215215            audit_events .append ((event , args ))
216216            return  None 
217217
218-         import  sys 
219218        sys .addaudithook (audit_hook )
220- 
221219        try :
222-             result  =  sys_audit ("cpython.run_command " , "" )
220+             result  =  sys_audit ("test.event " , "OO"  ,  1 ,  "a "
223221            self .assertEqual (result , 0 )
224-             self .assertEqual (len (audit_events ), 1 )
225-             self .assertEqual (audit_events [- 1 ][0 ], "cpython.run_command" )
226-             self .assertEqual (audit_events [- 1 ][1 ], ())
222+             self .assertEqual (audit_events [- 1 ][0 ], "test.event" )
223+             self .assertEqual (audit_events [- 1 ][1 ], (1 , "a" ))
227224
228-             result  =  sys_audit ("open"  ,  "OOO" ,  " test.txt ""r"  ,  0 )
225+             result  =  sys_audit ("test.no_args " , ""  )
229226            self .assertEqual (result , 0 )
230-             self .assertEqual (len (audit_events ), 2 )
231-             self .assertEqual (audit_events [- 1 ][0 ], "open" )
232-             self .assertEqual (len (audit_events [- 1 ][1 ]), 3 )
233-             self .assertEqual (audit_events [- 1 ][1 ][0 ], "test.txt" )
234-             self .assertEqual (audit_events [- 1 ][1 ][1 ], "r" )
235-             self .assertEqual (audit_events [- 1 ][1 ][2 ], 0 )
236- 
237-             test_dict  =  {"key" : "value" }
238-             test_list  =  [1 , 2 , 3 ]
239-             result  =  sys_audit ("test.objects" , "OO" , test_dict , test_list )
240-             self .assertEqual (result , 0 )
241-             self .assertEqual (len (audit_events ), 3 )
242-             self .assertEqual (audit_events [- 1 ][0 ], "test.objects" )
243-             self .assertEqual (audit_events [- 1 ][1 ][0 ], test_dict )
244-             self .assertEqual (audit_events [- 1 ][1 ][1 ], test_list )
227+             self .assertEqual (audit_events [- 1 ][0 ], "test.no_args" )
228+             self .assertEqual (audit_events [- 1 ][1 ], ())
229+ 
230+             with  self .assertRaises (TypeError ):
231+                 sys_audit (123 , "O" , 1 )
245232
246-             result  =  sys_audit ("test.mixed_types " , "OOO " , "string" ,  42 ,  123456789 )
233+             result  =  sys_audit ("テスト.イベント " , "O " , 42 )
247234            self .assertEqual (result , 0 )
248-             self .assertEqual (len (audit_events ), 4 )
249-             self .assertEqual (audit_events [- 1 ][0 ], "test.mixed_types" )
250-             self .assertEqual (audit_events [- 1 ][1 ][0 ], "string" )
251-             self .assertEqual (audit_events [- 1 ][1 ][1 ], 42 )
252-             self .assertEqual (audit_events [- 1 ][1 ][2 ], 123456789 )
235+             self .assertEqual (audit_events [- 1 ][0 ], "テスト.イベント" )
236+             self .assertEqual (audit_events [- 1 ][1 ], (42 ,))
253237
238+             with  self .assertRaises (UnicodeDecodeError ):
239+                 sys_audit (b"test.non_utf8\xff " , "O" , 1 )
254240        finally :
255241            sys .audit_hooks  =  []
256242
257-         result  =  sys_audit ("cpython.run_file" , "" )
258-         self .assertEqual (result , 0 )
259- 
260-         result  =  sys_audit ("os.chdir" , "(O)" , "/tmp" )
261-         self .assertEqual (result , 0 )
262- 
263-         result  =  sys_audit ("ctypes.dlopen" , "O" , "libc.so.6" )
264-         self .assertEqual (result , 0 )
265- 
266-         self .assertRaises (TypeError , sys_audit , 123 , "O" , "arg" )
267-         self .assertRaises (TypeError , sys_audit , None , "O" , "arg" )
268-         self .assertRaises (TypeError , sys_audit , ["not" , "a" , "string" ], "O" , "arg" )
269- 
270-         self .assertRaises (TypeError , sys_audit , "test.event" , 456 , "arg" )
271-         self .assertRaises (TypeError , sys_audit , "test.event" , None , "arg" )
272-         self .assertRaises (TypeError , sys_audit , "test.event" , {"format" : "string" }, "arg" )
273- 
274243    @unittest .skipIf (_testlimitedcapi  is  None , 'need _testlimitedcapi module' ) 
275244    def  test_sys_audittuple (self ):
245+         # Test PySys_AuditTuple() 
276246        sys_audittuple  =  _testlimitedcapi .sys_audittuple 
277- 
278-         # Test with audit hook to verify internal behavior 
279247        audit_events  =  []
280248        def  audit_hook (event , args ):
281249            audit_events .append ((event , args ))
282250            return  None 
283251
284-         import  sys 
285252        sys .addaudithook (audit_hook )
286- 
287253        try :
288-             result  =  sys_audittuple ("cpython.run_command" , ())
289-             self .assertEqual (result , 0 )
290-             self .assertEqual (len (audit_events ), 1 )
291-             self .assertEqual (audit_events [- 1 ][0 ], "cpython.run_command" )
292-             self .assertEqual (audit_events [- 1 ][1 ], ())
293- 
294-             result  =  sys_audittuple ("os.chdir" , ("/tmp" ,))
254+             result  =  sys_audittuple ("test.event" , (1 , "a" ))
295255            self .assertEqual (result , 0 )
296-             self .assertEqual (len (audit_events ), 2 )
297-             self .assertEqual (audit_events [- 1 ][0 ], "os.chdir" )
298-             self .assertEqual (audit_events [- 1 ][1 ], ("/tmp" ,))
256+             self .assertEqual (audit_events [- 1 ][0 ], "test.event" )
257+             self .assertEqual (audit_events [- 1 ][1 ], (1 , "a" ))
299258
300-             result  =  sys_audittuple ("open"  , ( " test.txt" ,  "r" ,  0 ) )
259+             result  =  sys_audittuple ("test.null_tuple"  )
301260            self .assertEqual (result , 0 )
302-             self .assertEqual (len (audit_events ), 3 )
303-             self .assertEqual (audit_events [- 1 ][0 ], "open" )
304-             self .assertEqual (audit_events [- 1 ][1 ], ("test.txt" , "r" , 0 ))
261+             self .assertEqual (audit_events [- 1 ][0 ], "test.null_tuple" )
262+             self .assertEqual (audit_events [- 1 ][1 ], ())
305263
306-             test_dict  =  {"key" : "value" }
307-             test_list  =  [1 , 2 , 3 ]
308-             result  =  sys_audittuple ("test.objects" , (test_dict , test_list ))
309-             self .assertEqual (result , 0 )
310-             self .assertEqual (len (audit_events ), 4 )
311-             self .assertEqual (audit_events [- 1 ][0 ], "test.objects" )
312-             self .assertEqual (audit_events [- 1 ][1 ][0 ], test_dict )
313-             self .assertEqual (audit_events [- 1 ][1 ][1 ], test_list )
264+             with  self .assertRaises (TypeError ):
265+                 sys_audittuple ("test.bad_tuple" , [1 , 2 ])
314266
315-             result  =  sys_audittuple ("test.complex " , ("text" ,  3.14 ,  True ,  None ))
267+             result  =  sys_audittuple ("テスト.イベント " , (42 , ))
316268            self .assertEqual (result , 0 )
317-             self .assertEqual (len (audit_events ), 5 )
318-             self .assertEqual (audit_events [- 1 ][0 ], "test.complex" )
319-             self .assertEqual (audit_events [- 1 ][1 ][0 ], "text" )
320-             self .assertEqual (audit_events [- 1 ][1 ][1 ], 3.14 )
321-             self .assertEqual (audit_events [- 1 ][1 ][2 ], True )
322-             self .assertEqual (audit_events [- 1 ][1 ][3 ], None )
269+             self .assertEqual (audit_events [- 1 ][0 ], "テスト.イベント" )
270+             self .assertEqual (audit_events [- 1 ][1 ], (42 ,))
323271
272+             with  self .assertRaises (UnicodeDecodeError ):
273+                 sys_audittuple (b"test.non_utf8\xff " , (1 ,))
324274        finally :
325275            sys .audit_hooks  =  []
326276
327-         result  =  sys_audittuple ("cpython.run_file" , ())
328-         self .assertEqual (result , 0 )
329- 
330-         result  =  sys_audittuple ("ctypes.dlopen" , ("libc.so.6" ,))
331-         self .assertEqual (result , 0 )
332- 
333-         result  =  sys_audittuple ("sqlite3.connect" , ("test.db" ,))
334-         self .assertEqual (result , 0 )
335- 
336-         self .assertRaises (TypeError , sys_audittuple , 123 , ("arg" ,))
337-         self .assertRaises (TypeError , sys_audittuple , None , ("arg" ,))
338-         self .assertRaises (TypeError , sys_audittuple , ["not" , "a" , "string" ], ("arg" ,))
339- 
340-         self .assertRaises (TypeError , sys_audittuple , "test.event" , "not_a_tuple" )
341-         self .assertRaises (TypeError , sys_audittuple , "test.event" , ["list" , "not" , "tuple" ])
342-         self .assertRaises (TypeError , sys_audittuple , "test.event" , {"dict" : "not_tuple" })
343-         self .assertRaises (TypeError , sys_audittuple , "test.event" , None )
344- 
345277
346278if  __name__  ==  "__main__" :
347279    unittest .main ()
0 commit comments