From fecaa5a0a29655dee20ae88d3bedd00f017dc322 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Tue, 19 Feb 2019 13:03:37 -0800 Subject: [PATCH] Suppress tests output --- tests/__main__.py | 1 + tests/test_data_cloud.py | 20 +++++++++++--------- tests/test_import.py | 33 ++++++++++++++++++--------------- tests/test_logger.py | 4 ++++ tests/utils/logger.py | 20 ++++++++++++++++++++ 5 files changed, 54 insertions(+), 24 deletions(-) create mode 100644 tests/utils/logger.py diff --git a/tests/__main__.py b/tests/__main__.py index ab9e891e09..1f05cc4178 100644 --- a/tests/__main__.py +++ b/tests/__main__.py @@ -20,6 +20,7 @@ cmd = ( "nosetests -v --processes=-1 --process-timeout=500 --cover-inclusive " "--cover-erase --cover-package=dvc --with-coverage --with-flaky " + "--logging-clear-handlers " "{scope} ".format(scope=scope) ) check_call(cmd, shell=True) diff --git a/tests/test_data_cloud.py b/tests/test_data_cloud.py index 66fdc5205f..fb6490e7c4 100644 --- a/tests/test_data_cloud.py +++ b/tests/test_data_cloud.py @@ -11,6 +11,7 @@ from dvc.state import State from mock import patch +from tests.utils.logger import MockLoggerHandlers import dvc.logger as logger from dvc.utils.compat import str @@ -637,15 +638,16 @@ def _test(self): with open(stage_file_path, "w") as stage_file: yaml.dump(content, stage_file) - logger.logger.handlers[0].stream = StringIO() - self.main(["status", "-c"]) - self.assertIn( - "Warning: Output 'bar'(Stage: 'bar.dvc') is " - "missing version info. Cache for it will not be " - "collected. Use dvc repro to get your pipeline up to " - "date.", - logger.logger.handlers[0].stream.getvalue(), - ) + with MockLoggerHandlers(logger.logger): + logger.logger.handlers[0].stream = StringIO() + self.main(["status", "-c"]) + self.assertIn( + "Warning: Output 'bar'(Stage: 'bar.dvc') is " + "missing version info. Cache for it will not be " + "collected. Use dvc repro to get your pipeline up to " + "date.", + logger.logger.handlers[0].stream.getvalue(), + ) def test(self): self.color_patch.start() diff --git a/tests/test_import.py b/tests/test_import.py index 0dcbcb6a0b..ff33051219 100644 --- a/tests/test_import.py +++ b/tests/test_import.py @@ -10,6 +10,8 @@ from mock import patch, mock_open, call from tests.basic_env import TestDvc from tests.utils.httpd import StaticFileServer +from tests.utils.logger import MockLoggerHandlers + from dvc.utils.compat import StringIO @@ -53,21 +55,22 @@ def test(self): @patch("dvc.command.imp.urlparse") def _test(self, imp_urlparse_patch): - logger.logger.handlers[1].stream = StringIO() - page_address = "http://somesite.com/file_name" - - def dvc_exception(*args, **kwargs): - raise DvcException("message") - - imp_urlparse_patch.side_effect = dvc_exception - main(["import", page_address]) - self.assertIn( - "Error: failed to import " - "http://somesite.com/file_name. You could also try " - "downloading it manually and adding it with `dvc add` " - "command.", - logger.logger.handlers[1].stream.getvalue(), - ) + with MockLoggerHandlers(logger.logger): + logger.logger.handlers[1].stream = StringIO() + page_address = "http://somesite.com/file_name" + + def dvc_exception(*args, **kwargs): + raise DvcException("message") + + imp_urlparse_patch.side_effect = dvc_exception + main(["import", page_address]) + self.assertIn( + "Error: failed to import " + "http://somesite.com/file_name. You could also try " + "downloading it manually and adding it with `dvc add` " + "command.", + logger.logger.handlers[1].stream.getvalue(), + ) class TestInterruptedDownload(TestDvc): diff --git a/tests/test_logger.py b/tests/test_logger.py index 864f1a9502..8d1628ae41 100644 --- a/tests/test_logger.py +++ b/tests/test_logger.py @@ -14,6 +14,10 @@ class TestLogger(TestCase): color_patch = patch.object(logger, "colorize", new=lambda x, color="": x) def setUp(self): + logger.logger.handlers = [ + logger.logging.StreamHandler(), + logger.logging.StreamHandler(), + ] logger.logger.handlers[0].stream = StringIO() logger.logger.handlers[1].stream = StringIO() logger.set_default_level() diff --git a/tests/utils/logger.py b/tests/utils/logger.py new file mode 100644 index 0000000000..cc34b1f46c --- /dev/null +++ b/tests/utils/logger.py @@ -0,0 +1,20 @@ +import logging + + +class MockLoggerHandlers(object): + def __init__(self, l, num=2): + self._logger = l + self._handlers = l.handlers + self._num = num + + def __enter__(self): + self._logger.handlers = [ + logging.FileHandler("tmp{}.log".format(i)) + for i in range(self._num) + ] + return self + + def __exit__(self, exc_type=None, exc_val=None, exc_tb=None): + for h in self._logger.handlers: + h.close() + self._logger.handlers = self._handlers