-
Notifications
You must be signed in to change notification settings - Fork 228
Expand file tree
/
Copy pathtest_logger.py
More file actions
108 lines (82 loc) · 3.39 KB
/
test_logger.py
File metadata and controls
108 lines (82 loc) · 3.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
"""Unit tests for logger.py."""
from __future__ import annotations
import logging
from unittest.mock import call, patch
from zeroconf._logger import QuietLogger, set_logger_level_if_unset
def test_loading_logger():
"""Test loading logger does not change level unless it is unset."""
log = logging.getLogger("zeroconf")
log.setLevel(logging.CRITICAL)
set_logger_level_if_unset()
log = logging.getLogger("zeroconf")
assert log.level == logging.CRITICAL
log = logging.getLogger("zeroconf")
log.setLevel(logging.NOTSET)
set_logger_level_if_unset()
log = logging.getLogger("zeroconf")
assert log.level == logging.WARNING
def test_log_warning_once():
"""Test we only log with warning level once."""
QuietLogger._seen_logs = {}
quiet_logger = QuietLogger()
with (
patch("zeroconf._logger.log.warning") as mock_log_warning,
patch("zeroconf._logger.log.debug") as mock_log_debug,
):
quiet_logger.log_warning_once("the warning")
assert mock_log_warning.mock_calls
assert not mock_log_debug.mock_calls
with (
patch("zeroconf._logger.log.warning") as mock_log_warning,
patch("zeroconf._logger.log.debug") as mock_log_debug,
):
quiet_logger.log_warning_once("the warning")
assert not mock_log_warning.mock_calls
assert mock_log_debug.mock_calls
def test_log_exception_warning():
"""Test we only log with warning level once."""
QuietLogger._seen_logs = {}
quiet_logger = QuietLogger()
with (
patch("zeroconf._logger.log.warning") as mock_log_warning,
patch("zeroconf._logger.log.debug") as mock_log_debug,
):
quiet_logger.log_exception_warning("the exception warning")
assert mock_log_warning.mock_calls
assert not mock_log_debug.mock_calls
with (
patch("zeroconf._logger.log.warning") as mock_log_warning,
patch("zeroconf._logger.log.debug") as mock_log_debug,
):
quiet_logger.log_exception_warning("the exception warning")
assert not mock_log_warning.mock_calls
assert mock_log_debug.mock_calls
def test_llog_exception_debug():
"""Test we only log with a trace once."""
QuietLogger._seen_logs = {}
quiet_logger = QuietLogger()
with patch("zeroconf._logger.log.debug") as mock_log_debug:
quiet_logger.log_exception_debug("the exception")
assert mock_log_debug.mock_calls == [call("the exception", exc_info=True)]
with patch("zeroconf._logger.log.debug") as mock_log_debug:
quiet_logger.log_exception_debug("the exception")
assert mock_log_debug.mock_calls == [call("the exception", exc_info=False)]
def test_log_exception_once():
"""Test we only log with warning level once."""
QuietLogger._seen_logs = {}
quiet_logger = QuietLogger()
exc = Exception()
with (
patch("zeroconf._logger.log.warning") as mock_log_warning,
patch("zeroconf._logger.log.debug") as mock_log_debug,
):
quiet_logger.log_exception_once(exc, "the exceptional exception warning")
assert mock_log_warning.mock_calls
assert not mock_log_debug.mock_calls
with (
patch("zeroconf._logger.log.warning") as mock_log_warning,
patch("zeroconf._logger.log.debug") as mock_log_debug,
):
quiet_logger.log_exception_once(exc, "the exceptional exception warning")
assert not mock_log_warning.mock_calls
assert mock_log_debug.mock_calls