def test_change_file_back_in_time(cleandir): c.init() p = Path() / 'test_new.txt' p.touch() r = c.init() c.commit(r) r = c.init() v = c.get_versions(r)[0] p.write_text('change1') r = c.init() c.commit(r) r = c.init() vs = c.get_versions(r) vtime = vs[0].time before = v.time #- timedelta(microseconds=1) after = v.time + timedelta(microseconds=10) r = c.init() c.ft_at_time(r, before) assert not p.read_text() p.write_text('change2') r = c.init() assert not c.changed_files(r)
def test_recent_versions(cleandir): root = c.init() ft = c.find_file(root, 'test.txt') v1 = c.get_versions(root) assert not v1 v = c.Version(uuid1(), datetime.now()) mod = c.Mod(v, "data", "hi") ft.mods.append(mod) v2 = c.get_versions(root) assert v2 assert v2[0].time > root.init
def test_commit(cleandir): root = c.init() # new file p = Path() / 'new_file.txt' p.touch() # changed file p2 = Path() / 'test_dir' / 'test.txt' p2.write_text('change') # moved file f = Path() f = f / 'test_dir' / 'sub_dir' / 'test2.txt' p3 = Path() / 'test_dir' / 'empty_dir' c.mv_file(root, f, p3) # moved file 2 f = Path() / 'test3.txt' dest = Path() / 'test_dir' / 'test3.txt' f.rename(dest) # moved file 3 f = Path() / 'test5.txt' cd = os.getcwd() os.chdir('..') newdir = Path(tempfile.mkdtemp()) os.chdir(cd) f.rename(newdir / 'test5.txt') # removed file p4 = Path() / 'test_dir' / 'empty_dir' / 'test2.txt' c.rm_file(root, p4) # removed file 2 p5 = Path() / 'test4.txt' p5.unlink() v1 = c.get_versions(root) c.commit(root) assert c.find_file_path(root, p) v2 = c.get_versions(root) cf2 = c.changed_files(root) print(cf2) assert len(v2) == (len(v1) + 1) assert len(cf2) == 0
def test_new_file_version(cleandir): root = c.init() p = Path() / 'test_dir' / 'new_file2.txt' p.touch() root = c.init() c.commit(root) root = c.init() v = c.get_versions(root) assert v
def test_remove_change_in_time(cleandir): root = c.init() p = Path() / 'test_dir' / 'test.txt' c.rm_file(root, p) vtime = c.get_versions(root)[-1].time before = vtime - timedelta(microseconds=10) after = vtime + timedelta(microseconds=10) c.ft_at_time(root, before) assert p.exists() c.ft_at_time(root, after) assert not p.exists()
def test_path_change_in_time(cleandir): root = c.init() c.mv_file(root, Path() / 'test3.txt', Path() / 'test_dir') vtime = c.get_versions(root)[-1].time before = vtime - timedelta(microseconds=10) after = vtime + timedelta(microseconds=10) c.ft_at_time(root, before) assert (Path() / 'test3.txt').exists() assert not (Path() / 'test_dir' / 'test3.txt').exists() c.ft_at_time(root, after) assert not (Path() / 'test3.txt').exists() assert (Path() / 'test_dir' / 'test3.txt').exists()
def test_data_change_in_time(cleandir): root = c.init() p = Path() / 'test_dir' / 'test.txt' old_data = p.read_text() time.sleep(.02) p.write_text('change') c.commit(root) vtime = c.get_versions(root)[-1].time before = vtime - timedelta(microseconds=10) after = vtime + timedelta(microseconds=10) c.ft_at_time(root, before) data = p.read_text() assert data == old_data c.ft_at_time(root, after) data = p.read_text() assert data == "change"
def test_mv_file(cleandir): root = c.init() f = Path() f = f / 'test_dir' / 'test.txt' p = Path() / 'test_dir' / 'sub_dir' newfp = p / 'test.txt' c.mv_file(root, f, p) print(f) assert not f.exists() assert newfp.exists() ft = c.find_file(root, 'test.txt') assert c.resolve(ft).path == newfp parent = c.find_file_path(root, p) assert parent.children != c.resolve(parent).children assert c.find_file_path(root, newfp) assert len(c.get_versions(root)) == 1
def test_commit_when_not_current(cleandir): c.init() d = Path() / 'new' d.mkdir() p = d / 'new_file.txt' p.touch() root = c.init() c.commit(root) vtime = c.get_versions(root)[-1].time before = vtime - timedelta(microseconds=10) root = c.init() c.ft_at_time(root, before) (Path() / 'test3.txt').write_text('changed') root = c.init() assert not c.changed_files(root) root = c.init() pytest.raises(c.CairoException, c.commit, root)
def test_remove2_change_in_time(cleandir): c.init() p = Path() / 'test_dir' / 'test.txt' p.unlink() root = c.init() c.commit(root) vtime = c.get_versions(root)[-1].time before = vtime - timedelta(microseconds=1) after = vtime + timedelta(microseconds=10) root = c.init() c.ft_at_time(root, before) root = c.init() assert not c.changed_files(root) assert p.exists() root = c.init() c.ft_at_time(root, after) assert not p.exists()
def test_move_and_data_change_in_time(cleandir): root = c.init() src = Path() / 'test_dir' / 'test.txt' dest = Path() / 'test_dir' / 'empty_dir' / 'test.txt' src.rename(dest) old_data = dest.read_text() time.sleep(.02) dest.write_text('change') c.commit(root) vtime = c.get_versions(root)[-1].time before = vtime - timedelta(microseconds=10) after = vtime + timedelta(microseconds=10) c.ft_at_time(root, before) data = src.read_text() assert data == old_data c.ft_at_time(root, after) data = dest.read_text() assert data == "change"