| 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) |