diff --git a/releasenotes/notes/tag-format-bd5018a813c804fd.yaml b/releasenotes/notes/tag-format-bd5018a813c804fd.yaml new file mode 100644 index 0000000..dbc58f3 --- /dev/null +++ b/releasenotes/notes/tag-format-bd5018a813c804fd.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + Allow optional 'v' prefix in the default version tag regex. diff --git a/reno/config.py b/reno/config.py index dfa8284..03ae26b 100644 --- a/reno/config.py +++ b/reno/config.py @@ -66,7 +66,7 @@ _OPTIONS = [ Opt('release_tag_re', textwrap.dedent('''\ - ((?:[\d.ab]|rc)+) # digits, a, b, and rc cover regular and + ((?:v?[\d.ab]|rc)+) # digits, a, b, and rc cover regular and # pre-releases '''), textwrap.dedent("""\ @@ -77,7 +77,7 @@ _OPTIONS = [ Opt('pre_release_tag_re', textwrap.dedent('''\ - (?P\.\d+(?:[ab]|rc)+\d*)$ + (?P\.v?\d+(?:[ab]|rc)+\d*)$ '''), textwrap.dedent("""\ The regex pattern used to check if a valid release version tag diff --git a/reno/tests/test_scanner.py b/reno/tests/test_scanner.py index d51fddc..5c7a794 100644 --- a/reno/tests/test_scanner.py +++ b/reno/tests/test_scanner.py @@ -273,6 +273,20 @@ class BasicTest(Base): results, ) + def test_tag_with_v_prefix(self): + filename = self._add_notes_file() + self.repo.git('tag', '-s', '-m', 'tag with v prefix', 'v1.0.0') + self.scanner = scanner.Scanner(self.c) + raw_results = self.scanner.get_notes_by_version() + results = { + k: [f for (f, n) in v] + for (k, v) in raw_results.items() + } + self.assertEqual( + {'v1.0.0': [filename]}, + results, + ) + def test_note_commit_after_tag(self): self._make_python_package() self.repo.git('tag', '-s', '-m', 'first tag', '1.0.0') @@ -876,6 +890,23 @@ class PreReleaseTest(Base): results, ) + def test_tag_with_v_prefix(self): + self._make_python_package() + self.repo.git('tag', '-s', '-m', 'first tag', 'v1.0.0.0a1') + f1 = self._add_notes_file('slug1') + self.repo.git('tag', '-s', '-m', 'first tag', 'v1.0.0.0a2') + self.scanner = scanner.Scanner(self.c) + raw_results = self.scanner.get_notes_by_version() + results = { + k: [f for (f, n) in v] + for (k, v) in raw_results.items() + } + self.assertEqual( + {'v1.0.0.0a2': [f1], + }, + results, + ) + def test_collapse(self): files = [] self._make_python_package()