mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-05 23:09:32 +01:00
From now on we allow specifying standalone cache dirs as well as specifying linking method(copy, symlink, hardlink, reflink) for it. If 'cache type' is not specified in the config, dvc will try all of them starting from reflink all the way down to copy. Signed-off-by: Ruslan Kuprieiev <[email protected]>
47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
import os
|
|
import stat
|
|
import time
|
|
|
|
from dvc.system import System
|
|
from dvc.state import State, StateEntry
|
|
from dvc.utils import file_md5
|
|
|
|
from tests.basic_env import TestDvc
|
|
|
|
|
|
class TestState(TestDvc):
|
|
def test_update(self):
|
|
path = os.path.join(self.dvc.root_dir, self.FOO)
|
|
md5 = file_md5(path)[0]
|
|
mtime = os.path.getmtime(path)
|
|
inode = System.inode(path)
|
|
|
|
state = State(self.dvc.dvc_dir)
|
|
|
|
entry_md5 = state.update(path)
|
|
self.assertEqual(entry_md5, md5)
|
|
|
|
# Sleep some time to simulate realistic behavior.
|
|
# Some filesystems have a bad date resolution for
|
|
# mtime(i.e. 1sec for HFS) that cause problems with
|
|
# our 'state' system not being able to distinguish
|
|
# files that were modified within that delta.
|
|
time.sleep(1)
|
|
|
|
os.unlink(path)
|
|
with open(path, 'w+') as fd:
|
|
fd.write('1')
|
|
|
|
md5 = file_md5(path)[0]
|
|
mtime = os.path.getmtime(path)
|
|
inode = System.inode(path)
|
|
|
|
entry_md5 = state.update(path)
|
|
self.assertEqual(entry_md5, md5)
|
|
|
|
# Reload state db to make sure that it stays the same
|
|
old_db = state._db
|
|
state = State(self.dvc.dvc_dir)
|
|
new_db = state._db
|
|
self.assertEqual(old_db, new_db)
|