summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHervé Beraud <hberaud@redhat.com>2019-02-27 14:28:34 +0100
committerHervé Beraud <hberaud@redhat.com>2019-03-04 18:44:35 +0100
commit2e3aa0d8519a35a6935aadb2e3322c58f9367fa1 (patch)
treefaee0e34371e16396a70ed7d0238c32474cb5d8a
parent02dfb82e91cb2aafe48002ef079e6914cafca3ff (diff)
downloadpbr-2e3aa0d8519a35a6935aadb2e3322c58f9367fa1.tar.gz
Fix error when keywords are defined as a list in cfg
When keywords are defined as a list in cfg file the generated output have errors and breaks metadata generation. Change-Id: Ie8a5f30d6af1e81ecf3ca40bc94bc460cca38179 Closes-Bug: #1811475
-rw-r--r--pbr/tests/test_core.py2
-rw-r--r--pbr/tests/test_util.py30
-rw-r--r--pbr/util.py4
-rw-r--r--releasenotes/notes/fix-keywords-as-cfg-list-6cadc5141429d7f5.yaml7
4 files changed, 40 insertions, 3 deletions
diff --git a/pbr/tests/test_core.py b/pbr/tests/test_core.py
index 0ee6f53..ccd14ab 100644
--- a/pbr/tests/test_core.py
+++ b/pbr/tests/test_core.py
@@ -74,7 +74,7 @@ class TestCore(base.BaseTestCase):
self.run_setup('egg_info')
stdout, _, _ = self.run_setup('--keywords')
- assert stdout == 'packaging,distutils,setuptools'
+ assert stdout == 'packaging, distutils, setuptools'
def test_setup_py_build_sphinx(self):
stdout, _, return_code = self.run_setup('build_sphinx')
diff --git a/pbr/tests/test_util.py b/pbr/tests/test_util.py
index 6c490a9..8370bf1 100644
--- a/pbr/tests/test_util.py
+++ b/pbr/tests/test_util.py
@@ -130,3 +130,33 @@ class TestMapFieldsParsingScenarios(base.BaseTestCase):
kwargs = util.setup_cfg_to_setup_kwargs(config)
self.assertEqual(self.expected_project_urls, kwargs['project_urls'])
+
+
+class TestKeywordsParsingScenarios(base.BaseTestCase):
+
+ scenarios = [
+ ('keywords_list', {
+ 'config_text': """
+ [metadata]
+ keywords =
+ one
+ two
+ three
+ """, # noqa: E501
+ 'expected_keywords': ['one', 'two', 'three'],
+ },
+ ),
+ ('inline_keywords', {
+ 'config_text': """
+ [metadata]
+ keywords = one, two, three
+ """, # noqa: E501
+ 'expected_keywords': ['one, two, three'],
+ }),
+ ]
+
+ def test_keywords_parsing(self):
+ config = config_from_ini(self.config_text)
+ kwargs = util.setup_cfg_to_setup_kwargs(config)
+
+ self.assertEqual(self.expected_keywords, kwargs['keywords'])
diff --git a/pbr/util.py b/pbr/util.py
index 4c76081..5bb731b 100644
--- a/pbr/util.py
+++ b/pbr/util.py
@@ -146,6 +146,7 @@ MULTI_FIELDS = ("classifiers",
"dependency_links",
"setup_requires",
"tests_require",
+ "keywords",
"cmdclass")
# setup() arguments that can have mapping values in setup.cfg
@@ -154,8 +155,7 @@ MAP_FIELDS = ("project_urls",)
# setup() arguments that contain boolean values
BOOL_FIELDS = ("use_2to3", "zip_safe", "include_package_data")
-
-CSV_FIELDS = ("keywords",)
+CSV_FIELDS = ()
def resolve_name(name):
diff --git a/releasenotes/notes/fix-keywords-as-cfg-list-6cadc5141429d7f5.yaml b/releasenotes/notes/fix-keywords-as-cfg-list-6cadc5141429d7f5.yaml
new file mode 100644
index 0000000..215a164
--- /dev/null
+++ b/releasenotes/notes/fix-keywords-as-cfg-list-6cadc5141429d7f5.yaml
@@ -0,0 +1,7 @@
+---
+fixes:
+ - |
+ Fix error when ``keywords`` argument as a cfg list. Previously `keywords` are
+ considered as ``CSV_FIELDS`` and with these changes `keywords` are
+ now ``MULTI_FIELDS``. Refer to https://bugs.launchpad.net/pbr/+bug/1811475
+ for further reading.