diff options
author | Zuul <zuul@review.opendev.org> | 2022-08-05 17:56:35 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2022-08-05 17:56:35 +0000 |
commit | 45d4c9f02fafb425e61a18bbd7a20ef456293a56 (patch) | |
tree | aef1e4de0f29b147d9aad6b0df62e4f143d78ec8 | |
parent | cb2c15ea2b7fffa1adcd28e623572599e2856a2e (diff) | |
parent | 0aecbea81bcf8134bc76c17d4bc481a6f56e7bb2 (diff) | |
download | pbr-45d4c9f02fafb425e61a18bbd7a20ef456293a56.tar.gz |
Merge "Fix symbol identification in multiline message"5.11.0
-rw-r--r-- | pbr/packaging.py | 12 | ||||
-rw-r--r-- | pbr/tests/test_packaging.py | 33 | ||||
-rw-r--r-- | releasenotes/notes/fix-symbols-leading-spaces-f68928d75a8f0997.yaml | 5 |
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 |