diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2015-11-28 12:54:28 -0500 |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2015-11-28 12:54:28 -0500 |
commit | 387e7d4df7110d2484978b63972250ea55b38719 (patch) | |
tree | 1660b9cc7a535af559b2dacad463e3b963643447 /pkg_resources | |
parent | cf3c962fdb9176f04493a18c3630eb5f0ce7d862 (diff) | |
download | python-setuptools-bitbucket-387e7d4df7110d2484978b63972250ea55b38719.tar.gz |
Rewrite test to simply create the egg_info.
Diffstat (limited to 'pkg_resources')
-rw-r--r-- | pkg_resources/tests/test_pkg_resources.py | 115 |
1 files changed, 35 insertions, 80 deletions
diff --git a/pkg_resources/tests/test_pkg_resources.py b/pkg_resources/tests/test_pkg_resources.py index 698aefbd..8b9a317a 100644 --- a/pkg_resources/tests/test_pkg_resources.py +++ b/pkg_resources/tests/test_pkg_resources.py @@ -8,13 +8,10 @@ import subprocess import stat import pytest +import py import pkg_resources -from setuptools.tests.textwrap import DALS -from setuptools.tests import contexts -from setuptools.tests import environment - try: unicode @@ -120,88 +117,46 @@ class TestIndependence: -class TestEggInfoDistutils(object): +class TestDeepVersionLookup(object): - version = '1.11.0.dev0+2329eae' - setup_script = DALS(""" - from distutils.core import setup + @pytest.fixture + def env(self, tmpdir): + """ + Create a package environment, similar to a virtualenv, + in which packages are installed. + """ + class Environment(str): + pass - setup( - name='foo', - py_modules=['hello'], - version='%s', + env = Environment(tmpdir) + tmpdir.chmod(stat.S_IRWXU) + subs = 'home', 'lib', 'scripts', 'data', 'egg-base' + env.paths = dict( + (dirname, str(tmpdir / dirname)) + for dirname in subs ) - """) - - def _create_project(self): - with open('setup.py', 'w') as f: - f.write(self.setup_script % self.version) + list(map(os.mkdir, env.paths.values())) + return env - with open('hello.py', 'w') as f: - f.write(DALS(""" - def run(): - print('hello') - """)) + def create_foo_pkg(self, env, version): + """ + Create a foo package installed to env.paths['lib'] + as version. + """ + safe_version = pkg_resources.safe_version(version) + lib = py.path.local(env.paths['lib']) + egg_info = lib / 'foo-' + safe_version + '.egg-info' + egg_info.mkdir() + pkg_info = egg_info / 'PKG_INFO' + with pkg_info.open('w') as strm: + strm.write('version: ' + version) + + def test_version_resolved_from_egg_info(self, env): + version = '1.11.0.dev0+2329eae' + self.create_foo_pkg(env, version) - @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) - 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_version_resolved_from_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 = pkg_resources.Requirement.parse('foo>=1.9') dist = pkg_resources.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 - + assert dist.version == version |