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