Fix test isolation: clear logging handlers and reset propagate flags

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
2026-05-23 22:44:40 +02:00
parent 1c505bd722
commit daa937bcb7

View File

@@ -1,5 +1,6 @@
"""Pytest configuration and shared fixtures for all tests."""
import logging
from unittest.mock import Mock
import pytest
@@ -149,3 +150,44 @@ def mock_series_app_download(monkeypatch):
yield
@pytest.fixture(autouse=True)
def reset_logging_state():
"""Reset logging handlers and propagate flags before and after each test.
Tests that call setup_logging() or logging.config.dictConfig() may leave
FileHandlers and propagate=False on various loggers. This fixture clears
handlers and resets propagate for all relevant loggers before/after tests.
"""
# All loggers that might have handlers or propagate changes from test setup
logger_names = (
"aniworld", "uvicorn", "uvicorn.access", "uvicorn.error",
"watchfiles.main"
)
def clear_logger_state(logger_name):
logger = logging.getLogger(logger_name)
for handler in logger.handlers[:]:
logger.removeHandler(handler)
handler.close()
# Reset propagate to default (True) for child loggers
# Root logger propagate is always True by default
if logger_name != "root":
logger.propagate = True
# Clear state BEFORE test
for name in logger_names:
clear_logger_state(name)
yield
# Clear state AFTER test
for name in logger_names:
clear_logger_state(name)
# Also clear root handlers
root = logging.getLogger()
for handler in root.handlers[:]:
root.removeHandler(handler)
handler.close()