summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2022-08-05 17:56:35 +0000
committerGerrit Code Review <review@openstack.org>2022-08-05 17:56:35 +0000
commit45d4c9f02fafb425e61a18bbd7a20ef456293a56 (patch)
treeaef1e4de0f29b147d9aad6b0df62e4f143d78ec8
parentcb2c15ea2b7fffa1adcd28e623572599e2856a2e (diff)
parent0aecbea81bcf8134bc76c17d4bc481a6f56e7bb2 (diff)
downloadpbr-45d4c9f02fafb425e61a18bbd7a20ef456293a56.tar.gz
Merge "Fix symbol identification in multiline message"5.11.0
-rw-r--r--pbr/packaging.py12
-rw-r--r--pbr/tests/test_packaging.py33
-rw-r--r--releasenotes/notes/fix-symbols-leading-spaces-f68928d75a8f0997.yaml5
3 files changed, 45 insertions, 5 deletions
diff --git a/pbr/packaging.py b/pbr/packaging.py
index 8e9c9ae..474d013 100644
--- a/pbr/packaging.py
+++ b/pbr/packaging.py
@@ -692,12 +692,14 @@ def _get_increment_kwargs(git_dir, tag):
# git log output affecting out ability to have working sem ver headers.
changelog = git._run_git_command(['log', '--pretty=%B', version_spec],
git_dir)
- header_len = len('sem-ver:')
- commands = [line[header_len:].strip() for line in changelog.split('\n')
- if line.lower().strip().startswith('sem-ver:')]
symbols = set()
- for command in commands:
- symbols.update([symbol.strip() for symbol in command.split(',')])
+ header = 'sem-ver:'
+ for line in changelog.split("\n"):
+ line = line.lower().strip()
+ if not line.lower().strip().startswith(header):
+ continue
+ new_symbols = line[len(header):].strip().split(",")
+ symbols.update([symbol.strip() for symbol in new_symbols])
def _handle_symbol(symbol, symbols, impact):
if symbol in symbols:
diff --git a/pbr/tests/test_packaging.py b/pbr/tests/test_packaging.py
index 346540b..c719d1e 100644
--- a/pbr/tests/test_packaging.py
+++ b/pbr/tests/test_packaging.py
@@ -672,6 +672,27 @@ class TestVersions(base.BaseTestCase):
version = packaging._get_version_from_git()
self.assertThat(version, matchers.StartsWith('2.0.0.dev1'))
+ def test_multi_inline_symbols_no_space(self):
+ self.repo.commit()
+ self.repo.tag('1.2.3')
+ self.repo.commit('Sem-ver: feature,api-break')
+ version = packaging._get_version_from_git()
+ self.assertThat(version, matchers.StartsWith('2.0.0.dev1'))
+
+ def test_multi_inline_symbols_spaced(self):
+ self.repo.commit()
+ self.repo.tag('1.2.3')
+ self.repo.commit('Sem-ver: feature, api-break')
+ version = packaging._get_version_from_git()
+ self.assertThat(version, matchers.StartsWith('2.0.0.dev1'))
+
+ def test_multi_inline_symbols_reversed(self):
+ self.repo.commit()
+ self.repo.tag('1.2.3')
+ self.repo.commit('Sem-ver: api-break,feature')
+ version = packaging._get_version_from_git()
+ self.assertThat(version, matchers.StartsWith('2.0.0.dev1'))
+
def test_leading_space(self):
self.repo.commit()
self.repo.tag('1.2.3')
@@ -679,6 +700,18 @@ class TestVersions(base.BaseTestCase):
version = packaging._get_version_from_git()
self.assertThat(version, matchers.StartsWith('2.0.0.dev1'))
+ def test_leading_space_multiline(self):
+ self.repo.commit()
+ self.repo.tag('1.2.3')
+ self.repo.commit(
+ (
+ ' Some cool text\n'
+ ' sem-ver: api-break'
+ )
+ )
+ version = packaging._get_version_from_git()
+ self.assertThat(version, matchers.StartsWith('2.0.0.dev1'))
+
def test_leading_characters_symbol_not_found(self):
self.repo.commit()
self.repo.tag('1.2.3')
diff --git a/releasenotes/notes/fix-symbols-leading-spaces-f68928d75a8f0997.yaml b/releasenotes/notes/fix-symbols-leading-spaces-f68928d75a8f0997.yaml
new file mode 100644
index 0000000..f15c9ee
--- /dev/null
+++ b/releasenotes/notes/fix-symbols-leading-spaces-f68928d75a8f0997.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+ - |
+ Fix an issue where symbols that were indented
+ would produce an incorrect version. \ No newline at end of file