67 lines
2.0 KiB
Python
67 lines
2.0 KiB
Python
import subprocess
|
|
import sys
|
|
|
|
import pytest
|
|
import pkg_resources
|
|
|
|
SETUP_TEMPLATE = """
|
|
import setuptools
|
|
setuptools.setup(
|
|
name="my-test-package",
|
|
version="1.0",
|
|
zip_safe=True,
|
|
)
|
|
""".lstrip()
|
|
|
|
|
|
class TestFindDistributions:
|
|
|
|
@pytest.fixture
|
|
def target_dir(self, tmpdir):
|
|
target_dir = tmpdir.mkdir('target')
|
|
# place a .egg named directory in the target that is not an egg:
|
|
target_dir.mkdir('not.an.egg')
|
|
return str(target_dir)
|
|
|
|
@pytest.fixture
|
|
def project_dir(self, tmpdir):
|
|
project_dir = tmpdir.mkdir('my-test-package')
|
|
(project_dir / "setup.py").write(SETUP_TEMPLATE)
|
|
return str(project_dir)
|
|
|
|
def test_non_egg_dir_named_egg(self, target_dir):
|
|
dists = pkg_resources.find_distributions(target_dir)
|
|
assert not list(dists)
|
|
|
|
def test_standalone_egg_directory(self, project_dir, target_dir):
|
|
# install this distro as an unpacked egg:
|
|
args = [
|
|
sys.executable,
|
|
'-c', 'from setuptools.command.easy_install import main; main()',
|
|
'-mNx',
|
|
'-d', target_dir,
|
|
'--always-unzip',
|
|
project_dir,
|
|
]
|
|
subprocess.check_call(args)
|
|
dists = pkg_resources.find_distributions(target_dir)
|
|
assert [dist.project_name for dist in dists] == ['my-test-package']
|
|
dists = pkg_resources.find_distributions(target_dir, only=True)
|
|
assert not list(dists)
|
|
|
|
def test_zipped_egg(self, project_dir, target_dir):
|
|
# install this distro as an unpacked egg:
|
|
args = [
|
|
sys.executable,
|
|
'-c', 'from setuptools.command.easy_install import main; main()',
|
|
'-mNx',
|
|
'-d', target_dir,
|
|
'--zip-ok',
|
|
project_dir,
|
|
]
|
|
subprocess.check_call(args)
|
|
dists = pkg_resources.find_distributions(target_dir)
|
|
assert [dist.project_name for dist in dists] == ['my-test-package']
|
|
dists = pkg_resources.find_distributions(target_dir, only=True)
|
|
assert not list(dists)
|