From c19075816bd7b909421bbf20a463f332ee9e03be Mon Sep 17 00:00:00 2001 From: Deniz Turgut Date: Sat, 9 May 2020 19:30:21 +0300 Subject: [PATCH] use context manager for log testing --- pelican/tests/test_log.py | 85 +++++++++++++++++++++------------------ 1 file changed, 45 insertions(+), 40 deletions(-) diff --git a/pelican/tests/test_log.py b/pelican/tests/test_log.py index 90a4552d..41fd69ae 100644 --- a/pelican/tests/test_log.py +++ b/pelican/tests/test_log.py @@ -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)