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
57
6- from fastapi_cli .utils .cli import CustomFormatter , get_uvicorn_log_config
8+ from fastapi_cli .logging import PlainFormatter
9+ from fastapi_cli .utils .cli import (
10+ CustomFormatter ,
11+ get_uvicorn_log_config ,
12+ should_use_rich_logs ,
13+ )
714
815
916def test_get_uvicorn_config_uses_custom_formatter () -> None :
@@ -14,6 +21,32 @@ def test_get_uvicorn_config_uses_custom_formatter() -> None:
1421 assert config ["loggers" ]["uvicorn" ]["propagate" ] is False
1522
1623
24+ def test_should_use_rich_logs_is_false_without_tty (
25+ monkeypatch : MonkeyPatch ,
26+ ) -> None :
27+ monkeypatch .setattr (sys , "stdout" , io .StringIO ())
28+
29+ assert should_use_rich_logs () is False
30+
31+
32+ def test_plain_formatter_strips_rich_markup () -> None :
33+ formatter = PlainFormatter ("%(levelname)s:%(name)s:%(message)s" )
34+ record = logging .LogRecord (
35+ name = "fastapi_cli.discover" ,
36+ level = logging .WARNING ,
37+ pathname = "" ,
38+ lineno = 0 ,
39+ msg = "Ensure all the package directories have an [blue]__init__.py[/blue] file" ,
40+ args = (),
41+ exc_info = None ,
42+ )
43+
44+ assert (
45+ formatter .format (record )
46+ == "WARNING:fastapi_cli.discover:Ensure all the package directories have an __init__.py file"
47+ )
48+
49+
1750def test_custom_formatter () -> None :
1851 formatter = CustomFormatter ()
1952
0 commit comments