Add regression tests

This commit is contained in:
Sam Bull 2026-04-12 23:14:27 +01:00
commit 6a2724cccc

View file

@ -73,3 +73,45 @@ class TestLog(unittest.TestCase):
self.assertEqual(
self.handler.count_logs("Another log \\d", logging.WARNING), 0
)
def test_filtered_warning_no_raise_with_fatal_warnings(self):
log.FatalLogger.fatal_lvl = logging.WARNING
try:
log.LimitFilter._ignore.add((logging.WARNING, "Filtered %s"))
# Should not raise because the message is filtered out.
self.logger.warning("Filtered %s", "msg")
finally:
log.FatalLogger.fatal_lvl = logging.CRITICAL + 1
def test_unfiltered_warning_raises_with_fatal_warnings(self):
log.FatalLogger.fatal_lvl = logging.WARNING
try:
with self.assertRaises(RuntimeError):
self.logger.warning("Unfiltered warning")
finally:
log.FatalLogger.fatal_lvl = logging.CRITICAL + 1
def test_filtered_error_no_raise_with_fatal_errors(self):
log.FatalLogger.fatal_lvl = logging.ERROR
try:
log.LimitFilter._ignore.add((logging.WARNING, "Filtered error %s"))
# Errors go through LimitFilter (levelno > WARNING returns True),
# but we can test with a duplicate message which gets filtered.
self.logger.warning("Some warning")
self._reset_limit_filter()
# Use _ignore to filter an error-level record by lowering dedup level.
log.LimitFilter.LOGS_DEDUP_MIN_LEVEL = logging.ERROR
log.LimitFilter._ignore.add((logging.ERROR, "Filtered error %s"))
self.logger.error("Filtered error %s", "msg")
finally:
log.FatalLogger.fatal_lvl = logging.CRITICAL + 1
log.LimitFilter.LOGS_DEDUP_MIN_LEVEL = logging.WARNING
def test_critical_never_raises(self):
log.FatalLogger.fatal_lvl = logging.WARNING
try:
# CRITICAL should not raise even though it's above fatal_lvl,
# because main() catches RuntimeError and logs its own critical.
self.logger.critical("Critical message")
finally:
log.FatalLogger.fatal_lvl = logging.CRITICAL + 1