Files
dvc/tests/test_diff.py
T
Zhanibek c2639cfb3a dvc: add support for dvc diff command
Some summary statistics regarding the folder/file.
How many files were added/deleted/modified. How size changed.
TO DO things:
1)To  support for detecting diff after `dvc move`
command.
2)To add unit tests.
2019-04-05 15:02:28 +06:00

97 lines
2.9 KiB
Python

from __future__ import unicode_literals
import os
from dvc.main import main
from dvc.scm.base import FileNotInRepoError
from tests.basic_env import TestDvc
class TestDiff(TestDvc):
def setUp(self):
super(TestDiff, self).setUp()
self.new_file = "new_file"
self.create(self.new_file, self.new_file)
self.dvc.add(self.new_file)
self.a_ref = self.git.head.commit
self.git.index.add([self.new_file + ".dvc"])
self.git.index.commit("adds new_file")
def test(self):
out = self.dvc.scm.diff(self.new_file, self.a_ref)
self.assertTrue(out["deleted_file"])
self.assertEqual("new_file.dvc", out["file_path"])
class TestDiffRepo(TestDiff):
def test(self):
msg = self.dvc.diff(self.new_file, a_ref=self.a_ref)
self.assertTrue("deleted file" in msg)
self.assertTrue(self.new_file in msg)
class TestDiffCmdLine(TestDiff):
def test(self):
ret = main(["diff", self.new_file, str(self.a_ref)])
self.assertEqual(ret, 0)
class TestDiffDir(TestDvc):
def setUp(self):
super(TestDiffDir, self).setUp()
self.dvc.add(self.DATA_DIR)
self.git.index.add([self.DATA_DIR + ".dvc"])
self.git.index.commit("adds data_dir")
self.a_ref = str(self.dvc.scm.git.head.commit)
self.new_file = os.path.join(self.DATA_SUB_DIR, "new_file")
self.create(self.new_file, self.new_file)
self.dvc.add(self.DATA_DIR)
self.git.index.add([self.DATA_DIR + ".dvc"])
self.git.index.commit(message="adds data_dir with new_file")
def test(self):
out = self.dvc.scm.diff(self.DATA_DIR, self.a_ref)
self.assertFalse(out["deleted_file"], "new file added checker failed")
self.assertEqual(
self.DATA_DIR + ".dvc",
out["file_path"],
"path to file/folder is incorrect",
)
class TestDiffDirRepo(TestDiffDir):
def test(self):
msg = self.dvc.diff(self.DATA_DIR, a_ref=self.a_ref)
self.assertTrue("1 file deleted" in msg, msg)
self.assertTrue("size was decreased by " in msg, msg)
class TestDiffFileNotFound(TestDiffDir):
def setUp(self):
super(TestDiffFileNotFound, self).setUp()
self.unknown_file = "unknown_file_" + str(id(self))
def test(self):
with self.assertRaises(
FileNotInRepoError, msg="diff with incorrect arg"
) as context:
self.dvc.scm.diff(self.unknown_file, self.a_ref)
self.assertTrue(
"Have not found file/folder" in str(context.exception),
"scm raises with incorrect error message",
)
class TestDiffFileNotFoundRepo(TestDiffFileNotFound):
def test(self):
with self.assertRaises(
FileNotInRepoError, msg="diff with incorrect arg"
) as context:
self.dvc.diff(self.unknown_file, a_ref=self.a_ref)
self.assertTrue("Have not found file/folder" in str(context.exception))