Coverage for emd/tests/test_logger.py: 94%
31 statements
« prev ^ index » next coverage.py v7.6.11, created at 2025-03-08 15:44 +0000
« prev ^ index » next coverage.py v7.6.11, created at 2025-03-08 15:44 +0000
1"""Tests for logging tools in emd.logger."""
3import logging
4import unittest
6from ..logger import get_level, is_active, set_format, set_level, set_up
9class TestLogger(unittest.TestCase):
10 """Ensure that logger works as expected."""
12 def test_0_setup(self):
13 """Ensure that logger can be initialised.
15 Need zero in test name to ensure it is run first.
17 """
18 logger = logging.getLogger('emd')
20 # Check logger active
21 assert(is_active() is True)
23 # By default should have one handler
24 assert(len(logger.handlers) == 1)
25 # ...which is Null
26 assert(isinstance(logger.handlers[0], logging.StreamHandler))
28 set_up()
30 # Check logger now active
31 assert(is_active())
33 # By default should have one handler
34 assert(len(logger.handlers) == 1)
35 # ...which is a stream handler
36 assert(isinstance(logger.handlers[0], logging.StreamHandler))
38 def test_logger_level_change(self):
39 """Check we can change the logging level."""
40 set_level('WARNING')
41 assert(get_level() == 30)
43 set_level('DEBUG')
44 assert(get_level() == 10)
46 def test_logger_format_change(self):
47 """Check we can change the logging format."""
48 # Can't directly introspect current formatter so just check we don't
49 # get an error
50 try:
51 set_format(formatter='brief', handler_name='console')
52 except Exception: # noqa: B902
53 self.fail("emd.logger.set_format() raised an Exception")
55 def test_log_to_file(self):
56 """Check we can log to a file."""
57 logger = logging.getLogger('emd')
59 import tempfile
60 test_log = tempfile.NamedTemporaryFile(prefix="EMD_TestLogFile").name
62 set_up(log_file=test_log)
64 # By default should have two handlers
65 assert(len(logger.handlers) == 2)
66 # ...first is a stream handler
67 assert(isinstance(logger.handlers[0], logging.StreamHandler))
68 # ...second is a file handler
69 assert(isinstance(logger.handlers[1], logging.FileHandler))