mirror of
https://github.com/pypa/pip
synced 2023-12-13 21:30:23 +01:00
61 lines
1.3 KiB
Python
61 lines
1.3 KiB
Python
import os
|
|
import shutil
|
|
|
|
import pytest
|
|
|
|
from pip._internal.utils.filesystem import copy2_fixed, is_socket
|
|
from tests.lib.filesystem import make_socket_file, make_unreadable_file
|
|
from tests.lib.path import Path
|
|
|
|
|
|
def make_file(path):
|
|
Path(path).touch()
|
|
|
|
|
|
def make_valid_symlink(path):
|
|
target = path + "1"
|
|
make_file(target)
|
|
os.symlink(target, path)
|
|
|
|
|
|
def make_broken_symlink(path):
|
|
os.symlink("foo", path)
|
|
|
|
|
|
def make_dir(path):
|
|
os.mkdir(path)
|
|
|
|
|
|
skip_on_windows = pytest.mark.skipif("sys.platform == 'win32'")
|
|
|
|
|
|
@skip_on_windows
|
|
@pytest.mark.parametrize("create,result", [
|
|
(make_socket_file, True),
|
|
(make_file, False),
|
|
(make_valid_symlink, False),
|
|
(make_broken_symlink, False),
|
|
(make_dir, False),
|
|
])
|
|
def test_is_socket(create, result, tmpdir):
|
|
target = tmpdir.joinpath("target")
|
|
create(target)
|
|
assert os.path.lexists(target)
|
|
assert is_socket(target) == result
|
|
|
|
|
|
@pytest.mark.parametrize("create,error_type", [
|
|
pytest.param(
|
|
make_socket_file, shutil.SpecialFileError, marks=skip_on_windows
|
|
),
|
|
(make_unreadable_file, OSError),
|
|
])
|
|
def test_copy2_fixed_raises_appropriate_errors(create, error_type, tmpdir):
|
|
src = tmpdir.joinpath("src")
|
|
create(src)
|
|
dest = tmpdir.joinpath("dest")
|
|
|
|
with pytest.raises(error_type):
|
|
copy2_fixed(src, dest)
|
|
|
|
assert not dest.exists()
|