From e4f0b4c1b7ec0f1971ecb4532636e70e4d10f08c Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Tue, 1 Jan 2019 13:33:05 -0800 Subject: [PATCH] Only configure logging inside the context --- pre_commit/logging_handler.py | 11 +++++++++-- pre_commit/main.py | 6 ++---- tests/conftest.py | 5 +++-- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/pre_commit/logging_handler.py b/pre_commit/logging_handler.py index c043a8ac..a1e2c086 100644 --- a/pre_commit/logging_handler.py +++ b/pre_commit/logging_handler.py @@ -1,5 +1,6 @@ from __future__ import unicode_literals +import contextlib import logging from pre_commit import color @@ -34,6 +35,12 @@ class LoggingHandler(logging.Handler): ) -def add_logging_handler(*args, **kwargs): - logger.addHandler(LoggingHandler(*args, **kwargs)) +@contextlib.contextmanager +def logging_handler(*args, **kwargs): + handler = LoggingHandler(*args, **kwargs) + logger.addHandler(handler) logger.setLevel(logging.INFO) + try: + yield + finally: + logger.removeHandler(handler) diff --git a/pre_commit/main.py b/pre_commit/main.py index 71995f15..6a9c120c 100644 --- a/pre_commit/main.py +++ b/pre_commit/main.py @@ -20,7 +20,7 @@ from pre_commit.commands.sample_config import sample_config from pre_commit.commands.try_repo import try_repo from pre_commit.error_handler import error_handler from pre_commit.error_handler import FatalError -from pre_commit.logging_handler import add_logging_handler +from pre_commit.logging_handler import logging_handler from pre_commit.store import Store from pre_commit.util import CalledProcessError @@ -248,9 +248,7 @@ def main(argv=None): elif args.command == 'help': parser.parse_args(['--help']) - with error_handler(): - add_logging_handler(args.color) - + with error_handler(), logging_handler(args.color): _adjust_args_and_chdir(args) store = Store() diff --git a/tests/conftest.py b/tests/conftest.py index 7479a7b7..c7d81562 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -11,7 +11,7 @@ import pytest import six from pre_commit import output -from pre_commit.logging_handler import add_logging_handler +from pre_commit.logging_handler import logging_handler from pre_commit.store import Store from pre_commit.util import cmd_output from testing.fixtures import git_dir @@ -155,7 +155,8 @@ def dont_write_to_home_directory(): @pytest.fixture(autouse=True, scope='session') def configure_logging(): - add_logging_handler(use_color=False) + with logging_handler(use_color=False): + yield @pytest.fixture