Files
dvc/tests/test_import.py
T
2019-01-30 03:48:36 +02:00

69 lines
2.0 KiB
Python

from dvc.utils.compat import str
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
from dvc.utils.compat import StringIO
class TestCmdImport(TestDvc):
def test(self):
ret = main(["import", self.FOO, "import"])
self.assertEqual(ret, 0)
self.assertTrue(os.path.exists("import.dvc"))
ret = main(["import", "non-existing-file", "import"])
self.assertNotEqual(ret, 0)
def test_unsupported(self):
ret = main(["import", "unsupported://path", "import_unsupported"])
self.assertNotEqual(ret, 0)
class TestDefaultOutput(TestDvc):
def test(self):
tmpdir = self.mkdtemp()
filename = str(uuid4())
tmpfile = os.path.join(tmpdir, filename)
with open(tmpfile, "w") as fd:
fd.write("content")
ret = main(["import", tmpfile])
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(),
)