mirror of
https://github.com/upa/mscp.git
synced 2026-02-17 11:44:48 +08:00
fix copy multiple files and various tiny fixes
* when coping multiple files, target must be directory * add multi-src copy test and parametrize src/dst prefixes * cleanup REAMDE (s/sessions/connections/g) * make error output in copy functions simple
This commit is contained in:
@@ -29,6 +29,7 @@ param_invalid_hostnames = [
|
||||
(["a:a", "b:b", "c:c"]), (["a:a", "b:b", "c"]), (["a:a", "b", "c:c"]),
|
||||
(["a", "b:b", "c:c"])
|
||||
]
|
||||
|
||||
@pytest.mark.parametrize("args", param_invalid_hostnames)
|
||||
def test_nonidentical_hostnames(mscp, args):
|
||||
run2ng([mscp] + args)
|
||||
@@ -39,6 +40,9 @@ def test_nonidentical_hostnames(mscp, args):
|
||||
""" copy test """
|
||||
|
||||
remote_prefix = "localhost:{}/".format(os.getcwd()) # use current dir
|
||||
param_remote_prefix = [
|
||||
("", remote_prefix), (remote_prefix, "")
|
||||
]
|
||||
|
||||
param_single_copy = [
|
||||
(File("src", size = 64), File("dst")),
|
||||
@@ -46,23 +50,33 @@ param_single_copy = [
|
||||
(File("src", size = 128 * 1024 * 1024), File("dst")),
|
||||
]
|
||||
|
||||
@pytest.mark.parametrize("src_prefix, dst_prefix", param_remote_prefix)
|
||||
@pytest.mark.parametrize("src, dst", param_single_copy)
|
||||
def test_single_copy_remote2local(mscp, src, dst):
|
||||
def test_single_copy(mscp, src_prefix, dst_prefix, src, dst):
|
||||
src.make()
|
||||
run2ok([mscp, "-H", remote_prefix + src.path, dst.path])
|
||||
assert check_same_md5sum(src, dst)
|
||||
src.cleanup()
|
||||
dst.cleanup()
|
||||
|
||||
@pytest.mark.parametrize("src, dst", param_single_copy)
|
||||
def test_single_copy_local2remote(mscp, src, dst):
|
||||
src.make()
|
||||
run2ok([mscp, "-H", src.path, remote_prefix + dst.path])
|
||||
run2ok([mscp, "-H", src_prefix + src.path, dst_prefix + dst.path])
|
||||
assert check_same_md5sum(src, dst)
|
||||
src.cleanup()
|
||||
dst.cleanup()
|
||||
|
||||
|
||||
param_double_copy = [
|
||||
(File("src1", size = 1024 * 1024), File("src2", size = 1024 * 1024),
|
||||
File("dst/src1"), File("dst/src2")
|
||||
)
|
||||
]
|
||||
@pytest.mark.parametrize("src_prefix, dst_prefix", param_remote_prefix)
|
||||
@pytest.mark.parametrize("s1, s2, d1, d2", param_double_copy)
|
||||
def test_double_copy(mscp, src_prefix, dst_prefix, s1, s2, d1, d2):
|
||||
s1.make()
|
||||
s2.make()
|
||||
run2ok([mscp, "-H", src_prefix + s1.path, src_prefix + s2.path, dst_prefix + "dst"])
|
||||
assert check_same_md5sum(s1, d1)
|
||||
assert check_same_md5sum(s2, d2)
|
||||
s1.cleanup()
|
||||
s2.cleanup()
|
||||
d1.cleanup()
|
||||
d2.cleanup()
|
||||
|
||||
param_dir_copy = [
|
||||
( "src_dir", "dst_dir",
|
||||
@@ -87,16 +101,17 @@ does not exist. If dst_dir exists, scp copies src_dir to
|
||||
dst_dir/src_dir. So, this test checks both cases.
|
||||
"""
|
||||
|
||||
@pytest.mark.parametrize("src_prefix, dst_prefix", param_remote_prefix)
|
||||
@pytest.mark.parametrize("src_dir, dst_dir, src, dst, twice", param_dir_copy)
|
||||
def test_dir_copy_remote2local(mscp, src_dir, dst_dir, src, dst, twice):
|
||||
def test_dir_copy(mscp, src_prefix, dst_prefix, src_dir, dst_dir, src, dst, twice):
|
||||
for f in src:
|
||||
f.make()
|
||||
|
||||
run2ok([mscp, "-H", remote_prefix + src_dir, dst_dir])
|
||||
run2ok([mscp, "-H", src_prefix + src_dir, dst_prefix + dst_dir])
|
||||
for sf, df in zip(src, dst):
|
||||
assert check_same_md5sum(sf, df)
|
||||
|
||||
run2ok([mscp, "-H", remote_prefix + src_dir, dst_dir])
|
||||
run2ok([mscp, "-H", src_prefix + src_dir, dst_prefix + dst_dir])
|
||||
for sf, df in zip(src, twice):
|
||||
assert check_same_md5sum(sf, df)
|
||||
|
||||
@@ -105,28 +120,6 @@ def test_dir_copy_remote2local(mscp, src_dir, dst_dir, src, dst, twice):
|
||||
df.cleanup()
|
||||
tf.cleanup()
|
||||
|
||||
@pytest.mark.parametrize("src_dir, dst_dir, src, dst, twice", param_dir_copy)
|
||||
def test_dir_copy_local2remote(mscp, src_dir, dst_dir, src, dst, twice):
|
||||
for f in src:
|
||||
f.make()
|
||||
|
||||
run2ok([mscp, "-H", src_dir, remote_prefix + dst_dir])
|
||||
for sf, df in zip(src, dst):
|
||||
assert check_same_md5sum(sf, df)
|
||||
|
||||
run2ok([mscp, "-H", src_dir, remote_prefix + dst_dir])
|
||||
for sf, df in zip(src, twice):
|
||||
assert check_same_md5sum(sf, df)
|
||||
|
||||
for sf, df, tf in zip(src, dst, twice):
|
||||
sf.cleanup()
|
||||
df.cleanup()
|
||||
tf.cleanup()
|
||||
|
||||
|
||||
param_remote_prefix = [
|
||||
("", remote_prefix), (remote_prefix, "")
|
||||
]
|
||||
@pytest.mark.parametrize("src_prefix, dst_prefix", param_remote_prefix)
|
||||
def test_override_single_file(mscp, src_prefix, dst_prefix):
|
||||
src = File("src", size = 128).make()
|
||||
|
||||
Reference in New Issue
Block a user