Пример #1
0
 def test_copytree_subdirs(self):
     # subdirs are copies as well
     os.mkdir(os.path.join(self.workdir, 'srcdir'))
     os.mkdir(os.path.join(self.workdir, 'srcdir', 'sub1'))
     copytree(
         os.path.join(self.workdir, 'srcdir'),
         os.path.join(self.workdir, 'dstdir'))
     assert os.path.isdir(
         os.path.join(self.workdir, 'dstdir', 'sub1'))
Пример #2
0
 def test_copytree_ignore(self, tmpdir):
     # we can pass a function to ignore files
     def ignore(src, names):
         return ['sample1.txt', ]
     src_dir = tmpdir.mkdir("work")
     dest_dir = tmpdir.mkdir("dest")
     src_dir.join("sample1.txt").write("Hi!")
     src_dir.join("sample2.txt").write("Ho!")
     copytree(str(src_dir), str(dest_dir), ignore=ignore)
     assert dest_dir.join("sample1.txt").exists() is False
     assert dest_dir.join("sample2.txt").exists() is True
Пример #3
0
 def test_copytree_links(self):
     # we copy links
     src_dir = os.path.join(self.workdir, 'srcdir')
     os.mkdir(src_dir)
     open(os.path.join(src_dir, 'sample.txt'), 'w').write('Hi!')
     os.symlink(
         os.path.join(src_dir, 'sample.txt'),
         os.path.join(src_dir, 'sample.link'))
     copytree(src_dir, os.path.join(self.workdir, 'dstdir'), symlinks=True)
     dst_link = os.path.join(self.workdir, 'dstdir', 'sample.link')
     assert os.path.islink(dst_link)
     assert os.readlink(dst_link) == os.path.join(src_dir, 'sample.txt')
Пример #4
0
 def test_copytree_ignore(self):
     # we can pass a function to ignore files
     def ignore(src, names):
         return ['sample1.txt', ]
     self.resultpath = tempfile.mkdtemp()
     open(os.path.join(self.workdir, 'sample1.txt'), 'w').write('Hi!')
     open(os.path.join(self.workdir, 'sample2.txt'), 'w').write('Hi!')
     copytree(self.workdir, self.resultpath, ignore=ignore)
     assert not os.path.isfile(
         os.path.join(self.resultpath, 'sample1.txt'))
     assert os.path.isfile(
         os.path.join(self.resultpath, 'sample2.txt'))
Пример #5
0
 def test_copytree_links(self, tmpdir):
     # we copy links
     tmpdir.mkdir("src_dir").join("sample.txt").write("Hi")
     os.symlink(
         str(tmpdir / "src_dir" / "sample.txt"),
         str(tmpdir / "src_dir" / "sample.link"))
     copytree(
         str(tmpdir / "src_dir"), str(tmpdir / "dest_dir"), symlinks=True)
     dest_link = tmpdir / "dest_dir" / "sample.link"
     assert os.path.islink(str(dest_link))
     assert os.readlink(str(dest_link)) == str(
         tmpdir / "src_dir" / "sample.txt")
Пример #6
0
    def test_copytree_ioerror(self, tmpdir):
        # we catch IOErrors, collect them and raise at end (as shutil.Error)
        src_dir = tmpdir.mkdir("src_dir")
        dst_dir = tmpdir.mkdir("dst_dir")
        src_dir.join("sample1.txt").write("Hi!")
        dst_dir.join("sample1.txt").write("Ho!")

        # make dst_file unwriteable
        dst_file_path = str(dst_dir / "sample1.txt")
        old_mode = os.stat(dst_file_path).st_mode
        os.chmod(dst_file_path, stat.S_IREAD)
        with pytest.raises(shutil.Error) as exc_info:
            copytree(
                str(src_dir), str(dst_dir), symlinks=False)
        os.chmod(dst_file_path, old_mode)      # reenable writing
        assert exc_info.type == shutil.Error
        err_src, err_dst, err_msg = exc_info.value.args[0][0]
        assert err_src == str(src_dir / "sample1.txt")
        assert err_dst == dst_file_path
        assert "Permission denied:" in err_msg
        assert dst_file_path in err_msg
Пример #7
0
 def test_copytree_detects_nested_dirs(self, tmpdir):
     # we detect dst dirs being part/subdirs of src dir.
     tmpdir.mkdir("root_dir").mkdir("sub_dir")
     with pytest.raises(ValueError):
         copytree(str(tmpdir / "root_dir"),
                  str(tmpdir / "root_dir" / "sub_dir"))
Пример #8
0
 def test_copytree_subdirs(self, tmpdir):
     # subdirs are copied as well
     tmpdir.mkdir("src_dir").mkdir("sub1")
     copytree(
         str(tmpdir.join("src_dir")), str(tmpdir.join("dest_dir")))
     assert tmpdir.join("dest_dir").join("sub1").isdir() is True