From 5053d57fec6530a4380a698be77fd1137ee01557 Mon Sep 17 00:00:00 2001 From: Chris Berkhout Date: Sat, 31 Jul 2021 12:02:00 +0200 Subject: [PATCH] Test logger. --- tests/pricehist/test_logger.py | 74 ++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 tests/pricehist/test_logger.py diff --git a/tests/pricehist/test_logger.py b/tests/pricehist/test_logger.py new file mode 100644 index 0000000..c431d45 --- /dev/null +++ b/tests/pricehist/test_logger.py @@ -0,0 +1,74 @@ +import logging +import sys + +from pricehist import logger + + +class Record: + pass + + +def test_formatter_no_prefix_for_info(): + record = Record() + record.levelno = logging.INFO + record.levelname = "INFO" + record.msg = "A message %s" + record.args = "for you" + record.exc_info = None + record.exc_text = "" + + s = logger.Formatter().format(record) + + assert s == "A message for you" + + +def test_formatter_prefix_for_other_levels(): + record = Record() + record.levelno = logging.WARNING + record.levelname = "WARNING" + record.msg = "A warning %s" + record.args = "for you" + record.exc_info = None + record.exc_text = "" + + s = logger.Formatter().format(record) + + assert s == "WARNING A warning for you" + + +def test_formatter_formats_given_exception(): + + try: + raise Exception("Something happened") + except Exception: + exc_info = sys.exc_info() + + record = Record() + record.levelno = logging.DEBUG + record.levelname = "DEBUG" + record.msg = "An exception %s:" + record.args = "for you" + record.exc_info = exc_info + record.exc_text = "" + + s = logger.Formatter().format(record) + lines = s.splitlines() + + assert "DEBUG An exception for you:" in lines + assert "DEBUG Traceback (most recent call last):" in lines + assert any('DEBUG File "' in line for line in lines) + assert "DEBUG Exception: Something happened" in lines + + +def test_init_sets_dest_formatter_and_level(capfd): + logger.init() + logging.info("Test message") + out, err = capfd.readouterr() + assert "Test message" not in out + assert "Test message" in err.splitlines() + assert logging.root.level == logging.INFO + + +def test_show_debug(): + logger.show_debug() + assert logging.root.level == logging.DEBUG