@@ -351,6 +351,10 @@ def filterfunc(record):
351351 finally :
352352 handler .removeFilter (filterfunc )
353353
354+ def test_empty_filter (self ):
355+ f = logging .Filter ()
356+ r = logging .makeLogRecord ({'name' : 'spam.eggs' })
357+ self .assertTrue (f .filter (r ))
354358
355359#
356360# First, we define our levels. There can be as many as you want - the only
@@ -519,11 +523,22 @@ def test_error_handling(self):
519523 h = TestStreamHandler (BadStream ())
520524 r = logging .makeLogRecord ({})
521525 old_raise = logging .raiseExceptions
526+ old_stderr = sys .stderr
522527 try :
523528 h .handle (r )
524529 self .assertIs (h .error_record , r )
530+ h = logging .StreamHandler (BadStream ())
531+ sys .stderr = sio = io .StringIO ()
532+ h .handle (r )
533+ self .assertTrue ('\n RuntimeError: '
534+ 'deliberate mistake\n ' in sio .getvalue ())
535+ logging .raiseExceptions = False
536+ sys .stderr = sio = io .StringIO ()
537+ h .handle (r )
538+ self .assertEqual ('' , sio .getvalue ())
525539 finally :
526540 logging .raiseExceptions = old_raise
541+ sys .stderr = old_stderr
527542
528543class MemoryHandlerTest (BaseTest ):
529544
@@ -2237,6 +2252,34 @@ def test_time(self):
22372252 f = logging .Formatter ('%(asctime)s %(message)s' )
22382253 self .assertEqual (f .formatTime (r ), '1993-04-21 08:03:00,123' )
22392254 self .assertEqual (f .formatTime (r , '%Y:%d' ), '1993:21' )
2255+ f .format (r )
2256+ self .assertEqual (r .asctime , '1993-04-21 08:03:00,123' )
2257+
2258+ class TestBufferingFormatter (logging .BufferingFormatter ):
2259+ def formatHeader (self , records ):
2260+ return '[(%d)' % len (records )
2261+
2262+ def formatFooter (self , records ):
2263+ return '(%d)]' % len (records )
2264+
2265+ class BufferingFormatterTest (unittest .TestCase ):
2266+ def setUp (self ):
2267+ self .records = [
2268+ logging .makeLogRecord ({'msg' : 'one' }),
2269+ logging .makeLogRecord ({'msg' : 'two' }),
2270+ ]
2271+
2272+ def test_default (self ):
2273+ f = logging .BufferingFormatter ()
2274+ self .assertEqual ('' , f .format ([]))
2275+ self .assertEqual ('onetwo' , f .format (self .records ))
2276+
2277+ def test_custom (self ):
2278+ f = TestBufferingFormatter ()
2279+ self .assertEqual ('[(2)onetwo(2)]' , f .format (self .records ))
2280+ lf = logging .Formatter ('<%(message)s>' )
2281+ f = TestBufferingFormatter (lf )
2282+ self .assertEqual ('[(2)<one><two>(2)]' , f .format (self .records ))
22402283
22412284class ExceptionTest (BaseTest ):
22422285 def test_formatting (self ):
@@ -2957,7 +3000,7 @@ def test_main():
29573000 CustomLevelsAndFiltersTest , HandlerTest , MemoryHandlerTest ,
29583001 ConfigFileTest , SocketHandlerTest , MemoryTest ,
29593002 EncodingTest , WarningsTest , ConfigDictTest , ManagerTest ,
2960- FormatterTest , StreamHandlerTest ,
3003+ FormatterTest , BufferingFormatterTest , StreamHandlerTest ,
29613004 LogRecordFactoryTest , ChildLoggerTest , QueueHandlerTest ,
29623005 ShutdownTest , ModuleLevelMiscTest , BasicConfigTest ,
29633006 LoggerAdapterTest , LoggerTest ,
0 commit comments