1+ import io
12import logging
3+ import sys
24from logging .config import dictConfig
35
4- from pytest import LogCaptureFixture
6+ from pytest import LogCaptureFixture , MonkeyPatch
7+ from rich .logging import RichHandler
58
6- from fastapi_cli .utils .cli import CustomFormatter , get_uvicorn_log_config
9+ from fastapi_cli import logging as cli_logging
10+ from fastapi_cli .utils .cli import (
11+ CustomFormatter ,
12+ get_uvicorn_log_config ,
13+ should_use_rich_logs ,
14+ )
715
816
917def test_get_uvicorn_config_uses_custom_formatter () -> None :
@@ -14,6 +22,32 @@ def test_get_uvicorn_config_uses_custom_formatter() -> None:
1422 assert config ["loggers" ]["uvicorn" ]["propagate" ] is False
1523
1624
25+ def test_should_use_rich_logs_is_false_without_tty (
26+ monkeypatch : MonkeyPatch ,
27+ ) -> None :
28+ monkeypatch .setattr (sys , "stdout" , io .StringIO ())
29+
30+ assert should_use_rich_logs () is False
31+
32+
33+ def test_setup_logging_uses_rich_handler () -> None :
34+ logger = logging .getLogger ("fastapi_cli" )
35+ original_handlers = logger .handlers .copy ()
36+ original_level = logger .level
37+ original_propagate = logger .propagate
38+ logger .handlers .clear ()
39+ try :
40+ cli_logging .setup_logging (level = logging .DEBUG )
41+
42+ assert isinstance (logger .handlers [0 ], RichHandler )
43+ assert logger .level == logging .DEBUG
44+ assert logger .propagate is False
45+ finally :
46+ logger .handlers = original_handlers
47+ logger .setLevel (original_level )
48+ logger .propagate = original_propagate
49+
50+
1751def test_custom_formatter () -> None :
1852 formatter = CustomFormatter ()
1953
0 commit comments