summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2015-11-28 13:09:38 -0500
committerJason R. Coombs <jaraco@jaraco.com>2015-11-28 13:09:38 -0500
commita907dbdf2b691eae58693ffcf66ab91634e0c286 (patch)
tree30f18c0cbefbcf3b90c36e7026655fa2d7406a04
parente2e71004c87d3afa3dc8692739b477d2d70aa2e6 (diff)
parent9744cf2edf82eeda796ca22bf21ac0056c8aa925 (diff)
downloadpython-setuptools-git-a907dbdf2b691eae58693ffcf66ab91634e0c286.tar.gz
Merge with latest tests
-rw-r--r--pkg_resources/tests/test_pkg_resources.py52
-rw-r--r--setuptools/tests/test_egg_info.py85
2 files changed, 52 insertions, 85 deletions
diff --git a/pkg_resources/tests/test_pkg_resources.py b/pkg_resources/tests/test_pkg_resources.py
index 564d7cec..0a03dd93 100644
--- a/pkg_resources/tests/test_pkg_resources.py
+++ b/pkg_resources/tests/test_pkg_resources.py
@@ -5,9 +5,15 @@ import zipfile
import datetime
import time
import subprocess
+import stat
+import distutils.dist
+import distutils.command.install_egg_info
+
+import pytest
import pkg_resources
+
try:
unicode
except NameError:
@@ -109,3 +115,49 @@ class TestIndependence:
)
cmd = [sys.executable, '-c', '; '.join(lines)]
subprocess.check_call(cmd)
+
+
+
+class TestDeepVersionLookupDistutils(object):
+
+ @pytest.fixture
+ def env(self, tmpdir):
+ """
+ Create a package environment, similar to a virtualenv,
+ in which packages are installed.
+ """
+ class Environment(str):
+ pass
+
+ 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
+ )
+ list(map(os.mkdir, env.paths.values()))
+ return env
+
+ def create_foo_pkg(self, env, version):
+ """
+ Create a foo package installed (distutils-style) to env.paths['lib']
+ as version.
+ """
+ attrs = dict(name='foo', version=version)
+ dist = distutils.dist.Distribution(attrs)
+ iei_cmd = distutils.command.install_egg_info.install_egg_info(dist)
+ iei_cmd.initialize_options()
+ iei_cmd.install_dir = env.paths['lib']
+ iei_cmd.finalize_options()
+ iei_cmd.run()
+
+ def test_version_resolved_from_egg_info(self, env):
+ version = '1.11.0.dev0+2329eae'
+ self.create_foo_pkg(env, version)
+
+ # 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 == version
diff --git a/setuptools/tests/test_egg_info.py b/setuptools/tests/test_egg_info.py
index b4195e06..645c379c 100644
--- a/setuptools/tests/test_egg_info.py
+++ b/setuptools/tests/test_egg_info.py
@@ -6,7 +6,6 @@ import pytest
from . import environment
from .textwrap import DALS
from . import contexts
-from pkg_resources import WorkingSet, Requirement
class Environment(str):
@@ -98,87 +97,3 @@ class TestEggInfo(object):
# 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