diff options
author | Benoit Pierre <benoit.pierre@gmail.com> | 2017-07-14 05:44:35 +0200 |
---|---|---|
committer | Benoit Pierre <benoit.pierre@gmail.com> | 2017-07-15 06:37:00 +0200 |
commit | 7c2df64c8558ac71c20d86d3cb2a05daad99cc87 (patch) | |
tree | 4bf86b7c159861b7eebbc7d032de7a24bd3c5744 | |
parent | 95386da92ec1725a09c5cd8e457be5ff3dc15a3e (diff) | |
download | external_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.py | 5 | ||||
-rw-r--r-- | setuptools/tests/test_virtualenv.py | 19 |
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) |