diff options
author | Eric Larson <larson.eric.d@gmail.com> | 2015-11-15 22:30:46 -0500 |
---|---|---|
committer | Eric Larson <larson.eric.d@gmail.com> | 2015-11-15 22:30:46 -0500 |
commit | e3d2219bcd7bf239a1c7ada0d51a9efd9cd4e0d1 (patch) | |
tree | 0da1d97426072fea5113fdc026842156c5f2cfe5 | |
parent | 3e1da0da1436b2247f5a6576adb25c58ed560560 (diff) | |
download | python-setuptools-bitbucket-e3d2219bcd7bf239a1c7ada0d51a9efd9cd4e0d1.tar.gz |
Add tests ref #419.
-rw-r--r-- | setuptools/tests/test_egg_info.py | 96 |
1 files changed, 91 insertions, 5 deletions
diff --git a/setuptools/tests/test_egg_info.py b/setuptools/tests/test_egg_info.py index a1caf9fd..b4195e06 100644 --- a/setuptools/tests/test_egg_info.py +++ b/setuptools/tests/test_egg_info.py @@ -6,9 +6,14 @@ import pytest from . import environment from .textwrap import DALS from . import contexts +from pkg_resources import WorkingSet, Requirement -class TestEggInfo: +class Environment(str): + pass + + +class TestEggInfo(object): setup_script = DALS(""" from setuptools import setup @@ -33,8 +38,6 @@ class TestEggInfo: @pytest.yield_fixture def env(self): - class Environment(str): pass - with contexts.tempdir(prefix='setuptools-test.') as env_dir: env = Environment(env_dir) os.chmod(env_dir, stat.S_IRWXU) @@ -49,8 +52,7 @@ class TestEggInfo: f.write(DALS(""" [egg_info] egg-base = %(egg-base)s - """ % env.paths - )) + """ % env.paths)) yield env def test_egg_base_installed_egg_info(self, tmpdir_cwd, env): @@ -96,3 +98,87 @@ class TestEggInfo: # expect exactly one result result, = results return result + + +class TestEggInfoDistutils(object): + + version = '1.11.0.dev0+2329eae' + setup_script = DALS(""" + from distutils.core import setup + + setup( + name='foo', + py_modules=['hello'], + version='%s', + ) + """) + + def _create_project(self): + with open('setup.py', 'w') as f: + f.write(self.setup_script % self.version) + + with open('hello.py', 'w') as f: + f.write(DALS(""" + def run(): + print('hello') + """)) + + @pytest.yield_fixture + def env(self): + with contexts.tempdir(prefix='setuptools-test.') as env_dir: + env = Environment(env_dir) + os.chmod(env_dir, stat.S_IRWXU) + subs = 'home', 'lib', 'scripts', 'data', 'egg-base' + env.paths = dict( + (dirname, os.path.join(env_dir, dirname)) + for dirname in subs + ) + list(map(os.mkdir, env.paths.values())) + config = os.path.join(env.paths['home'], '.pydistutils.cfg') + with open(config, 'w') as f: + f.write(DALS(""" + [egg_info] + egg-base = %(egg-base)s + """ % env.paths)) + yield env + + def test_egg_base_installed_egg_info(self, tmpdir_cwd, env): + self._create_project() + + environ = os.environ.copy().update( + HOME=env.paths['home'], + ) + cmd = [ + 'install', + '--home', env.paths['home'], + '--install-lib', env.paths['lib'], + '--install-scripts', env.paths['scripts'], + '--install-data', env.paths['data'], + ] + code, data = environment.run_setup_py( + cmd=cmd, + pypath=os.pathsep.join([env.paths['lib'], str(tmpdir_cwd)]), + data_stream=1, + env=environ, + ) + if code: + raise AssertionError(data) + + actual = self._find_egg_info_file(env.paths['lib']) + # On Py3k it can be e.g. foo-1.11.0.dev0_2329eae-py3.4.egg-info + # but 2.7 doesn't add the Python version, so to be expedient we + # just check our start and end, omitting the potential version num + assert actual.startswith('foo-' + self.version.replace('+', '_')) + assert actual.endswith('.egg-info') + # this requirement parsing will raise a VersionConflict unless the + # .egg-info file is parsed (see #419 on BitBucket) + req = Requirement.parse('foo>=1.9') + dist = WorkingSet([env.paths['lib']]).find(req) + assert dist.version == self.version + + def _find_egg_info_file(self, root): + # expect exactly one result + result = (filename for dirpath, dirnames, filenames in os.walk(root) + for filename in filenames if filename.endswith('.egg-info')) + result, = result + return result |