mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-02 07:18:25 +01:00
checkout test: add remove file test and gitignore test
This commit is contained in:
+91
-5
@@ -4,11 +4,7 @@ import shutil
|
||||
import filecmp
|
||||
|
||||
from dvc.main import main
|
||||
from dvc.data_cloud import file_md5
|
||||
from dvc.stage import Stage, CmdOutputNoCacheError, CmdOutputOutsideOfRepoError
|
||||
from dvc.stage import CmdOutputDoesNotExistError, CmdOutputIsNotFileError
|
||||
from dvc.project import StageNotFoundError
|
||||
|
||||
from tests.basic_env import TestDvc
|
||||
from tests.test_repro import TestRepro
|
||||
|
||||
|
||||
@@ -35,3 +31,93 @@ class TestCmdCheckout(TestCheckout):
|
||||
ret = main(['checkout'])
|
||||
self.assertEqual(ret, 0)
|
||||
self._test_checkout()
|
||||
|
||||
|
||||
class CheckoutBase(TestDvc):
|
||||
GIT_IGNORE = '.gitignore'
|
||||
|
||||
def commit_data_file(self, fname, content='random text'):
|
||||
with open(fname, 'w') as fd:
|
||||
fd.write(content)
|
||||
self.dvc.add(fname)
|
||||
self.dvc.scm.add([fname + '.dvc', '.gitignore'])
|
||||
self.dvc.scm.commit('adding ' + fname)
|
||||
|
||||
def read_ignored(self):
|
||||
return map(lambda s: s.strip('\n'), open(self.GIT_IGNORE).readlines())
|
||||
|
||||
|
||||
class TestRemoveFilesWhenCheckout(CheckoutBase):
|
||||
def test(self):
|
||||
fname = 'file_in_a_branch'
|
||||
branch_master = 'master'
|
||||
branch_1 = 'b1'
|
||||
|
||||
self.dvc.scm.add(self.dvc.scm.untracked_files())
|
||||
self.dvc.scm.commit('add all files')
|
||||
|
||||
# add the file into a separate branch
|
||||
self.dvc.scm.checkout(branch_1, True)
|
||||
main(['checkout'])
|
||||
self.commit_data_file(fname)
|
||||
|
||||
# Checkout back in master
|
||||
self.dvc.scm.checkout(branch_master)
|
||||
self.assertTrue(os.path.exists(fname))
|
||||
|
||||
# Make sure `dvc checkout` removes the file
|
||||
# self.dvc.checkout()
|
||||
main(['checkout'])
|
||||
self.assertFalse(os.path.exists(fname))
|
||||
|
||||
|
||||
class TestGitIgnoreBasic(CheckoutBase):
|
||||
def test(self):
|
||||
fname1 = 'file_1'
|
||||
fname2 = 'file_2'
|
||||
|
||||
self.dvc.scm.add(self.dvc.scm.untracked_files())
|
||||
self.dvc.scm.commit('add all files')
|
||||
|
||||
self.assertFalse(os.path.exists(self.GIT_IGNORE))
|
||||
|
||||
self.commit_data_file(fname1)
|
||||
self.commit_data_file(fname2)
|
||||
|
||||
self.assertTrue(os.path.exists(self.GIT_IGNORE))
|
||||
|
||||
ignored = self.read_ignored()
|
||||
|
||||
self.assertEqual(len(ignored), 2) # FAILS!!!
|
||||
|
||||
self.assertIn(fname1, ignored)
|
||||
self.assertIn(fname2, ignored) # FAILS!!!
|
||||
|
||||
|
||||
class TestGitIgnoreWhenCheckout(CheckoutBase):
|
||||
def test(self):
|
||||
fname_master = 'file_in_a_master'
|
||||
branch_master = 'master'
|
||||
fname_branch = 'file_in_a_branch'
|
||||
branch_1 = 'b1'
|
||||
|
||||
self.dvc.scm.add(self.dvc.scm.untracked_files())
|
||||
self.dvc.scm.commit('add all files')
|
||||
self.commit_data_file(fname_master)
|
||||
|
||||
self.dvc.scm.checkout(branch_1, True)
|
||||
main(['checkout'])
|
||||
self.commit_data_file(fname_branch)
|
||||
|
||||
self.dvc.scm.checkout(branch_master)
|
||||
main(['checkout'])
|
||||
|
||||
ignored = self.read_ignored()
|
||||
|
||||
self.assertEqual(len(ignored), 1)
|
||||
self.assertIn(fname_master, ignored)
|
||||
|
||||
self.dvc.scm.checkout(branch_1)
|
||||
main(['checkout'])
|
||||
ignored = self.read_ignored()
|
||||
self.assertIn(fname_branch, ignored) # FAILS!!!
|
||||
|
||||
Reference in New Issue
Block a user