65 lines
2.0 KiB
Python
65 lines
2.0 KiB
Python
"""Safe default logging tests for the application runtime owner."""
|
|
|
|
import logging
|
|
from unittest.mock import patch
|
|
|
|
import pytest
|
|
|
|
from free_claude_code.config.settings import Settings
|
|
from free_claude_code.runtime.application import ApplicationRuntime, best_effort
|
|
from free_claude_code.runtime.provider_manager import ProviderRuntimeManager
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_messaging_start_failure_default_logs_exclude_traceback(caplog):
|
|
settings = Settings().model_copy(
|
|
update={
|
|
"messaging_platform": "telegram",
|
|
"telegram_bot_token": "t",
|
|
"allowed_telegram_user_id": "1",
|
|
"log_api_error_tracebacks": False,
|
|
}
|
|
)
|
|
runtime = ApplicationRuntime(
|
|
ProviderRuntimeManager(settings),
|
|
transcriber=None,
|
|
)
|
|
|
|
with (
|
|
patch(
|
|
"free_claude_code.runtime.application.messaging_platform_factory.create_messaging_components",
|
|
side_effect=RuntimeError("SECRET_RUNTIME_DETAIL"),
|
|
),
|
|
caplog.at_level(logging.ERROR),
|
|
):
|
|
await runtime._start_messaging_if_configured()
|
|
|
|
blob = " | ".join(record.getMessage() for record in caplog.records)
|
|
assert "SECRET_RUNTIME_DETAIL" not in blob
|
|
assert "exc_type=RuntimeError" in blob
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_best_effort_default_logs_exclude_exception_text(caplog):
|
|
async def boom():
|
|
raise ValueError("SECRET_SHUTDOWN")
|
|
|
|
with caplog.at_level(logging.WARNING):
|
|
await best_effort("test_step", boom(), log_verbose_errors=False)
|
|
|
|
blob = " | ".join(record.getMessage() for record in caplog.records)
|
|
assert "SECRET_SHUTDOWN" not in blob
|
|
assert "exc_type=ValueError" in blob
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_best_effort_verbose_includes_exception_text(caplog):
|
|
async def boom():
|
|
raise ValueError("VISIBLE_SHUTDOWN")
|
|
|
|
with caplog.at_level(logging.WARNING):
|
|
await best_effort("test_step", boom(), log_verbose_errors=True)
|
|
|
|
blob = " | ".join(record.getMessage() for record in caplog.records)
|
|
assert "VISIBLE_SHUTDOWN" in blob
|