From 52ffae81c4d7e4fa72769548c3b282af73ae4f53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Redzy=C5=84ski?= Date: Tue, 15 Jan 2019 10:48:02 +0100 Subject: [PATCH] imp: refactor import message (#1501) * imp: refactor import message * import: reword error message Signed-off-by: Ruslan Kuprieiev --- dvc/command/imp.py | 4 +++- tests/test_import.py | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/dvc/command/imp.py b/dvc/command/imp.py index 77390b620..46e497490 100644 --- a/dvc/command/imp.py +++ b/dvc/command/imp.py @@ -17,6 +17,8 @@ class CmdImport(CmdBase): self.project.imp(self.args.url, out) except DvcException: - logger.error('failed to import {}'.format(self.args.url)) + logger.error('failed to import {}. You could also try downloading ' + 'it manually and adding it with `dvc add` command.' + .format(self.args.url)) return 1 return 0 diff --git a/tests/test_import.py b/tests/test_import.py index c1e6cca7b..0ea0b6fa1 100644 --- a/tests/test_import.py +++ b/tests/test_import.py @@ -1,10 +1,17 @@ import os from uuid import uuid4 +from dvc import logger +from dvc.exceptions import DvcException from dvc.main import main - +from mock import patch from tests.basic_env import TestDvc +try: + from StringIO import StringIO +except ImportError: + from io import StringIO + class TestCmdImport(TestDvc): def test(self): @@ -33,3 +40,28 @@ class TestDefaultOutput(TestDvc): self.assertEqual(ret, 0) self.assertTrue(os.path.exists(filename)) self.assertEqual(open(filename).read(), 'content') + + +class TestFailedImportMessage(TestDvc): + color_patch = patch.object(logger, 'colorize', new=lambda x, color='': x) + + def test(self): + self.color_patch.start() + self._test() + self.color_patch.stop() + + @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())