|
class AbstractCopyTests: |
|
def test_copy_file_to_existing_directory( |
|
self, fs, fs_join, fs_bulk_operations_scenario_0, fs_target |
|
): |
|
|
|
source = fs_bulk_operations_scenario_0 |
|
|
|
target = fs_target |
|
fs.mkdir(target) |
|
if not self.supports_empty_directories(): |
|
|
|
fs.touch(fs_join(target, "dummy")) |
|
assert fs.isdir(target) |
|
|
|
target_file2 = fs_join(target, "file2") |
|
target_subfile1 = fs_join(target, "subfile1") |
|
|
|
|
|
fs.cp(fs_join(source, "file2"), target) |
|
assert fs.isfile(target_file2) |
|
|
|
|
|
fs.cp(fs_join(source, "subdir", "subfile1"), target) |
|
assert fs.isfile(target_subfile1) |
|
|
|
|
|
fs.rm([target_file2, target_subfile1]) |
|
assert not fs.exists(target_file2) |
|
assert not fs.exists(target_subfile1) |
|
|
|
|
|
fs.cp(fs_join(source, "file2"), target + "/") |
|
assert fs.isdir(target) |
|
assert fs.isfile(target_file2) |
|
|
|
fs.cp(fs_join(source, "subdir", "subfile1"), target + "/") |
|
assert fs.isfile(target_subfile1) |
|
|
|
def test_copy_file_to_new_directory( |
|
self, fs, fs_join, fs_bulk_operations_scenario_0, fs_target |
|
): |
|
|
|
source = fs_bulk_operations_scenario_0 |
|
|
|
target = fs_target |
|
fs.mkdir(target) |
|
|
|
fs.cp( |
|
fs_join(source, "subdir", "subfile1"), fs_join(target, "newdir/") |
|
) |
|
assert fs.isdir(target) |
|
assert fs.isdir(fs_join(target, "newdir")) |
|
assert fs.isfile(fs_join(target, "newdir", "subfile1")) |
|
|
|
def test_copy_file_to_file_in_existing_directory( |
|
self, fs, fs_join, fs_bulk_operations_scenario_0, fs_target |
|
): |
|
|
|
source = fs_bulk_operations_scenario_0 |
|
|
|
target = fs_target |
|
fs.mkdir(target) |
|
|
|
fs.cp(fs_join(source, "subdir", "subfile1"), fs_join(target, "newfile")) |
|
assert fs.isfile(fs_join(target, "newfile")) |
|
|
|
def test_copy_file_to_file_in_new_directory( |
|
self, fs, fs_join, fs_bulk_operations_scenario_0, fs_target |
|
): |
|
|
|
source = fs_bulk_operations_scenario_0 |
|
|
|
target = fs_target |
|
fs.mkdir(target) |
|
|
|
fs.cp( |
|
fs_join(source, "subdir", "subfile1"), fs_join(target, "newdir", "newfile") |
|
) |
|
assert fs.isdir(fs_join(target, "newdir")) |
|
assert fs.isfile(fs_join(target, "newdir", "newfile")) |
|
|
|
def test_copy_directory_to_existing_directory( |
|
self, fs, fs_join, fs_bulk_operations_scenario_0, fs_target |
|
): |
|
|
|
source = fs_bulk_operations_scenario_0 |
|
|
|
target = fs_target |
|
fs.mkdir(target) |
|
if not self.supports_empty_directories(): |
|
|
|
dummy = fs_join(target, "dummy") |
|
fs.touch(dummy) |
|
assert fs.isdir(target) |
|
|
|
for source_slash, target_slash in zip([False, True], [False, True]): |
|
s = fs_join(source, "subdir") |
|
if source_slash: |
|
s += "/" |
|
t = target + "/" if target_slash else target |
|
|
|
|
|
fs.cp(s, t) |
|
assert fs.ls(target) == [] if self.supports_empty_directories() else [dummy] |
|
|
|
|
|
fs.cp(s, t, recursive=True) |
|
if source_slash: |
|
assert fs.isfile(fs_join(target, "subfile1")) |
|
assert fs.isfile(fs_join(target, "subfile2")) |
|
assert fs.isdir(fs_join(target, "nesteddir")) |
|
assert fs.isfile(fs_join(target, "nesteddir", "nestedfile")) |
|
assert not fs.exists(fs_join(target, "subdir")) |
|
|
|
fs.rm(fs.ls(target, detail=False), recursive=True) |
|
else: |
|
assert fs.isdir(fs_join(target, "subdir")) |
|
assert fs.isfile(fs_join(target, "subdir", "subfile1")) |
|
assert fs.isfile(fs_join(target, "subdir", "subfile2")) |
|
assert fs.isdir(fs_join(target, "subdir", "nesteddir")) |
|
assert fs.isfile(fs_join(target, "subdir", "nesteddir", "nestedfile")) |
|
|
|
fs.rm(fs_join(target, "subdir"), recursive=True) |
|
assert fs.ls(target) == [] if self.supports_empty_directories() else [dummy] |
|
|
|
|
|
fs.cp(s, t, recursive=True, maxdepth=1) |
|
if source_slash: |
|
assert fs.isfile(fs_join(target, "subfile1")) |
|
assert fs.isfile(fs_join(target, "subfile2")) |
|
assert not fs.exists(fs_join(target, "nesteddir")) |
|
assert not fs.exists(fs_join(target, "subdir")) |
|
|
|
fs.rm(fs.ls(target, detail=False), recursive=True) |
|
else: |
|
assert fs.isdir(fs_join(target, "subdir")) |
|
assert fs.isfile(fs_join(target, "subdir", "subfile1")) |
|
assert fs.isfile(fs_join(target, "subdir", "subfile2")) |
|
assert not fs.exists(fs_join(target, "subdir", "nesteddir")) |
|
|
|
fs.rm(fs_join(target, "subdir"), recursive=True) |
|
assert fs.ls(target) == [] if self.supports_empty_directories() else [dummy] |
|
|
|
def test_copy_directory_to_new_directory( |
|
self, fs, fs_join, fs_bulk_operations_scenario_0, fs_target |
|
): |
|
|
|
source = fs_bulk_operations_scenario_0 |
|
|
|
target = fs_target |
|
fs.mkdir(target) |
|
|
|
for source_slash, target_slash in zip([False, True], [False, True]): |
|
s = fs_join(source, "subdir") |
|
if source_slash: |
|
s += "/" |
|
t = fs_join(target, "newdir") |
|
if target_slash: |
|
t += "/" |
|
|
|
|
|
fs.cp(s, t) |
|
assert fs.ls(target) == [] |
|
|
|
|
|
fs.cp(s, t, recursive=True) |
|
assert fs.isdir(fs_join(target, "newdir")) |
|
assert fs.isfile(fs_join(target, "newdir", "subfile1")) |
|
assert fs.isfile(fs_join(target, "newdir", "subfile2")) |
|
assert fs.isdir(fs_join(target, "newdir", "nesteddir")) |
|
assert fs.isfile(fs_join(target, "newdir", "nesteddir", "nestedfile")) |
|
assert not fs.exists(fs_join(target, "subdir")) |
|
|
|
fs.rm(fs_join(target, "newdir"), recursive=True) |
|
assert not fs.exists(fs_join(target, "newdir")) |
|
|
|
|
|
fs.cp(s, t, recursive=True, maxdepth=1) |
|
assert fs.isdir(fs_join(target, "newdir")) |
|
assert fs.isfile(fs_join(target, "newdir", "subfile1")) |
|
assert fs.isfile(fs_join(target, "newdir", "subfile2")) |
|
assert not fs.exists(fs_join(target, "newdir", "nesteddir")) |
|
assert not fs.exists(fs_join(target, "subdir")) |
|
|
|
fs.rm(fs_join(target, "newdir"), recursive=True) |
|
assert not fs.exists(fs_join(target, "newdir")) |
|
|
|
def test_copy_glob_to_existing_directory( |
|
self, fs, fs_join, fs_bulk_operations_scenario_0, fs_target |
|
): |
|
|
|
source = fs_bulk_operations_scenario_0 |
|
|
|
target = fs_target |
|
fs.mkdir(target) |
|
|
|
for target_slash in [False, True]: |
|
t = target + "/" if target_slash else target |
|
|
|
|
|
fs.cp(fs_join(source, "subdir", "*"), t) |
|
assert fs.isfile(fs_join(target, "subfile1")) |
|
assert fs.isfile(fs_join(target, "subfile2")) |
|
assert not fs.isdir(fs_join(target, "nesteddir")) |
|
assert not fs.exists(fs_join(target, "nesteddir", "nestedfile")) |
|
assert not fs.exists(fs_join(target, "subdir")) |
|
|
|
fs.rm(fs.ls(target, detail=False), recursive=True) |
|
assert fs.ls(target) == [] |
|
|
|
|
|
fs.cp(fs_join(source, "subdir", "*"), t, recursive=True) |
|
assert fs.isfile(fs_join(target, "subfile1")) |
|
assert fs.isfile(fs_join(target, "subfile2")) |
|
assert fs.isdir(fs_join(target, "nesteddir")) |
|
assert fs.isfile(fs_join(target, "nesteddir", "nestedfile")) |
|
assert not fs.exists(fs_join(target, "subdir")) |
|
|
|
fs.rm(fs.ls(target, detail=False), recursive=True) |
|
assert fs.ls(target) == [] |
|
|
|
|
|
fs.cp(fs_join(source, "subdir", "*"), t, recursive=True, maxdepth=1) |
|
assert fs.isfile(fs_join(target, "subfile1")) |
|
assert fs.isfile(fs_join(target, "subfile2")) |
|
assert not fs.exists(fs_join(target, "nesteddir")) |
|
assert not fs.exists(fs_join(target, "subdir")) |
|
|
|
fs.rm(fs.ls(target, detail=False), recursive=True) |
|
assert fs.ls(target) == [] |
|
|
|
def test_copy_glob_to_new_directory( |
|
self, fs, fs_join, fs_bulk_operations_scenario_0, fs_target |
|
): |
|
|
|
source = fs_bulk_operations_scenario_0 |
|
|
|
target = fs_target |
|
fs.mkdir(target) |
|
|
|
for target_slash in [False, True]: |
|
t = fs_join(target, "newdir") |
|
if target_slash: |
|
t += "/" |
|
|
|
|
|
fs.cp(fs_join(source, "subdir", "*"), t) |
|
assert fs.isdir(fs_join(target, "newdir")) |
|
assert fs.isfile(fs_join(target, "newdir", "subfile1")) |
|
assert fs.isfile(fs_join(target, "newdir", "subfile2")) |
|
assert not fs.exists(fs_join(target, "newdir", "nesteddir")) |
|
assert not fs.exists(fs_join(target, "newdir", "nesteddir", "nestedfile")) |
|
assert not fs.exists(fs_join(target, "subdir")) |
|
assert not fs.exists(fs_join(target, "newdir", "subdir")) |
|
|
|
fs.rm(fs_join(target, "newdir"), recursive=True) |
|
assert not fs.exists(fs_join(target, "newdir")) |
|
|
|
|
|
fs.cp(fs_join(source, "subdir", "*"), t, recursive=True) |
|
assert fs.isdir(fs_join(target, "newdir")) |
|
assert fs.isfile(fs_join(target, "newdir", "subfile1")) |
|
assert fs.isfile(fs_join(target, "newdir", "subfile2")) |
|
assert fs.isdir(fs_join(target, "newdir", "nesteddir")) |
|
assert fs.isfile(fs_join(target, "newdir", "nesteddir", "nestedfile")) |
|
assert not fs.exists(fs_join(target, "subdir")) |
|
assert not fs.exists(fs_join(target, "newdir", "subdir")) |
|
|
|
fs.rm(fs_join(target, "newdir"), recursive=True) |
|
assert not fs.exists(fs_join(target, "newdir")) |
|
|
|
|
|
fs.cp(fs_join(source, "subdir", "*"), t, recursive=True, maxdepth=1) |
|
assert fs.isdir(fs_join(target, "newdir")) |
|
assert fs.isfile(fs_join(target, "newdir", "subfile1")) |
|
assert fs.isfile(fs_join(target, "newdir", "subfile2")) |
|
assert not fs.exists(fs_join(target, "newdir", "nesteddir")) |
|
assert not fs.exists(fs_join(target, "subdir")) |
|
assert not fs.exists(fs_join(target, "newdir", "subdir")) |
|
|
|
fs.rm(fs.ls(target, detail=False), recursive=True) |
|
assert not fs.exists(fs_join(target, "newdir")) |
|
|
|
def test_copy_list_of_files_to_existing_directory( |
|
self, fs, fs_join, fs_bulk_operations_scenario_0, fs_target |
|
): |
|
|
|
source = fs_bulk_operations_scenario_0 |
|
|
|
target = fs_target |
|
fs.mkdir(target) |
|
if not self.supports_empty_directories(): |
|
|
|
dummy = fs_join(target, "dummy") |
|
fs.touch(dummy) |
|
assert fs.isdir(target) |
|
|
|
source_files = [ |
|
fs_join(source, "file1"), |
|
fs_join(source, "file2"), |
|
fs_join(source, "subdir", "subfile1"), |
|
] |
|
|
|
for target_slash in [False, True]: |
|
t = target + "/" if target_slash else target |
|
|
|
fs.cp(source_files, t) |
|
assert fs.isfile(fs_join(target, "file1")) |
|
assert fs.isfile(fs_join(target, "file2")) |
|
assert fs.isfile(fs_join(target, "subfile1")) |
|
|
|
fs.rm(fs.find(target)) |
|
assert fs.ls(target) == [] if self.supports_empty_directories() else [dummy] |
|
|
|
def test_copy_list_of_files_to_new_directory( |
|
self, fs, fs_join, fs_bulk_operations_scenario_0, fs_target |
|
): |
|
|
|
source = fs_bulk_operations_scenario_0 |
|
|
|
target = fs_target |
|
fs.mkdir(target) |
|
|
|
source_files = [ |
|
fs_join(source, "file1"), |
|
fs_join(source, "file2"), |
|
fs_join(source, "subdir", "subfile1"), |
|
] |
|
|
|
fs.cp(source_files, fs_join(target, "newdir") + "/") |
|
assert fs.isdir(fs_join(target, "newdir")) |
|
assert fs.isfile(fs_join(target, "newdir", "file1")) |
|
assert fs.isfile(fs_join(target, "newdir", "file2")) |
|
assert fs.isfile(fs_join(target, "newdir", "subfile1")) |
|
|
|
def test_copy_two_files_new_directory( |
|
self, fs, fs_join, fs_bulk_operations_scenario_0, fs_target |
|
): |
|
|
|
|
|
source = fs_bulk_operations_scenario_0 |
|
|
|
target = fs_target |
|
assert not fs.exists(target) |
|
fs.cp([fs_join(source, "file1"), fs_join(source, "file2")], target) |
|
|
|
assert fs.isdir(target) |
|
assert fs.isfile(fs_join(target, "file1")) |
|
assert fs.isfile(fs_join(target, "file2")) |
|
|