Home | History | Annotate | Download | only in tests
      1 import subprocess
      2 import sys
      3 
      4 import pytest
      5 import pkg_resources
      6 
      7 SETUP_TEMPLATE = """
      8 import setuptools
      9 setuptools.setup(
     10     name="my-test-package",
     11     version="1.0",
     12     zip_safe=True,
     13 )
     14 """.lstrip()
     15 
     16 
     17 class TestFindDistributions:
     18 
     19     @pytest.fixture
     20     def target_dir(self, tmpdir):
     21         target_dir = tmpdir.mkdir('target')
     22         # place a .egg named directory in the target that is not an egg:
     23         target_dir.mkdir('not.an.egg')
     24         return str(target_dir)
     25 
     26     @pytest.fixture
     27     def project_dir(self, tmpdir):
     28         project_dir = tmpdir.mkdir('my-test-package')
     29         (project_dir / "setup.py").write(SETUP_TEMPLATE)
     30         return str(project_dir)
     31 
     32     def test_non_egg_dir_named_egg(self, target_dir):
     33         dists = pkg_resources.find_distributions(target_dir)
     34         assert not list(dists)
     35 
     36     def test_standalone_egg_directory(self, project_dir, target_dir):
     37         # install this distro as an unpacked egg:
     38         args = [
     39             sys.executable,
     40             '-c', 'from setuptools.command.easy_install import main; main()',
     41             '-mNx',
     42             '-d', target_dir,
     43             '--always-unzip',
     44             project_dir,
     45         ]
     46         subprocess.check_call(args)
     47         dists = pkg_resources.find_distributions(target_dir)
     48         assert [dist.project_name for dist in dists] == ['my-test-package']
     49         dists = pkg_resources.find_distributions(target_dir, only=True)
     50         assert not list(dists)
     51 
     52     def test_zipped_egg(self, project_dir, target_dir):
     53         # install this distro as an unpacked egg:
     54         args = [
     55             sys.executable,
     56             '-c', 'from setuptools.command.easy_install import main; main()',
     57             '-mNx',
     58             '-d', target_dir,
     59             '--zip-ok',
     60             project_dir,
     61         ]
     62         subprocess.check_call(args)
     63         dists = pkg_resources.find_distributions(target_dir)
     64         assert [dist.project_name for dist in dists] == ['my-test-package']
     65         dists = pkg_resources.find_distributions(target_dir, only=True)
     66         assert not list(dists)
     67