mirror of
https://github.com/got-feedBack/feedBack.git
synced 2026-08-11 03:09:57 +00:00
Clean release snapshot
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
"""Shared pytest fixtures for the slopsmith test suite."""
|
||||
|
||||
import logging
|
||||
|
||||
import pytest
|
||||
import structlog
|
||||
|
||||
|
||||
_LOGGING_NAMES = ("slopsmith", "uvicorn", "uvicorn.error", "uvicorn.access")
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def isolate_logging():
|
||||
"""Restore slopsmith / uvicorn logger state after each test.
|
||||
|
||||
Saves handlers, level, and propagate flag before the test runs and
|
||||
restores all three on teardown. Import into any test module that calls
|
||||
configure_logging() so mutations don't bleed across tests.
|
||||
"""
|
||||
saved = {}
|
||||
for name in _LOGGING_NAMES:
|
||||
lg = logging.getLogger(name)
|
||||
saved[name] = (
|
||||
list(lg.handlers), # snapshot the handler list
|
||||
lg.level,
|
||||
lg.propagate,
|
||||
)
|
||||
yield
|
||||
for name in _LOGGING_NAMES:
|
||||
lg = logging.getLogger(name)
|
||||
original_handlers, original_level, original_propagate = saved[name]
|
||||
|
||||
# Close and remove any handlers that were added during the test.
|
||||
for h in list(lg.handlers):
|
||||
if h not in original_handlers:
|
||||
lg.removeHandler(h)
|
||||
h.close()
|
||||
# Remove any original handlers that may have been removed during the test
|
||||
# so we can add them back cleanly.
|
||||
for h in list(lg.handlers):
|
||||
lg.removeHandler(h)
|
||||
# Reattach the original handlers.
|
||||
for h in original_handlers:
|
||||
lg.addHandler(h)
|
||||
|
||||
lg.setLevel(original_level)
|
||||
lg.propagate = original_propagate
|
||||
structlog.reset_defaults()
|
||||
Reference in New Issue
Block a user