Spaces:
Runtime error
Runtime error
| class AbstractCopyTests: | |
| def test_copy_file_to_existing_directory( | |
| self, fs, fs_join, fs_bulk_operations_scenario_0, fs_target | |
| ): | |
| # Copy scenario 1a | |
| source = fs_bulk_operations_scenario_0 | |
| target = fs_target | |
| fs.mkdir(target) | |
| if not self.supports_empty_directories(): | |
| # Force target directory to exist by adding a dummy file | |
| fs.touch(fs_join(target, "dummy")) | |
| assert fs.isdir(target) | |
| target_file2 = fs_join(target, "file2") | |
| target_subfile1 = fs_join(target, "subfile1") | |
| # Copy from source directory | |
| fs.cp(fs_join(source, "file2"), target) | |
| assert fs.isfile(target_file2) | |
| # Copy from sub directory | |
| fs.cp(fs_join(source, "subdir", "subfile1"), target) | |
| assert fs.isfile(target_subfile1) | |
| # Remove copied files | |
| fs.rm([target_file2, target_subfile1]) | |
| assert not fs.exists(target_file2) | |
| assert not fs.exists(target_subfile1) | |
| # Repeat with trailing slash on target | |
| 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 | |
| ): | |
| # Copy scenario 1b | |
| source = fs_bulk_operations_scenario_0 | |
| target = fs_target | |
| fs.mkdir(target) | |
| fs.cp( | |
| fs_join(source, "subdir", "subfile1"), fs_join(target, "newdir/") | |
| ) # Note trailing slash | |
| 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 | |
| ): | |
| # Copy scenario 1c | |
| 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 | |
| ): | |
| # Copy scenario 1d | |
| 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 | |
| ): | |
| # Copy scenario 1e | |
| source = fs_bulk_operations_scenario_0 | |
| target = fs_target | |
| fs.mkdir(target) | |
| if not self.supports_empty_directories(): | |
| # Force target directory to exist by adding a dummy file | |
| 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 | |
| # Without recursive does nothing | |
| fs.cp(s, t) | |
| assert fs.ls(target) == [] if self.supports_empty_directories() else [dummy] | |
| # With recursive | |
| 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] | |
| # Limit recursive by maxdepth | |
| 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 | |
| ): | |
| # Copy scenario 1f | |
| 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 += "/" | |
| # Without recursive does nothing | |
| fs.cp(s, t) | |
| assert fs.ls(target) == [] | |
| # With recursive | |
| 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")) | |
| # Limit recursive by maxdepth | |
| 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 | |
| ): | |
| # Copy scenario 1g | |
| 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 | |
| # Without recursive | |
| 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) == [] | |
| # With recursive | |
| 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) == [] | |
| # Limit recursive by maxdepth | |
| 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 | |
| ): | |
| # Copy scenario 1h | |
| 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 += "/" | |
| # Without recursive | |
| 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")) | |
| # With recursive | |
| 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")) | |
| # Limit recursive by maxdepth | |
| 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 | |
| ): | |
| # Copy scenario 2a | |
| source = fs_bulk_operations_scenario_0 | |
| target = fs_target | |
| fs.mkdir(target) | |
| if not self.supports_empty_directories(): | |
| # Force target directory to exist by adding a dummy file | |
| 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 | |
| ): | |
| # Copy scenario 2b | |
| 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") + "/") # Note trailing slash | |
| 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 | |
| ): | |
| # This is a duplicate of test_copy_list_of_files_to_new_directory and | |
| # can eventually be removed. | |
| 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")) | |