summaryrefslogtreecommitdiff
path: root/pkg_resources/tests/test_pkg_resources.py
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2015-11-28 11:51:17 -0500
committerJason R. Coombs <jaraco@jaraco.com>2015-11-28 11:51:17 -0500
commit141d093b0e7f50459c8053ee4619c9991473be6e (patch)
tree99c742424097baa9df546cd747ab7f9f82a4be67 /pkg_resources/tests/test_pkg_resources.py
parent03e7e8c23889bcac55d2cb563ad8deb172e77210 (diff)
downloadpython-setuptools-git-141d093b0e7f50459c8053ee4619c9991473be6e.tar.gz
Move test into pkg_resources tests
Diffstat (limited to 'pkg_resources/tests/test_pkg_resources.py')
-rw-r--r--pkg_resources/tests/test_pkg_resources.py96
1 files changed, 96 insertions, 0 deletions
diff --git a/pkg_resources/tests/test_pkg_resources.py b/pkg_resources/tests/test_pkg_resources.py
index 564d7cec..257cbb5b 100644
--- a/pkg_resources/tests/test_pkg_resources.py
+++ b/pkg_resources/tests/test_pkg_resources.py
@@ -5,9 +5,17 @@ import zipfile
import datetime
import time
import subprocess
+import stat
+
+import pytest
import pkg_resources
+from setuptools.tests.textwrap import DALS
+from setuptools.tests import contexts
+from setuptools.tests import environment
+
+
try:
unicode
except NameError:
@@ -109,3 +117,91 @@ class TestIndependence:
)
cmd = [sys.executable, '-c', '; '.join(lines)]
subprocess.check_call(cmd)
+
+
+
+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):
+ 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_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 = 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
+