Commit 4fb0d089 authored by Vinay Sajip's avatar Vinay Sajip

More test_logging coverage improvements.

parent 49fcc4a2
......@@ -890,7 +890,7 @@ class Handler(Filterer):
None, sys.stderr)
sys.stderr.write('Logged from file %s, line %s\n' % (
record.filename, record.lineno))
except IOError:
except IOError: #pragma: no cover
pass # see issue 5971
finally:
del ei
......
......@@ -30,7 +30,7 @@ import types, io
try:
import _thread as thread
import threading
except ImportError:
except ImportError: #pragma: no cover
thread = None
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
stopListening().
"""
if not thread:
if not thread: #pragma: no cover
raise NotImplementedError("listen() needs threading to work")
class ConfigStreamHandler(StreamRequestHandler):
......@@ -825,7 +825,7 @@ def listen(port=DEFAULT_LOGGING_CONFIG_PORT):
file = io.StringIO(chunk)
try:
fileConfig(file)
except (KeyboardInterrupt, SystemExit):
except (KeyboardInterrupt, SystemExit): #pragma: no cover
raise
except:
traceback.print_exc()
......
......@@ -31,7 +31,7 @@ import threading
try:
import codecs
except ImportError:
except ImportError: #pragma: no cover
codecs = None
#
......@@ -57,7 +57,7 @@ class BaseRotatingHandler(logging.FileHandler):
"""
Use the specified filename for streamed logging
"""
if codecs is None:
if codecs is None: #pragma: no cover
encoding = None
logging.FileHandler.__init__(self, filename, mode, encoding, delay)
self.mode = mode
......@@ -74,7 +74,7 @@ class BaseRotatingHandler(logging.FileHandler):
if self.shouldRollover(record):
self.doRollover()
logging.FileHandler.emit(self, record)
except (KeyboardInterrupt, SystemExit):
except (KeyboardInterrupt, SystemExit): #pragma: no cover
raise
except:
self.handleError(record)
......@@ -542,7 +542,7 @@ class SocketHandler(logging.Handler):
try:
s = self.makePickle(record)
self.send(s)
except (KeyboardInterrupt, SystemExit):
except (KeyboardInterrupt, SystemExit): #pragma: no cover
raise
except:
self.handleError(record)
......@@ -794,7 +794,7 @@ class SysLogHandler(logging.Handler):
self.socket.sendto(msg, self.address)
else:
self.socket.sendall(msg)
except (KeyboardInterrupt, SystemExit):
except (KeyboardInterrupt, SystemExit): #pragma: no cover
raise
except:
self.handleError(record)
......@@ -871,7 +871,7 @@ class SMTPHandler(logging.Handler):
smtp.login(self.username, self.password)
smtp.sendmail(self.fromaddr, self.toaddrs, msg)
smtp.quit()
except (KeyboardInterrupt, SystemExit):
except (KeyboardInterrupt, SystemExit): #pragma: no cover
raise
except:
self.handleError(record)
......@@ -958,7 +958,7 @@ class NTEventLogHandler(logging.Handler):
type = self.getEventType(record)
msg = self.format(record)
self._welu.ReportEvent(self.appname, id, cat, type, [msg])
except (KeyboardInterrupt, SystemExit):
except (KeyboardInterrupt, SystemExit): #pragma: no cover
raise
except:
self.handleError(record)
......@@ -1043,7 +1043,7 @@ class HTTPHandler(logging.Handler):
h.putheader('Authorization', s)
h.endheaders(data if self.method == "POST" else None)
h.getresponse() #can't do anything with the result
except (KeyboardInterrupt, SystemExit):
except (KeyboardInterrupt, SystemExit): #pragma: no cover
raise
except:
self.handleError(record)
......@@ -1213,7 +1213,7 @@ class QueueHandler(logging.Handler):
"""
try:
self.enqueue(self.prepare(record))
except (KeyboardInterrupt, SystemExit):
except (KeyboardInterrupt, SystemExit): #pragma: no cover
raise
except:
self.handleError(record)
......
......@@ -351,6 +351,10 @@ class BasicFilterTest(BaseTest):
finally:
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
......@@ -519,11 +523,22 @@ class StreamHandlerTest(BaseTest):
h = TestStreamHandler(BadStream())
r = logging.makeLogRecord({})
old_raise = logging.raiseExceptions
old_stderr = sys.stderr
try:
h.handle(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:
logging.raiseExceptions = old_raise
sys.stderr = old_stderr
class MemoryHandlerTest(BaseTest):
......@@ -2237,6 +2252,34 @@ class FormatterTest(unittest.TestCase):
f = logging.Formatter('%(asctime)s %(message)s')
self.assertEqual(f.formatTime(r), '1993-04-21 08:03:00,123')
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):
def test_formatting(self):
......@@ -2957,7 +3000,7 @@ def test_main():
CustomLevelsAndFiltersTest, HandlerTest, MemoryHandlerTest,
ConfigFileTest, SocketHandlerTest, MemoryTest,
EncodingTest, WarningsTest, ConfigDictTest, ManagerTest,
FormatterTest, StreamHandlerTest,
FormatterTest, BufferingFormatterTest, StreamHandlerTest,
LogRecordFactoryTest, ChildLoggerTest, QueueHandlerTest,
ShutdownTest, ModuleLevelMiscTest, BasicConfigTest,
LoggerAdapterTest, LoggerTest,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment