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

1"""Tests for logging tools in emd.logger.""" 

2 

3import logging 

4import unittest 

5 

6from ..logger import get_level, is_active, set_format, set_level, set_up 

7 

8 

9class TestLogger(unittest.TestCase): 

10 """Ensure that logger works as expected.""" 

11 

12 def test_0_setup(self): 

13 """Ensure that logger can be initialised. 

14 

15 Need zero in test name to ensure it is run first. 

16 

17 """ 

18 logger = logging.getLogger('emd') 

19 

20 # Check logger active 

21 assert(is_active() is True) 

22 

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)) 

27 

28 set_up() 

29 

30 # Check logger now active 

31 assert(is_active()) 

32 

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)) 

37 

38 def test_logger_level_change(self): 

39 """Check we can change the logging level.""" 

40 set_level('WARNING') 

41 assert(get_level() == 30) 

42 

43 set_level('DEBUG') 

44 assert(get_level() == 10) 

45 

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") 

54 

55 def test_log_to_file(self): 

56 """Check we can log to a file.""" 

57 logger = logging.getLogger('emd') 

58 

59 import tempfile 

60 test_log = tempfile.NamedTemporaryFile(prefix="EMD_TestLogFile").name 

61 

62 set_up(log_file=test_log) 

63 

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))