Merge pull request #1639 from dmpetrov/suppress_outputs_in_tests

Suppress outputs in tests
This commit is contained in:
Dmitry Petrov
2019-02-19 13:46:25 -08:00
committed by GitHub
7 changed files with 109 additions and 66 deletions
+1
View File
@@ -20,6 +20,7 @@ else:
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)
+11 -9
View File
@@ -11,6 +11,7 @@ import copy
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 @@ class TestWarnOnOutdatedStage(TestDvc):
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()
+16 -13
View File
@@ -10,6 +10,8 @@ from dvc.main import main
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 @@ class TestFailedImportMessage(TestDvc):
@patch("dvc.command.imp.urlparse")
def _test(self, imp_urlparse_patch):
logger.logger.handlers[1].stream = StringIO()
page_address = "http://somesite.com/file_name"
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")
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(),
)
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):
+4
View File
@@ -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()
+57 -43
View File
@@ -8,6 +8,7 @@ from tests.basic_env import TestDvc
import dvc.logger as logger
from dvc.utils.compat import StringIO
from tests.utils.logger import MockLoggerHandlers
class TestMetrics(TestDvc):
@@ -357,25 +358,26 @@ class TestMetricsCLI(TestMetrics):
ret = main(["add", "metric.unknown"])
self.assertEqual(ret, 0)
logger.logger.handlers[1].stream = StringIO()
ret = main(["metrics", "add", "metric.unknown", "-t", "unknown"])
self.assertEqual(ret, 1)
self.assertIn(
"failed to add metric file 'metric.unknown' - metric type 'unknown'"
" is not supported, must be one of [raw, json, csv, tsv, hcsv, htsv]",
logger.logger.handlers[1].stream.getvalue(),
)
with MockLoggerHandlers(logger.logger):
logger.logger.handlers[1].stream = StringIO()
ret = main(["metrics", "add", "metric.unknown", "-t", "unknown"])
self.assertEqual(ret, 1)
self.assertIn(
"failed to add metric file 'metric.unknown' - metric type 'unknown'"
" is not supported, must be one of [raw, json, csv, tsv, hcsv, htsv]",
logger.logger.handlers[1].stream.getvalue(),
)
ret = main(["metrics", "add", "metric.unknown", "-t", "raw"])
self.assertEqual(ret, 0)
ret = main(["metrics", "add", "metric.unknown", "-t", "raw"])
self.assertEqual(ret, 0)
logger.logger.handlers[0].stream = StringIO()
ret = main(["metrics", "show", "metric.unknown"])
self.assertEqual(ret, 0)
self.assertIn(
"\tmetric.unknown: unknown",
logger.logger.handlers[0].stream.getvalue(),
)
logger.logger.handlers[0].stream = StringIO()
ret = main(["metrics", "show", "metric.unknown"])
self.assertEqual(ret, 0)
self.assertIn(
"\tmetric.unknown: unknown",
logger.logger.handlers[0].stream.getvalue(),
)
def test_wrong_type_modify(self):
with open("metric.unknown", "w+") as fd:
@@ -385,25 +387,28 @@ class TestMetricsCLI(TestMetrics):
ret = main(["run", "-m", "metric.unknown"])
self.assertEqual(ret, 0)
logger.logger.handlers[1].stream = StringIO()
ret = main(["metrics", "modify", "metric.unknown", "-t", "unknown"])
self.assertEqual(ret, 1)
self.assertIn(
"failed to modify metric file settings - metric type 'unknown'"
" is not supported, must be one of [raw, json, csv, tsv, hcsv, htsv]",
logger.logger.handlers[1].stream.getvalue(),
)
with MockLoggerHandlers(logger.logger):
logger.logger.handlers[1].stream = StringIO()
ret = main(
["metrics", "modify", "metric.unknown", "-t", "unknown"]
)
self.assertEqual(ret, 1)
self.assertIn(
"failed to modify metric file settings - metric type 'unknown'"
" is not supported, must be one of [raw, json, csv, tsv, hcsv, htsv]",
logger.logger.handlers[1].stream.getvalue(),
)
ret = main(["metrics", "modify", "metric.unknown", "-t", "CSV"])
self.assertEqual(ret, 0)
ret = main(["metrics", "modify", "metric.unknown", "-t", "CSV"])
self.assertEqual(ret, 0)
logger.logger.handlers[0].stream = StringIO()
ret = main(["metrics", "show", "metric.unknown"])
self.assertEqual(ret, 0)
self.assertIn(
"\tmetric.unknown: unknown",
logger.logger.handlers[0].stream.getvalue(),
)
logger.logger.handlers[0].stream = StringIO()
ret = main(["metrics", "show", "metric.unknown"])
self.assertEqual(ret, 0)
self.assertIn(
"\tmetric.unknown: unknown",
logger.logger.handlers[0].stream.getvalue(),
)
def test_wrong_type_show(self):
with open("metric.unknown", "w+") as fd:
@@ -413,15 +418,24 @@ class TestMetricsCLI(TestMetrics):
ret = main(["run", "-m", "metric.unknown"])
self.assertEqual(ret, 0)
logger.logger.handlers[0].stream = StringIO()
ret = main(
["metrics", "show", "metric.unknown", "-t", "unknown", "-x", "0,0"]
)
self.assertEqual(ret, 0)
self.assertIn(
"\tmetric.unknown: unknown",
logger.logger.handlers[0].stream.getvalue(),
)
with MockLoggerHandlers(logger.logger):
logger.logger.handlers[0].stream = StringIO()
ret = main(
[
"metrics",
"show",
"metric.unknown",
"-t",
"unknown",
"-x",
"0,0",
]
)
self.assertEqual(ret, 0)
self.assertIn(
"\tmetric.unknown: unknown",
logger.logger.handlers[0].stream.getvalue(),
)
class TestNoMetrics(TestDvc):
-1
View File
@@ -1,6 +1,5 @@
import hashlib
import os
import socket
import threading
from dvc.utils.compat import HTTPServer, SimpleHTTPRequestHandler
+20
View File
@@ -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