@@ -4336,8 +4336,40 @@ def test_queue_listener(self):
43364336 self .assertTrue (handler .matches (levelno = logging .CRITICAL , message = '6' ))
43374337 handler .close ()
43384338
4339- @unittest .skipUnless (hasattr (logging .handlers , 'QueueListener' ),
4340- 'logging.handlers.QueueListener required for this test' )
4339+ def test_queue_listener_context_manager (self ):
4340+ handler = TestHandler (support .Matcher ())
4341+ with logging .handlers .QueueListener (self .queue , handler ) as listener :
4342+ self .assertIsInstance (listener , logging .handlers .QueueListener )
4343+ self .assertIsNotNone (listener ._thread )
4344+ self .assertIsNone (listener ._thread )
4345+
4346+ # doesn't hurt to call stop() more than once.
4347+ listener .stop ()
4348+ self .assertIsNone (listener ._thread )
4349+
4350+ def test_queue_listener_context_manager (self ):
4351+ handler = TestHandler (support .Matcher ())
4352+ with logging .handlers .QueueListener (self .queue , handler ) as listener :
4353+ self .assertIsInstance (listener , logging .handlers .QueueListener )
4354+ self .assertIsNotNone (listener ._thread )
4355+ self .assertIsNone (listener ._thread )
4356+
4357+ # doesn't hurt to call stop() more than once.
4358+ listener .stop ()
4359+ self .assertIsNone (listener ._thread )
4360+
4361+ def test_queue_listener_multi_start (self ):
4362+ handler = TestHandler (support .Matcher ())
4363+ with logging .handlers .QueueListener (self .queue , handler ) as listener :
4364+ self .assertRaises (RuntimeError , listener .start )
4365+
4366+ with listener :
4367+ self .assertRaises (RuntimeError , listener .start )
4368+
4369+ listener .start ()
4370+ listener .stop ()
4371+
4372+ > >> >> >> 5863 cd70b87 ... gh - 132106 : Ensure that running `logging.handlers.QueueListener` cannot be started again (GH - 132444 )
43414373 def test_queue_listener_with_StreamHandler (self ):
43424374 # Test that traceback and stack-info only appends once (bpo-34334, bpo-46755).
43434375 listener = logging .handlers .QueueListener (self .queue , self .root_hdlr )
0 commit comments