From b893995cbc672664703854de34bfa33d66777fbd Mon Sep 17 00:00:00 2001 From: Manuel Barkhau Date: Tue, 9 Jul 2019 08:21:57 +0200 Subject: [PATCH] fix gitlab #4: make {release} tag optional --- src/pycalver/patterns.py | 2 +- test/test_patterns.py | 4 ++-- test/test_rewrite.py | 28 ++++++++++++++++++++++++++++ 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/pycalver/patterns.py b/src/pycalver/patterns.py index b7527c7..f3c6f49 100644 --- a/src/pycalver/patterns.py +++ b/src/pycalver/patterns.py @@ -78,7 +78,7 @@ COMPOSITE_PART_PATTERNS = { 'semver' : r"{MAJOR}\.{MINOR}\.{PATCH}", 'release_tag' : r"{tag}", 'build' : r"\.{bid}", - 'release' : r"-{tag}", + 'release' : r"(?:-{tag})?", # depricated 'pep440_version': r"{year}{month}\.{BID}(?:{pep440_tag})?", } diff --git a/test/test_patterns.py b/test/test_patterns.py index f0d0716..dfb31d4 100644 --- a/test/test_patterns.py +++ b/test/test_patterns.py @@ -37,8 +37,8 @@ PATTERN_PART_CASES = [ ("release" , "-dev" , "-dev"), ("release" , "-rc" , "-rc"), ("release" , "-post" , "-post"), - ("release" , "-pre" , None), - ("release" , "alpha" , None), + ("release" , "-pre" , ""), + ("release" , "alpha" , ""), ] diff --git a/test/test_rewrite.py b/test/test_rewrite.py index d9d4613..3b698f2 100644 --- a/test/test_rewrite.py +++ b/test/test_rewrite.py @@ -100,3 +100,31 @@ def test_error_bad_pattern(): assert False, "expected rewrite.NoPatternMatch" except rewrite.NoPatternMatch as ex: assert "setup.py" in str(ex) + + +OPTIONAL_RELEASE_FIXTURE = """ +# SPDX-License-Identifier: BSD +__version__ = "2018.0002-beta" +""" + + +def test_optional_release(): + old_lines = OPTIONAL_RELEASE_FIXTURE.splitlines() + pattern = "{year}.{build_no}{release}" + patterns = ['__version__ = "{year}.{build_no}{release}"'] + + new_vinfo = version.parse_version_info("2019.0003", pattern) + new_lines = rewrite.rewrite_lines(patterns, new_vinfo, old_lines) + + assert len(new_lines) == len(old_lines) + assert "2019.0003" not in "\n".join(old_lines) + new_text = "\n".join(new_lines) + assert "2019.0003" in new_text + + new_vinfo = version.parse_version_info("2019.0004-beta", pattern) + new_lines = rewrite.rewrite_lines(patterns, new_vinfo, old_lines) + + # make sure optional release tag is added back on + assert len(new_lines) == len(old_lines) + assert "2019.0004-beta" not in "\n".join(old_lines) + assert "2019.0004-beta" in "\n".join(new_lines)