More test_logging coverage improvements.

This commit is contained in:
Vinay Sajip 2011-04-26 19:34:04 +01:00
parent 26fe4b70cf
commit 985ef87ea0
4 changed files with 57 additions and 14 deletions

View file

@ -890,7 +890,7 @@ class Handler(Filterer):
None, sys.stderr) None, sys.stderr)
sys.stderr.write('Logged from file %s, line %s\n' % ( sys.stderr.write('Logged from file %s, line %s\n' % (
record.filename, record.lineno)) record.filename, record.lineno))
except IOError: except IOError: #pragma: no cover
pass # see issue 5971 pass # see issue 5971
finally: finally:
del ei del ei

View file

@ -30,7 +30,7 @@ import types, io
try: try:
import _thread as thread import _thread as thread
import threading import threading
except ImportError: except ImportError: #pragma: no cover
thread = None thread = None
from socketserver import ThreadingTCPServer, StreamRequestHandler from socketserver import ThreadingTCPServer, StreamRequestHandler
@ -786,7 +786,7 @@ def listen(port=DEFAULT_LOGGING_CONFIG_PORT):
and which you can join() when appropriate. To stop the server, call and which you can join() when appropriate. To stop the server, call
stopListening(). stopListening().
""" """
if not thread: if not thread: #pragma: no cover
raise NotImplementedError("listen() needs threading to work") raise NotImplementedError("listen() needs threading to work")
class ConfigStreamHandler(StreamRequestHandler): class ConfigStreamHandler(StreamRequestHandler):
@ -825,7 +825,7 @@ def listen(port=DEFAULT_LOGGING_CONFIG_PORT):
file = io.StringIO(chunk) file = io.StringIO(chunk)
try: try:
fileConfig(file) fileConfig(file)
except (KeyboardInterrupt, SystemExit): except (KeyboardInterrupt, SystemExit): #pragma: no cover
raise raise
except: except:
traceback.print_exc() traceback.print_exc()

View file

@ -31,7 +31,7 @@ import threading
try: try:
import codecs import codecs
except ImportError: except ImportError: #pragma: no cover
codecs = None codecs = None
# #
@ -57,7 +57,7 @@ class BaseRotatingHandler(logging.FileHandler):
""" """
Use the specified filename for streamed logging Use the specified filename for streamed logging
""" """
if codecs is None: if codecs is None: #pragma: no cover
encoding = None encoding = None
logging.FileHandler.__init__(self, filename, mode, encoding, delay) logging.FileHandler.__init__(self, filename, mode, encoding, delay)
self.mode = mode self.mode = mode
@ -74,7 +74,7 @@ class BaseRotatingHandler(logging.FileHandler):
if self.shouldRollover(record): if self.shouldRollover(record):
self.doRollover() self.doRollover()
logging.FileHandler.emit(self, record) logging.FileHandler.emit(self, record)
except (KeyboardInterrupt, SystemExit): except (KeyboardInterrupt, SystemExit): #pragma: no cover
raise raise
except: except:
self.handleError(record) self.handleError(record)
@ -542,7 +542,7 @@ class SocketHandler(logging.Handler):
try: try:
s = self.makePickle(record) s = self.makePickle(record)
self.send(s) self.send(s)
except (KeyboardInterrupt, SystemExit): except (KeyboardInterrupt, SystemExit): #pragma: no cover
raise raise
except: except:
self.handleError(record) self.handleError(record)
@ -794,7 +794,7 @@ class SysLogHandler(logging.Handler):
self.socket.sendto(msg, self.address) self.socket.sendto(msg, self.address)
else: else:
self.socket.sendall(msg) self.socket.sendall(msg)
except (KeyboardInterrupt, SystemExit): except (KeyboardInterrupt, SystemExit): #pragma: no cover
raise raise
except: except:
self.handleError(record) self.handleError(record)
@ -871,7 +871,7 @@ class SMTPHandler(logging.Handler):
smtp.login(self.username, self.password) smtp.login(self.username, self.password)
smtp.sendmail(self.fromaddr, self.toaddrs, msg) smtp.sendmail(self.fromaddr, self.toaddrs, msg)
smtp.quit() smtp.quit()
except (KeyboardInterrupt, SystemExit): except (KeyboardInterrupt, SystemExit): #pragma: no cover
raise raise
except: except:
self.handleError(record) self.handleError(record)
@ -958,7 +958,7 @@ class NTEventLogHandler(logging.Handler):
type = self.getEventType(record) type = self.getEventType(record)
msg = self.format(record) msg = self.format(record)
self._welu.ReportEvent(self.appname, id, cat, type, [msg]) self._welu.ReportEvent(self.appname, id, cat, type, [msg])
except (KeyboardInterrupt, SystemExit): except (KeyboardInterrupt, SystemExit): #pragma: no cover
raise raise
except: except:
self.handleError(record) self.handleError(record)
@ -1043,7 +1043,7 @@ class HTTPHandler(logging.Handler):
h.putheader('Authorization', s) h.putheader('Authorization', s)
h.endheaders(data if self.method == "POST" else None) h.endheaders(data if self.method == "POST" else None)
h.getresponse() #can't do anything with the result h.getresponse() #can't do anything with the result
except (KeyboardInterrupt, SystemExit): except (KeyboardInterrupt, SystemExit): #pragma: no cover
raise raise
except: except:
self.handleError(record) self.handleError(record)
@ -1213,7 +1213,7 @@ class QueueHandler(logging.Handler):
""" """
try: try:
self.enqueue(self.prepare(record)) self.enqueue(self.prepare(record))
except (KeyboardInterrupt, SystemExit): except (KeyboardInterrupt, SystemExit): #pragma: no cover
raise raise
except: except:
self.handleError(record) self.handleError(record)

View file

@ -351,6 +351,10 @@ class BasicFilterTest(BaseTest):
finally: finally:
handler.removeFilter(filterfunc) handler.removeFilter(filterfunc)
def test_empty_filter(self):
f = logging.Filter()
r = logging.makeLogRecord({'name': 'spam.eggs'})
self.assertTrue(f.filter(r))
# #
# First, we define our levels. There can be as many as you want - the only # First, we define our levels. There can be as many as you want - the only
@ -519,11 +523,22 @@ class StreamHandlerTest(BaseTest):
h = TestStreamHandler(BadStream()) h = TestStreamHandler(BadStream())
r = logging.makeLogRecord({}) r = logging.makeLogRecord({})
old_raise = logging.raiseExceptions old_raise = logging.raiseExceptions
old_stderr = sys.stderr
try: try:
h.handle(r) h.handle(r)
self.assertIs(h.error_record, r) self.assertIs(h.error_record, r)
h = logging.StreamHandler(BadStream())
sys.stderr = sio = io.StringIO()
h.handle(r)
self.assertTrue('\nRuntimeError: '
'deliberate mistake\n' in sio.getvalue())
logging.raiseExceptions = False
sys.stderr = sio = io.StringIO()
h.handle(r)
self.assertEqual('', sio.getvalue())
finally: finally:
logging.raiseExceptions = old_raise logging.raiseExceptions = old_raise
sys.stderr = old_stderr
class MemoryHandlerTest(BaseTest): class MemoryHandlerTest(BaseTest):
@ -2237,6 +2252,34 @@ class FormatterTest(unittest.TestCase):
f = logging.Formatter('%(asctime)s %(message)s') f = logging.Formatter('%(asctime)s %(message)s')
self.assertEqual(f.formatTime(r), '1993-04-21 08:03:00,123') self.assertEqual(f.formatTime(r), '1993-04-21 08:03:00,123')
self.assertEqual(f.formatTime(r, '%Y:%d'), '1993:21') self.assertEqual(f.formatTime(r, '%Y:%d'), '1993:21')
f.format(r)
self.assertEqual(r.asctime, '1993-04-21 08:03:00,123')
class TestBufferingFormatter(logging.BufferingFormatter):
def formatHeader(self, records):
return '[(%d)' % len(records)
def formatFooter(self, records):
return '(%d)]' % len(records)
class BufferingFormatterTest(unittest.TestCase):
def setUp(self):
self.records = [
logging.makeLogRecord({'msg': 'one'}),
logging.makeLogRecord({'msg': 'two'}),
]
def test_default(self):
f = logging.BufferingFormatter()
self.assertEqual('', f.format([]))
self.assertEqual('onetwo', f.format(self.records))
def test_custom(self):
f = TestBufferingFormatter()
self.assertEqual('[(2)onetwo(2)]', f.format(self.records))
lf = logging.Formatter('<%(message)s>')
f = TestBufferingFormatter(lf)
self.assertEqual('[(2)<one><two>(2)]', f.format(self.records))
class ExceptionTest(BaseTest): class ExceptionTest(BaseTest):
def test_formatting(self): def test_formatting(self):
@ -2957,7 +3000,7 @@ def test_main():
CustomLevelsAndFiltersTest, HandlerTest, MemoryHandlerTest, CustomLevelsAndFiltersTest, HandlerTest, MemoryHandlerTest,
ConfigFileTest, SocketHandlerTest, MemoryTest, ConfigFileTest, SocketHandlerTest, MemoryTest,
EncodingTest, WarningsTest, ConfigDictTest, ManagerTest, EncodingTest, WarningsTest, ConfigDictTest, ManagerTest,
FormatterTest, StreamHandlerTest, FormatterTest, BufferingFormatterTest, StreamHandlerTest,
LogRecordFactoryTest, ChildLoggerTest, QueueHandlerTest, LogRecordFactoryTest, ChildLoggerTest, QueueHandlerTest,
ShutdownTest, ModuleLevelMiscTest, BasicConfigTest, ShutdownTest, ModuleLevelMiscTest, BasicConfigTest,
LoggerAdapterTest, LoggerTest, LoggerAdapterTest, LoggerTest,