Release v2.26.0 #284
@@ -51,9 +51,10 @@ class TestRelativePerDirDeleteScope:
|
|||||||
|
|
||||||
@requires_rsync
|
@requires_rsync
|
||||||
@pytest.mark.ci
|
@pytest.mark.ci
|
||||||
|
@pytest.mark.parametrize("mt", [False, True])
|
||||||
@pytest.mark.parametrize("timing", ["--delete-during", "--delete-delay"])
|
@pytest.mark.parametrize("timing", ["--delete-during", "--delete-delay"])
|
||||||
def test_prefix_scoped_delete_matches_rsync(self, timing):
|
def test_prefix_scoped_delete_matches_rsync(self, timing, mt):
|
||||||
source = os.path.join(TEST_DATA_DIR, "delblk_src")
|
source = os.path.join(TEST_DATA_DIR, f"delblk_src{int(mt)}")
|
||||||
clean_dir(source)
|
clean_dir(source)
|
||||||
_write(os.path.join(source, "foo", "a.txt"), b"payload\n")
|
_write(os.path.join(source, "foo", "a.txt"), b"payload\n")
|
||||||
spec = source + "/./foo"
|
spec = source + "/./foo"
|
||||||
@@ -63,15 +64,16 @@ class TestRelativePerDirDeleteScope:
|
|||||||
_write(os.path.join(root, "foo", "extra.txt"), b"stale\n")
|
_write(os.path.join(root, "foo", "extra.txt"), b"stale\n")
|
||||||
_write(os.path.join(root, "unrelated", "keep.txt"), b"keep\n")
|
_write(os.path.join(root, "unrelated", "keep.txt"), b"keep\n")
|
||||||
|
|
||||||
rdst = os.path.join(TEST_DATA_DIR, "delblk_rdst")
|
rdst = os.path.join(TEST_DATA_DIR, f"delblk_rdst{int(mt)}")
|
||||||
dest = os.path.join(TEST_DATA_DIR, "delblk_dst")
|
dest = os.path.join(TEST_DATA_DIR, f"delblk_dst{int(mt)}")
|
||||||
seed(rdst)
|
seed(rdst)
|
||||||
seed(dest)
|
seed(dest)
|
||||||
r = _rsync(["-aR", timing, spec, rdst + "/"])
|
r = _rsync(["-aR", timing, spec, rdst + "/"])
|
||||||
assert r.returncode == 0, r.stderr
|
assert r.returncode == 0, r.stderr
|
||||||
with ServerManager() as server:
|
with ServerManager() as server:
|
||||||
server.start(extra_args=["--allow-delete"])
|
server.start(extra_args=["--allow-delete"])
|
||||||
result, _ = run_client(spec, dest, flags=["-a", "-R", timing], port=server.port)
|
flags = ["-a", "-R", timing] + (["--threads"] if mt else [])
|
||||||
|
result, _ = run_client(spec, dest, flags=flags, port=server.port)
|
||||||
assert result.returncode == 0, (result.stderr or result.stdout)[:300]
|
assert result.returncode == 0, (result.stderr or result.stdout)[:300]
|
||||||
#The prefix's parent-directory sibling survives on both sides.
|
#The prefix's parent-directory sibling survives on both sides.
|
||||||
assert os.path.isfile(os.path.join(dest, "unrelated", "keep.txt"))
|
assert os.path.isfile(os.path.join(dest, "unrelated", "keep.txt"))
|
||||||
@@ -268,11 +270,12 @@ class TestEmptySourceDirectoryDelete:
|
|||||||
|
|
||||||
@requires_rsync
|
@requires_rsync
|
||||||
@pytest.mark.ci
|
@pytest.mark.ci
|
||||||
|
@pytest.mark.parametrize("mt", [False, True])
|
||||||
@pytest.mark.parametrize("timing", ["--delete-during", "--delete-delay"])
|
@pytest.mark.parametrize("timing", ["--delete-during", "--delete-delay"])
|
||||||
def test_empty_source_dir_survives_matches_rsync(self, timing):
|
def test_empty_source_dir_survives_matches_rsync(self, timing, mt):
|
||||||
source = os.path.join(TEST_DATA_DIR, "emptydir_src")
|
source = os.path.join(TEST_DATA_DIR, f"emptydir_src{int(mt)}")
|
||||||
dest = os.path.join(TEST_DATA_DIR, "emptydir_dst")
|
dest = os.path.join(TEST_DATA_DIR, f"emptydir_dst{int(mt)}")
|
||||||
rdst = os.path.join(TEST_DATA_DIR, "emptydir_rdst")
|
rdst = os.path.join(TEST_DATA_DIR, f"emptydir_rdst{int(mt)}")
|
||||||
clean_dir(source)
|
clean_dir(source)
|
||||||
os.makedirs(os.path.join(source, "empty"))
|
os.makedirs(os.path.join(source, "empty"))
|
||||||
_write(os.path.join(source, "keep.txt"), b"keep\n")
|
_write(os.path.join(source, "keep.txt"), b"keep\n")
|
||||||
@@ -287,7 +290,8 @@ class TestEmptySourceDirectoryDelete:
|
|||||||
assert not os.path.exists(os.path.join(rdst, "empty", "extra.txt"))
|
assert not os.path.exists(os.path.join(rdst, "empty", "extra.txt"))
|
||||||
with ServerManager() as server:
|
with ServerManager() as server:
|
||||||
server.start(extra_args=["--allow-delete"])
|
server.start(extra_args=["--allow-delete"])
|
||||||
result, _ = run_client(source, dest, flags=["-a", timing], port=server.port)
|
flags = ["-a", timing] + (["--threads"] if mt else [])
|
||||||
|
result, _ = run_client(source, dest, flags=flags, port=server.port)
|
||||||
assert result.returncode == 0, (result.stderr or result.stdout)[:300]
|
assert result.returncode == 0, (result.stderr or result.stdout)[:300]
|
||||||
assert os.path.isdir(os.path.join(received, "empty")), \
|
assert os.path.isdir(os.path.join(received, "empty")), \
|
||||||
"empty source directory was removed"
|
"empty source directory was removed"
|
||||||
|
|||||||
Reference in New Issue
Block a user