Commit 141d093b authored by Jason R. Coombs's avatar Jason R. Coombs

Move test into pkg_resources tests

parent 03e7e8c2
......@@ -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
......@@ -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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment