@@ -1115,8 +1115,7 @@ class SMTPHandlerTest(BaseTest):
11151115 # bpo-14314, bpo-19665, bpo-34092: don't wait forever
11161116 TIMEOUT = support .LONG_TIMEOUT
11171117
1118- # TODO: RUSTPYTHON
1119- @unittest .skip (reason = "RUSTPYTHON hangs" )
1118+ @unittest .skip ("TODO: RUSTPYTHON; hangs" )
11201119 def test_basic (self ):
11211120 sockmap = {}
11221121 server = TestSMTPServer ((socket_helper .HOST , 0 ), self .process_message , 0.001 ,
@@ -2154,8 +2153,7 @@ def handle_request(self, request):
21542153 request .end_headers ()
21552154 self .handled .set ()
21562155
2157- # TODO: RUSTPYTHON
2158- @unittest .skip ("TODO: RUSTPYTHON; flaky test" )
2156+ @unittest .skip ('TODO: RUSTPYTHON; flaky test' )
21592157 def test_output (self ):
21602158 # The log message sent to the HTTPHandler is properly received.
21612159 logger = logging .getLogger ("http" )
@@ -4060,8 +4058,7 @@ def _mpinit_issue121723(qspec, message_to_log):
40604058 # log a message (this creates a record put in the queue)
40614059 logging .getLogger ().info (message_to_log )
40624060
4063- # TODO: RUSTPYTHON; ImportError: cannot import name 'SemLock'
4064- @unittest .expectedFailure
4061+ @unittest .expectedFailure # TODO: RUSTPYTHON; ImportError: cannot import name 'SemLock'
40654062 @skip_if_tsan_fork
40664063 @support .requires_subprocess ()
40674064 def test_multiprocessing_queues (self ):
@@ -4121,8 +4118,7 @@ def test_90195(self):
41214118 # Logger should be enabled, since explicitly mentioned
41224119 self .assertFalse (logger .disabled )
41234120
4124- # TODO: RUSTPYTHON; ImportError: cannot import name 'SemLock'
4125- @unittest .expectedFailure
4121+ @unittest .expectedFailure # TODO: RUSTPYTHON; ImportError: cannot import name 'SemLock'
41264122 def test_111615 (self ):
41274123 # See gh-111615
41284124 import_helper .import_module ('_multiprocessing' ) # see gh-113692
@@ -4171,91 +4167,6 @@ def __init__(self, *args, **kwargs):
41714167 handler = logging .getHandlerByName ('custom' )
41724168 self .assertEqual (handler .custom_kwargs , custom_kwargs )
41734169
4174- # TODO: RUSTPYTHON; ImportError: cannot import name 'SemLock'
4175- @unittest .expectedFailure
4176- # See gh-91555 and gh-90321
4177- @support .requires_subprocess ()
4178- def test_deadlock_in_queue (self ):
4179- queue = multiprocessing .Queue ()
4180- handler = logging .handlers .QueueHandler (queue )
4181- logger = multiprocessing .get_logger ()
4182- level = logger .level
4183- try :
4184- logger .setLevel (logging .DEBUG )
4185- logger .addHandler (handler )
4186- logger .debug ("deadlock" )
4187- finally :
4188- logger .setLevel (level )
4189- logger .removeHandler (handler )
4190-
4191- def test_recursion_in_custom_handler (self ):
4192- class BadHandler (logging .Handler ):
4193- def __init__ (self ):
4194- super ().__init__ ()
4195- def emit (self , record ):
4196- logger .debug ("recurse" )
4197- logger = logging .getLogger ("test_recursion_in_custom_handler" )
4198- logger .addHandler (BadHandler ())
4199- logger .setLevel (logging .DEBUG )
4200- logger .debug ("boom" )
4201-
4202- @threading_helper .requires_working_threading ()
4203- def test_thread_supression_noninterference (self ):
4204- lock = threading .Lock ()
4205- logger = logging .getLogger ("test_thread_supression_noninterference" )
4206-
4207- # Block on the first call, allow others through
4208- #
4209- # NOTE: We need to bypass the base class's lock, otherwise that will
4210- # block multiple calls to the same handler itself.
4211- class BlockOnceHandler (TestHandler ):
4212- def __init__ (self , barrier ):
4213- super ().__init__ (support .Matcher ())
4214- self .barrier = barrier
4215-
4216- def createLock (self ):
4217- self .lock = None
4218-
4219- def handle (self , record ):
4220- self .emit (record )
4221-
4222- def emit (self , record ):
4223- if self .barrier :
4224- barrier = self .barrier
4225- self .barrier = None
4226- barrier .wait ()
4227- with lock :
4228- pass
4229- super ().emit (record )
4230- logger .info ("blow up if not supressed" )
4231-
4232- barrier = threading .Barrier (2 )
4233- handler = BlockOnceHandler (barrier )
4234- logger .addHandler (handler )
4235- logger .setLevel (logging .DEBUG )
4236-
4237- t1 = threading .Thread (target = logger .debug , args = ("1" ,))
4238- with lock :
4239-
4240- # Ensure first thread is blocked in the handler, hence supressing logging...
4241- t1 .start ()
4242- barrier .wait ()
4243-
4244- # ...but the second thread should still be able to log...
4245- t2 = threading .Thread (target = logger .debug , args = ("2" ,))
4246- t2 .start ()
4247- t2 .join (timeout = 3 )
4248-
4249- self .assertEqual (len (handler .buffer ), 1 )
4250- self .assertTrue (handler .matches (levelno = logging .DEBUG , message = '2' ))
4251-
4252- # The first thread should still be blocked here
4253- self .assertTrue (t1 .is_alive ())
4254-
4255- # Now the lock has been released the first thread should complete
4256- t1 .join ()
4257- self .assertEqual (len (handler .buffer ), 2 )
4258- self .assertTrue (handler .matches (levelno = logging .DEBUG , message = '1' ))
42594170
42604171class ManagerTest (BaseTest ):
42614172 def test_manager_loggerclass (self ):
@@ -4663,8 +4574,7 @@ def test_dollars(self):
46634574 f = logging .Formatter ('${asctime}--' , style = '$' )
46644575 self .assertTrue (f .usesTime ())
46654576
4666- # TODO: RUSTPYTHON; ValueError: Unexpected error parsing format string
4667- @unittest .expectedFailure
4577+ @unittest .expectedFailure # TODO: RUSTPYTHON; ValueError: Unexpected error parsing format string
46684578 def test_format_validate (self ):
46694579 # Check correct formatting
46704580 # Percentage style
@@ -4838,8 +4748,7 @@ def test_defaults_parameter(self):
48384748 def test_invalid_style (self ):
48394749 self .assertRaises (ValueError , logging .Formatter , None , None , 'x' )
48404750
4841- # TODO: RUSTPYTHON; AttributeError: 'struct_time' object has no attribute 'tm_gmtoff'
4842- @unittest .expectedFailure
4751+ @unittest .expectedFailure # TODO: RUSTPYTHON; AttributeError: 'struct_time' object has no attribute 'tm_gmtoff'
48434752 def test_time (self ):
48444753 r = self .get_record ()
48454754 dt = datetime .datetime (1993 , 4 , 21 , 8 , 3 , 0 , 0 , utc )
@@ -4854,8 +4763,7 @@ def test_time(self):
48544763 f .format (r )
48554764 self .assertEqual (r .asctime , '1993-04-21 08:03:00,123' )
48564765
4857- # TODO: RUSTPYTHON; AttributeError: 'struct_time' object has no attribute 'tm_gmtoff'
4858- @unittest .expectedFailure
4766+ @unittest .expectedFailure # TODO: RUSTPYTHON; AttributeError: 'struct_time' object has no attribute 'tm_gmtoff'
48594767 def test_default_msec_format_none (self ):
48604768 class NoMsecFormatter (logging .Formatter ):
48614769 default_msec_format = None
@@ -5257,8 +5165,7 @@ def __init__(self, name='MyLogger', level=logging.NOTSET):
52575165 h .close ()
52585166 logging .setLoggerClass (logging .Logger )
52595167
5260- # TODO: RUSTPYTHON
5261- @unittest .expectedFailure
5168+ @unittest .expectedFailure # TODO: RUSTPYTHON
52625169 def test_logging_at_shutdown (self ):
52635170 # bpo-20037: Doing text I/O late at interpreter shutdown must not crash
52645171 code = textwrap .dedent ("""
@@ -5278,8 +5185,7 @@ def __del__(self):
52785185 self .assertIn ("exception in __del__" , err )
52795186 self .assertIn ("ValueError: some error" , err )
52805187
5281- # TODO: RUSTPYTHON
5282- @unittest .expectedFailure
5188+ @unittest .expectedFailure # TODO: RUSTPYTHON
52835189 def test_logging_at_shutdown_open (self ):
52845190 # bpo-26789: FileHandler keeps a reference to the builtin open()
52855191 # function to be able to open or reopen the file during Python
@@ -6480,8 +6386,7 @@ def rotator(source, dest):
64806386 rh .close ()
64816387
64826388class TimedRotatingFileHandlerTest (BaseFileTest ):
6483- # TODO: RUSTPYTHON
6484- @unittest .expectedFailureIfWindows ("TODO: RUSTPYTHON" )
6389+ @unittest .expectedFailureIfWindows ('TODO: RUSTPYTHON' )
64856390 @unittest .skipIf (support .is_wasi , "WASI does not have /dev/null." )
64866391 def test_should_not_rollover (self ):
64876392 # See bpo-45401. Should only ever rollover regular files
@@ -6535,8 +6440,7 @@ def test_rollover(self):
65356440 print (tf .read ())
65366441 self .assertTrue (found , msg = msg )
65376442
6538- # TODO: RUSTPYTHON
6539- @unittest .expectedFailureIfWindows ("TODO: RUSTPYTHON" )
6443+ @unittest .expectedFailureIfWindows ('TODO: RUSTPYTHON' )
65406444 def test_rollover_at_midnight (self , weekly = False ):
65416445 os_helper .unlink (self .fn )
65426446 now = datetime .datetime .now ()
@@ -6580,8 +6484,7 @@ def test_rollover_at_midnight(self, weekly=False):
65806484 for i , line in enumerate (f ):
65816485 self .assertIn (f'testing1 { i } ' , line )
65826486
6583- # TODO: RUSTPYTHON
6584- @unittest .expectedFailureIfWindows ("TODO: RUSTPYTHON" )
6487+ @unittest .expectedFailureIfWindows ('TODO: RUSTPYTHON' )
65856488 def test_rollover_at_weekday (self ):
65866489 self .test_rollover_at_midnight (weekly = True )
65876490
0 commit comments