summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--setuptools/dist.py2
-rw-r--r--setuptools/tests/test_egg_info.py18
2 files changed, 20 insertions, 0 deletions
diff --git a/setuptools/dist.py b/setuptools/dist.py
index 0787261e..dfe700bd 100644
--- a/setuptools/dist.py
+++ b/setuptools/dist.py
@@ -369,6 +369,8 @@ class Distribution(Distribution_parse_config_files, _Distribution):
spec_ext_reqs = getattr(self, 'extras_require', None) or {}
self._tmp_extras_require = defaultdict(list)
for section, v in spec_ext_reqs.items():
+ # Do not strip empty sections.
+ self._tmp_extras_require[section]
for r in pkg_resources.parse_requirements(v):
suffix = self._suffix_for(r)
self._tmp_extras_require[section + suffix].append(r)
diff --git a/setuptools/tests/test_egg_info.py b/setuptools/tests/test_egg_info.py
index d9d4ec3b..9ea7cdce 100644
--- a/setuptools/tests/test_egg_info.py
+++ b/setuptools/tests/test_egg_info.py
@@ -274,6 +274,8 @@ class TestEggInfo(object):
with open(requires_txt) as fp:
install_requires = fp.read()
expected_requires = DALS('''
+ [extra]
+
[extra:{marker}]
barbazquux[test]
''').format(marker=self.mismatch_marker_alternate)
@@ -306,6 +308,8 @@ class TestEggInfo(object):
with open(requires_txt) as fp:
install_requires = fp.read()
expected_requires = DALS('''
+ [extra]
+
[extra:{marker}]
barbazquux
''').format(marker=self.mismatch_marker_alternate)
@@ -328,6 +332,20 @@ class TestEggInfo(object):
self._run_install_command(tmpdir_cwd, env)
assert glob.glob(os.path.join(env.paths['lib'], 'barbazquux*')) == []
+ def test_extras_require_with_empty_section(self, tmpdir_cwd, env):
+ tmpl = 'extras_require={{"empty": []}},'
+ req = tmpl.format(marker=self.invalid_marker)
+ self._setup_script_with_requires(req)
+ self._run_install_command(tmpdir_cwd, env)
+ egg_info_dir = self._find_egg_info_files(env.paths['lib']).base
+ requires_txt = os.path.join(egg_info_dir, 'requires.txt')
+ with open(requires_txt) as fp:
+ install_requires = fp.read()
+ expected_requires = DALS('''
+ [empty]
+ ''').format(marker=self.mismatch_marker_alternate)
+ assert install_requires.lstrip() == expected_requires
+
def test_python_requires_egg_info(self, tmpdir_cwd, env):
self._setup_script_with_requires(
"""python_requires='>=2.7.12',""")