示例#1
0
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)
示例#2
0
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
示例#3
0
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
示例#4
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
示例#5
0
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()
示例#6
0
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()
示例#7
0
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"
示例#8
0
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
示例#9
0
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)
示例#10
0
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()
示例#11
0
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"