forked from github/pelican
use context manager for log testing
This commit is contained in:
parent
e6df353302
commit
c19075816b
1 changed files with 45 additions and 40 deletions
|
|
@ -1,6 +1,7 @@
|
|||
import logging
|
||||
import unittest
|
||||
from collections import defaultdict
|
||||
from contextlib import contextmanager
|
||||
|
||||
from pelican import log
|
||||
from pelican.tests.support import LogCountHandler
|
||||
|
|
@ -24,55 +25,59 @@ class TestLog(unittest.TestCase):
|
|||
log.LimitFilter._threshold = 5
|
||||
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 do_logging():
|
||||
for i in range(5):
|
||||
self.logger.warning('Log %s', i)
|
||||
self.logger.warning('Another log %s', i)
|
||||
# no filter
|
||||
do_logging()
|
||||
self.assertEqual(
|
||||
self.handler.count_logs('Log \\d', logging.WARNING),
|
||||
5)
|
||||
self.assertEqual(
|
||||
self.handler.count_logs('Another log \\d', logging.WARNING),
|
||||
5)
|
||||
self.handler.flush()
|
||||
self._reset_limit_filter()
|
||||
with self.reset_logger():
|
||||
do_logging()
|
||||
self.assertEqual(
|
||||
self.handler.count_logs('Log \\d', logging.WARNING),
|
||||
5)
|
||||
self.assertEqual(
|
||||
self.handler.count_logs('Another log \\d', logging.WARNING),
|
||||
5)
|
||||
|
||||
# filter by template
|
||||
log.LimitFilter._ignore.add((logging.WARNING, 'Log %s'))
|
||||
do_logging()
|
||||
self.assertEqual(
|
||||
self.handler.count_logs('Log \\d', logging.WARNING),
|
||||
0)
|
||||
self.assertEqual(
|
||||
self.handler.count_logs('Another log \\d', logging.WARNING),
|
||||
5)
|
||||
self.handler.flush()
|
||||
self._reset_limit_filter()
|
||||
with self.reset_logger():
|
||||
log.LimitFilter._ignore.add((logging.WARNING, 'Log %s'))
|
||||
do_logging()
|
||||
self.assertEqual(
|
||||
self.handler.count_logs('Log \\d', logging.WARNING),
|
||||
0)
|
||||
self.assertEqual(
|
||||
self.handler.count_logs('Another log \\d', logging.WARNING),
|
||||
5)
|
||||
|
||||
# filter by exact message
|
||||
log.LimitFilter._ignore.add((logging.WARNING, 'Log 3'))
|
||||
do_logging()
|
||||
self.assertEqual(
|
||||
self.handler.count_logs('Log \\d', logging.WARNING),
|
||||
4)
|
||||
self.assertEqual(
|
||||
self.handler.count_logs('Another log \\d', logging.WARNING),
|
||||
5)
|
||||
self.handler.flush()
|
||||
self._reset_limit_filter()
|
||||
with self.reset_logger():
|
||||
log.LimitFilter._ignore.add((logging.WARNING, 'Log 3'))
|
||||
do_logging()
|
||||
self.assertEqual(
|
||||
self.handler.count_logs('Log \\d', logging.WARNING),
|
||||
4)
|
||||
self.assertEqual(
|
||||
self.handler.count_logs('Another log \\d', logging.WARNING),
|
||||
5)
|
||||
|
||||
# filter by both
|
||||
log.LimitFilter._ignore.add((logging.WARNING, 'Log 3'))
|
||||
log.LimitFilter._ignore.add((logging.WARNING, 'Another log %s'))
|
||||
do_logging()
|
||||
self.assertEqual(
|
||||
self.handler.count_logs('Log \\d', logging.WARNING),
|
||||
4)
|
||||
self.assertEqual(
|
||||
self.handler.count_logs('Another log \\d', logging.WARNING),
|
||||
0)
|
||||
self.handler.flush()
|
||||
self._reset_limit_filter()
|
||||
with self.reset_logger():
|
||||
log.LimitFilter._ignore.add((logging.WARNING, 'Log 3'))
|
||||
log.LimitFilter._ignore.add((logging.WARNING, 'Another log %s'))
|
||||
do_logging()
|
||||
self.assertEqual(
|
||||
self.handler.count_logs('Log \\d', logging.WARNING),
|
||||
4)
|
||||
self.assertEqual(
|
||||
self.handler.count_logs('Another log \\d', logging.WARNING),
|
||||
0)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue