summaryrefslogtreecommitdiff
path: root/pkg_resources
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2015-11-28 12:54:28 -0500
committerJason R. Coombs <jaraco@jaraco.com>2015-11-28 12:54:28 -0500
commit387e7d4df7110d2484978b63972250ea55b38719 (patch)
tree1660b9cc7a535af559b2dacad463e3b963643447 /pkg_resources
parentcf3c962fdb9176f04493a18c3630eb5f0ce7d862 (diff)
downloadpython-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.py115
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