aboutsummaryrefslogtreecommitdiff
path: root/Tests/conftest.py
blob: 49286142009cf454c9d117c85e1ddce3cb502c3f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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