@@ -4311,8 +4311,6 @@ def test_formatting(self):
43114311 self .assertEqual (formatted_msg , log_record .msg )
43124312 self .assertEqual (formatted_msg , log_record .message )
43134313
4314- @unittest .skipUnless (hasattr (logging .handlers , 'QueueListener' ),
4315- 'logging.handlers.QueueListener required for this test' )
43164314 def test_queue_listener (self ):
43174315 handler = TestHandler (support .Matcher ())
43184316 listener = logging .handlers .QueueListener (self .queue , handler )
@@ -4347,8 +4345,17 @@ def test_queue_listener(self):
43474345 self .assertTrue (handler .matches (levelno = logging .CRITICAL , message = '6' ))
43484346 handler .close ()
43494347
4350- @unittest .skipUnless (hasattr (logging .handlers , 'QueueListener' ),
4351- 'logging.handlers.QueueListener required for this test' )
4348+ def test_queue_listener_context_manager (self ):
4349+ handler = TestHandler (support .Matcher ())
4350+ with logging .handlers .QueueListener (self .queue , handler ) as listener :
4351+ self .assertIsInstance (listener , logging .handlers .QueueListener )
4352+ self .assertIsNotNone (listener ._thread )
4353+ self .assertIsNone (listener ._thread )
4354+
4355+ # doesn't hurt to call stop() more than once.
4356+ listener .stop ()
4357+ self .assertIsNone (listener ._thread )
4358+
43524359 def test_queue_listener_with_StreamHandler (self ):
43534360 # Test that traceback and stack-info only appends once (bpo-34334, bpo-46755).
43544361 listener = logging .handlers .QueueListener (self .queue , self .root_hdlr )
@@ -4363,8 +4370,6 @@ def test_queue_listener_with_StreamHandler(self):
43634370 self .assertEqual (self .stream .getvalue ().strip ().count ('Traceback' ), 1 )
43644371 self .assertEqual (self .stream .getvalue ().strip ().count ('Stack' ), 1 )
43654372
4366- @unittest .skipUnless (hasattr (logging .handlers , 'QueueListener' ),
4367- 'logging.handlers.QueueListener required for this test' )
43684373 def test_queue_listener_with_multiple_handlers (self ):
43694374 # Test that queue handler format doesn't affect other handler formats (bpo-35726).
43704375 self .que_hdlr .setFormatter (self .root_formatter )
0 commit comments