blob: 49286142009cf454c9d117c85e1ddce3cb502c3f [file] [log] [blame]
import fontTools
import pytest
@pytest.fixture(autouse=True, scope="session")
def disableConfigLogger():
"""Session-scoped fixture to make fontTools.configLogger function no-op.
Logging in python maintains a global state. When in the tests we call a main()
function from modules subset or ttx, a call to configLogger is made that modifies
this global state (to configures a handler for the fontTools logger).
To prevent that, we monkey-patch the `configLogger` attribute of the `fontTools`
module (the one used in the scripts main() functions) so that it does nothing,
to avoid any side effects.
NOTE: `fontTools.configLogger` is only an alias for the configLogger function in
`fontTools.misc.loggingTools` module; the original function is not modified.
"""
def noop(*args, **kwargs):
return
originalConfigLogger = fontTools.configLogger
fontTools.configLogger = noop
try:
yield
finally:
fontTools.configLogger = originalConfigLogger