summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Larson <larson.eric.d@gmail.com>2015-11-15 22:30:46 -0500
committerEric Larson <larson.eric.d@gmail.com>2015-11-15 22:30:46 -0500
commite3d2219bcd7bf239a1c7ada0d51a9efd9cd4e0d1 (patch)
tree0da1d97426072fea5113fdc026842156c5f2cfe5
parent3e1da0da1436b2247f5a6576adb25c58ed560560 (diff)
downloadpython-setuptools-bitbucket-e3d2219bcd7bf239a1c7ada0d51a9efd9cd4e0d1.tar.gz
Add tests ref #419.
-rw-r--r--setuptools/tests/test_egg_info.py96
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