Skip to content

Commit b321e1d

Browse files
committed
Update tests
1 parent cb182f1 commit b321e1d

1 file changed

Lines changed: 33 additions & 73 deletions

File tree

tests/unit/test_log.py

Lines changed: 33 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -3,34 +3,38 @@
33
import logging
44

55
import pytest
6-
from pytest_mock import MockerFixture
7-
from rich.logging import RichHandler
86

97
from constants import (
10-
DEFAULT_LOG_FORMAT,
11-
LIGHTSPEED_STACK_DISABLE_RICH_HANDLER_ENV_VAR,
8+
DEFAULT_LOGGER_NAME,
129
LIGHTSPEED_STACK_LOG_LEVEL_ENV_VAR,
1310
)
14-
from log import create_log_handler, get_logger, resolve_log_level
11+
from log import get_logger, resolve_log_level, setup_logging
12+
13+
14+
@pytest.fixture(autouse=True)
15+
def clear_logging_cache():
16+
setup_logging.cache_clear()
1517

1618

1719
def test_get_logger() -> None:
1820
"""Check the function to retrieve logger."""
19-
logger_name = "foo"
20-
logger = get_logger(logger_name)
21-
assert logger is not None
22-
assert logger.name == logger_name
21+
setup_logging()
2322

24-
# at least one handler need to be set
25-
assert len(logger.handlers) >= 1
23+
logger = get_logger(__name__)
24+
25+
assert logger is not None
26+
assert logger.name == f"{DEFAULT_LOGGER_NAME}.tests.unit.test_log"
27+
assert logger.hasHandlers()
2628

2729

2830
def test_get_logger_invalid_env_var_fallback(monkeypatch: pytest.MonkeyPatch) -> None:
2931
"""Test that invalid env var value falls back to INFO level."""
3032
monkeypatch.setenv(LIGHTSPEED_STACK_LOG_LEVEL_ENV_VAR, "FOOBAR")
3133

32-
logger = get_logger("test_invalid")
33-
assert logger.level == logging.INFO
34+
setup_logging()
35+
36+
logger = get_logger(__name__)
37+
assert logger.getEffectiveLevel() == logging.INFO
3438

3539

3640
@pytest.mark.parametrize(
@@ -59,16 +63,20 @@ def test_get_logger_log_level(
5963
"""
6064
monkeypatch.setenv(LIGHTSPEED_STACK_LOG_LEVEL_ENV_VAR, level_name)
6165

62-
logger = get_logger(f"test_{level_name}")
63-
assert logger.level == expected_level
66+
setup_logging()
67+
68+
logger = get_logger(__name__)
69+
assert logger.getEffectiveLevel() == expected_level
6470

6571

6672
def test_get_logger_default_log_level(monkeypatch: pytest.MonkeyPatch) -> None:
6773
"""Test that get_logger() uses INFO level by default when env var is not set."""
6874
monkeypatch.delenv(LIGHTSPEED_STACK_LOG_LEVEL_ENV_VAR, raising=False)
6975

70-
logger = get_logger("test_default")
71-
assert logger.level == logging.INFO
76+
setup_logging()
77+
78+
logger = get_logger(__name__)
79+
assert logger.getEffectiveLevel() == logging.INFO
7280

7381

7482
@pytest.mark.parametrize(
@@ -88,73 +96,25 @@ def test_resolve_log_level(
8896
) -> None:
8997
"""Test that resolve_log_level correctly resolves valid level names."""
9098
monkeypatch.setenv(LIGHTSPEED_STACK_LOG_LEVEL_ENV_VAR, level_name)
99+
100+
setup_logging()
101+
91102
assert resolve_log_level() == expected_level
92103

93104

94105
def test_resolve_log_level_invalid_fallback(monkeypatch: pytest.MonkeyPatch) -> None:
95106
"""Test that resolve_log_level falls back to INFO for invalid values."""
96107
monkeypatch.setenv(LIGHTSPEED_STACK_LOG_LEVEL_ENV_VAR, "BOGUS")
108+
109+
setup_logging()
110+
97111
assert resolve_log_level() == logging.INFO
98112

99113

100114
def test_resolve_log_level_default(monkeypatch: pytest.MonkeyPatch) -> None:
101115
"""Test that resolve_log_level defaults to INFO when env var is unset."""
102116
monkeypatch.delenv(LIGHTSPEED_STACK_LOG_LEVEL_ENV_VAR, raising=False)
103-
assert resolve_log_level() == logging.INFO
104-
105117

106-
def test_create_log_handler_tty(mocker: MockerFixture) -> None:
107-
"""Test that create_log_handler returns RichHandler when TTY is available."""
108-
mocker.patch("sys.stderr.isatty", return_value=True)
109-
handler = create_log_handler()
110-
assert isinstance(handler, RichHandler)
118+
setup_logging()
111119

112-
113-
def test_create_log_handler_non_tty(mocker: MockerFixture) -> None:
114-
"""Test that create_log_handler returns StreamHandler when no TTY."""
115-
mocker.patch("sys.stderr.isatty", return_value=False)
116-
handler = create_log_handler()
117-
assert isinstance(handler, logging.StreamHandler)
118-
assert not isinstance(handler, RichHandler)
119-
120-
121-
def test_create_log_handler_non_tty_format(mocker: MockerFixture) -> None:
122-
"""Test that non-TTY handler uses DEFAULT_LOG_FORMAT."""
123-
mocker.patch("sys.stderr.isatty", return_value=False)
124-
handler = create_log_handler()
125-
assert handler.formatter is not None
126-
# pylint: disable=protected-access
127-
assert handler.formatter._fmt == DEFAULT_LOG_FORMAT
128-
129-
130-
def test_create_log_handler_disable_rich_with_tty(
131-
mocker: MockerFixture, monkeypatch: pytest.MonkeyPatch
132-
) -> None:
133-
"""Test that RichHandler is disabled when env var is set, even with TTY."""
134-
mocker.patch("sys.stderr.isatty", return_value=True)
135-
monkeypatch.setenv(LIGHTSPEED_STACK_DISABLE_RICH_HANDLER_ENV_VAR, "1")
136-
handler = create_log_handler()
137-
assert isinstance(handler, logging.StreamHandler)
138-
assert not isinstance(handler, RichHandler)
139-
140-
141-
def test_create_log_handler_disable_rich_format(
142-
mocker: MockerFixture, monkeypatch: pytest.MonkeyPatch
143-
) -> None:
144-
"""Test that disabled RichHandler uses DEFAULT_LOG_FORMAT."""
145-
mocker.patch("sys.stderr.isatty", return_value=True)
146-
monkeypatch.setenv(LIGHTSPEED_STACK_DISABLE_RICH_HANDLER_ENV_VAR, "true")
147-
handler = create_log_handler()
148-
assert handler.formatter is not None
149-
# pylint: disable=protected-access
150-
assert handler.formatter._fmt == DEFAULT_LOG_FORMAT
151-
152-
153-
def test_create_log_handler_enable_rich_when_env_var_empty(
154-
mocker: MockerFixture, monkeypatch: pytest.MonkeyPatch
155-
) -> None:
156-
"""Test that RichHandler is used when env var is empty string."""
157-
mocker.patch("sys.stderr.isatty", return_value=True)
158-
monkeypatch.setenv(LIGHTSPEED_STACK_DISABLE_RICH_HANDLER_ENV_VAR, "")
159-
handler = create_log_handler()
160-
assert isinstance(handler, RichHandler)
120+
assert resolve_log_level() == logging.INFO

0 commit comments

Comments
 (0)