aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenoit Pierre <benoit.pierre@gmail.com>2017-07-14 05:44:35 +0200
committerBenoit Pierre <benoit.pierre@gmail.com>2017-07-15 06:37:00 +0200
commit7c2df64c8558ac71c20d86d3cb2a05daad99cc87 (patch)
tree4bf86b7c159861b7eebbc7d032de7a24bd3c5744
parent95386da92ec1725a09c5cd8e457be5ff3dc15a3e (diff)
downloadexternal_python_setuptools-7c2df64c8558ac71c20d86d3cb2a05daad99cc87.tar.gz
external_python_setuptools-7c2df64c8558ac71c20d86d3cb2a05daad99cc87.tar.bz2
external_python_setuptools-7c2df64c8558ac71c20d86d3cb2a05daad99cc87.zip
fix possible error when finalizing `install_requires`
-rw-r--r--setuptools/dist.py5
-rw-r--r--setuptools/tests/test_virtualenv.py19
2 files changed, 22 insertions, 2 deletions
diff --git a/setuptools/dist.py b/setuptools/dist.py
index 68c8747a..1bd89ddd 100644
--- a/setuptools/dist.py
+++ b/setuptools/dist.py
@@ -369,11 +369,12 @@ class Distribution(Distribution_parse_config_files, _Distribution):
Move requirements in `install_requires` that
are using environment markers to `extras_require`.
"""
- if not self.install_requires:
+ if not getattr(self, 'install_requires', None):
return
+ extras_require = getattr(self, 'extras_require', None)
extras_require = defaultdict(list, (
(k, list(pkg_resources.parse_requirements(v)))
- for k, v in (self.extras_require or {}).items()
+ for k, v in (extras_require or {}).items()
))
install_requires = []
for r in pkg_resources.parse_requirements(self.install_requires):
diff --git a/setuptools/tests/test_virtualenv.py b/setuptools/tests/test_virtualenv.py
index eb8db7a6..a7f485a4 100644
--- a/setuptools/tests/test_virtualenv.py
+++ b/setuptools/tests/test_virtualenv.py
@@ -1,3 +1,4 @@
+import glob
import os
from pytest import yield_fixture
@@ -29,3 +30,21 @@ def test_clean_env_install(bare_virtualenv):
'cd {source}',
'python setup.py install',
)).format(source=SOURCE_DIR))
+
+def test_pip_upgrade_from_source(virtualenv):
+ """
+ Check pip can upgrade setuptools from source.
+ """
+ dist_dir = virtualenv.workspace
+ # Generate source distribution / wheel.
+ virtualenv.run(' && '.join((
+ 'cd {source}',
+ 'python setup.py -q sdist -d {dist}',
+ 'python setup.py -q bdist_wheel -d {dist}',
+ )).format(source=SOURCE_DIR, dist=dist_dir))
+ sdist = glob.glob(os.path.join(dist_dir, '*.zip'))[0]
+ wheel = glob.glob(os.path.join(dist_dir, '*.whl'))[0]
+ # Then update from wheel.
+ virtualenv.run('pip install ' + wheel)
+ # And finally try to upgrade from source.
+ virtualenv.run('pip install --no-cache-dir --upgrade ' + sdist)