Skyvern/tests/unit/test_cli_bootstrap.py

46 lines
1.9 KiB
Python

from __future__ import annotations
import logging
from types import SimpleNamespace
import skyvern._cli_bootstrap as cli_bootstrap
def test_bootstrap_defaults_to_warning_without_explicit_log_level(monkeypatch) -> None:
setup_calls: list[str] = []
fake_settings = SimpleNamespace(LOG_LEVEL="INFO", model_fields_set=set())
monkeypatch.setattr("skyvern.config.settings", fake_settings)
monkeypatch.setattr("skyvern.forge.sdk.forge_log.setup_logger", lambda: setup_calls.append("called"))
logger_names = ("", "skyvern", "httpx", "litellm", "playwright", "httpcore")
previous_levels = {name: logging.getLogger(name).level for name in logger_names}
try:
cli_bootstrap.configure_cli_bootstrap_logging()
assert setup_calls == ["called"]
assert fake_settings.LOG_LEVEL == "WARNING"
for name in logger_names:
assert logging.getLogger(name).level == logging.WARNING
finally:
for name, level in previous_levels.items():
logging.getLogger(name).setLevel(level)
def test_bootstrap_honors_explicit_log_level(monkeypatch) -> None:
setup_calls: list[str] = []
fake_settings = SimpleNamespace(LOG_LEVEL="DEBUG", model_fields_set={"LOG_LEVEL"})
monkeypatch.setattr("skyvern.config.settings", fake_settings)
monkeypatch.setattr("skyvern.forge.sdk.forge_log.setup_logger", lambda: setup_calls.append("called"))
logger_names = ("", "skyvern", "httpx", "litellm", "playwright", "httpcore")
previous_levels = {name: logging.getLogger(name).level for name in logger_names}
try:
cli_bootstrap.configure_cli_bootstrap_logging()
assert setup_calls == ["called"]
assert fake_settings.LOG_LEVEL == "DEBUG"
for name in logger_names:
assert logging.getLogger(name).level == logging.DEBUG
finally:
for name, level in previous_levels.items():
logging.getLogger(name).setLevel(level)