use context manager for log testing

This commit is contained in:
Deniz Turgut 2020-05-09 19:30:21 +03:00
commit c19075816b
No known key found for this signature in database
GPG key ID: 87B7168D7AB3ED2F

View file

@ -1,6 +1,7 @@
import logging import logging
import unittest import unittest
from collections import defaultdict from collections import defaultdict
from contextlib import contextmanager
from pelican import log from pelican import log
from pelican.tests.support import LogCountHandler from pelican.tests.support import LogCountHandler
@ -24,55 +25,59 @@ class TestLog(unittest.TestCase):
log.LimitFilter._threshold = 5 log.LimitFilter._threshold = 5
log.LimitFilter._group_count = defaultdict(int) log.LimitFilter._group_count = defaultdict(int)
@contextmanager
def reset_logger(self):
try:
yield None
finally:
self._reset_limit_filter()
self.handler.flush()
def test_log_filter(self): def test_log_filter(self):
def do_logging(): def do_logging():
for i in range(5): for i in range(5):
self.logger.warning('Log %s', i) self.logger.warning('Log %s', i)
self.logger.warning('Another log %s', i) self.logger.warning('Another log %s', i)
# no filter # no filter
do_logging() with self.reset_logger():
self.assertEqual( do_logging()
self.handler.count_logs('Log \\d', logging.WARNING), self.assertEqual(
5) self.handler.count_logs('Log \\d', logging.WARNING),
self.assertEqual( 5)
self.handler.count_logs('Another log \\d', logging.WARNING), self.assertEqual(
5) self.handler.count_logs('Another log \\d', logging.WARNING),
self.handler.flush() 5)
self._reset_limit_filter()
# filter by template # filter by template
log.LimitFilter._ignore.add((logging.WARNING, 'Log %s')) with self.reset_logger():
do_logging() log.LimitFilter._ignore.add((logging.WARNING, 'Log %s'))
self.assertEqual( do_logging()
self.handler.count_logs('Log \\d', logging.WARNING), self.assertEqual(
0) self.handler.count_logs('Log \\d', logging.WARNING),
self.assertEqual( 0)
self.handler.count_logs('Another log \\d', logging.WARNING), self.assertEqual(
5) self.handler.count_logs('Another log \\d', logging.WARNING),
self.handler.flush() 5)
self._reset_limit_filter()
# filter by exact message # filter by exact message
log.LimitFilter._ignore.add((logging.WARNING, 'Log 3')) with self.reset_logger():
do_logging() log.LimitFilter._ignore.add((logging.WARNING, 'Log 3'))
self.assertEqual( do_logging()
self.handler.count_logs('Log \\d', logging.WARNING), self.assertEqual(
4) self.handler.count_logs('Log \\d', logging.WARNING),
self.assertEqual( 4)
self.handler.count_logs('Another log \\d', logging.WARNING), self.assertEqual(
5) self.handler.count_logs('Another log \\d', logging.WARNING),
self.handler.flush() 5)
self._reset_limit_filter()
# filter by both # filter by both
log.LimitFilter._ignore.add((logging.WARNING, 'Log 3')) with self.reset_logger():
log.LimitFilter._ignore.add((logging.WARNING, 'Another log %s')) log.LimitFilter._ignore.add((logging.WARNING, 'Log 3'))
do_logging() log.LimitFilter._ignore.add((logging.WARNING, 'Another log %s'))
self.assertEqual( do_logging()
self.handler.count_logs('Log \\d', logging.WARNING), self.assertEqual(
4) self.handler.count_logs('Log \\d', logging.WARNING),
self.assertEqual( 4)
self.handler.count_logs('Another log \\d', logging.WARNING), self.assertEqual(
0) self.handler.count_logs('Another log \\d', logging.WARNING),
self.handler.flush() 0)
self._reset_limit_filter()