def test_copytree_dst_notdir(tmp_path, dirs_exist_ok): dir_src = tmp_path / 'src' dir_src.mkdir() dst = tmp_path / 'dst' dst.touch() with pytest.raises(FileExistsError, match=fr'{dst}'): osext.copytree(str(dir_src), str(dst), dirs_exist_ok=dirs_exist_ok)
def test_copytree_src_notdir(tmp_path, dirs_exist_ok): src = tmp_path / 'src' src.touch() dst = tmp_path / 'dst' dst.mkdir() with pytest.raises(NotADirectoryError, match=fr'{src}'): osext.copytree(str(src), str(dst), dirs_exist_ok=dirs_exist_ok)
def __enter__(self): self._workdir = os.path.abspath( tempfile.mkdtemp(prefix='rfm.', dir=self._prefix)) paths = ['bin/', 'reframe/', 'bootstrap.sh', 'requirements.txt'] for p in paths: src = os.path.join(rfm.INSTALL_PREFIX, p) if os.path.isdir(src): dst = os.path.join(self._workdir, p) osext.copytree(src, dst, dirs_exist_ok=True) else: shutil.copy2(src, self._workdir) return self._workdir
def test_copytree_src_parent_of_dst(tmp_path): dst_path = tmp_path / 'dst' src_path = (dst_path / '..').resolve() with pytest.raises(ValueError): osext.copytree(str(src_path), str(dst_path))
def test_copytree(tmp_path): dir_src = tmp_path / 'src' dir_src.mkdir() dir_dst = tmp_path / 'dst' dir_dst.mkdir() osext.copytree(str(dir_src), str(dir_dst), dirs_exist_ok=True)
def test_copytree_src_does_not_exist(tmp_path, dirs_exist_ok): src = tmp_path / 'src' dst = tmp_path / 'dst' dst.mkdir() with pytest.raises(FileNotFoundError, match=fr'{src}'): osext.copytree(str(src), str(dst), dirs_exist_ok=dirs_exist_ok)