mirror of
https://github.com/Skyvern-AI/skyvern.git
synced 2026-07-09 16:09:13 +00:00
55 lines
2.2 KiB
Python
55 lines
2.2 KiB
Python
import runpy
|
|
import sys
|
|
from threading import Lock
|
|
from types import SimpleNamespace
|
|
|
|
import pytest
|
|
|
|
from skyvern.forge import forge_app_initializer
|
|
|
|
|
|
def test_start_forge_app_configures_server_logging_once(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
logging_calls: list[str] = []
|
|
forced_app_instances: list[object] = []
|
|
fake_app = object()
|
|
|
|
monkeypatch.setattr(forge_app_initializer, "_SERVER_LOGGING_CONFIGURED", False)
|
|
monkeypatch.setattr(forge_app_initializer, "_SERVER_LOGGING_LOCK", Lock())
|
|
monkeypatch.setattr(forge_app_initializer, "create_forge_app", lambda: fake_app)
|
|
monkeypatch.setattr(forge_app_initializer, "set_force_app_instance", forced_app_instances.append)
|
|
monkeypatch.setattr(forge_app_initializer.settings, "ADDITIONAL_MODULES", [])
|
|
|
|
import skyvern.forge.sdk.forge_log as forge_log
|
|
|
|
monkeypatch.setattr(forge_log, "setup_logger", lambda: logging_calls.append("setup"))
|
|
|
|
assert forge_app_initializer.start_forge_app() is fake_app
|
|
assert forge_app_initializer.start_forge_app() is fake_app
|
|
|
|
assert logging_calls == ["setup"]
|
|
assert forced_app_instances == [fake_app, fake_app]
|
|
|
|
|
|
def test_forge_main_uses_shared_logging_initializer(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
logging_calls: list[str] = []
|
|
uvicorn_calls: list[dict[str, object]] = []
|
|
|
|
monkeypatch.setattr(forge_app_initializer, "_SERVER_LOGGING_CONFIGURED", False)
|
|
monkeypatch.setattr(forge_app_initializer, "_SERVER_LOGGING_LOCK", Lock())
|
|
|
|
import skyvern.forge.sdk.forge_log as forge_log
|
|
|
|
monkeypatch.setattr(forge_log, "setup_logger", lambda: logging_calls.append("setup"))
|
|
monkeypatch.setattr("skyvern.exceptions.require_server_extra_modules", lambda *_args, **_kwargs: None)
|
|
monkeypatch.setattr("skyvern.analytics.capture", lambda *_args, **_kwargs: None)
|
|
monkeypatch.setitem(
|
|
sys.modules,
|
|
"uvicorn",
|
|
SimpleNamespace(run=lambda *args, **kwargs: uvicorn_calls.append({"args": args, "kwargs": kwargs})),
|
|
)
|
|
|
|
runpy.run_module("skyvern.forge.__main__", run_name="__main__")
|
|
forge_app_initializer._ensure_server_logging_configured()
|
|
|
|
assert logging_calls == ["setup"]
|
|
assert len(uvicorn_calls) == 1
|