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:
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user