diff options
-rw-r--r-- | script/bump_changelog.py | 23 | ||||
-rw-r--r-- | script/test_bump_changelog.py | 34 |
2 files changed, 44 insertions, 13 deletions
diff --git a/script/bump_changelog.py b/script/bump_changelog.py index f1e04420..23788002 100644 --- a/script/bump_changelog.py +++ b/script/bump_changelog.py @@ -8,7 +8,6 @@ from pathlib import Path DEFAULT_CHANGELOG_PATH = Path("ChangeLog") err = "in the changelog, fix that first!" -TBA_ERROR_MSG = "More than one release date 'TBA' %s" % err NEW_VERSION_ERROR_MSG = "The text for this version '{version}' did not exists %s" % err NEXT_VERSION_ERROR_MSG = ( "The text for the next version '{version}' already exists %s" % err @@ -40,9 +39,7 @@ class VersionType(enum.Enum): PATCH = 2 -def generic_get_next_version( - version: str, version_type: VersionType = VersionType.PATCH -) -> str: +def get_next_version(version: str, version_type: VersionType) -> str: new_version = version.split(".") part_to_increase = new_version[version_type.value] if "-" in part_to_increase: @@ -53,22 +50,30 @@ def generic_get_next_version( return ".".join(new_version) -def get_next_version(version: str) -> str: +def get_version_type(version: str) -> VersionType: if version.endswith("0.0"): version_type = VersionType.MAJOR elif version.endswith("0"): version_type = VersionType.MINOR else: version_type = VersionType.PATCH - next_version = generic_get_next_version(version, version_type) - return next_version + return version_type def transform_content(content: str, version: str) -> str: - next_version = get_next_version(version) + version_type = get_version_type(version) + next_version = get_next_version(version, version_type) wn_next_version = FULL_WHATS_NEW_TEXT.format(version=next_version) # There is only one field where the release date is TBA - assert content.count(RELEASE_DATE_TEXT) == 1, TBA_ERROR_MSG + if version_type in [VersionType.MAJOR, VersionType.MINOR]: + assert ( + content.count(RELEASE_DATE_TEXT) <= 1 + ), f"There should be only one release date 'TBA' ({version}) {err}" + else: + next_minor_version = get_next_version(version, VersionType.MINOR) + assert ( + content.count(RELEASE_DATE_TEXT) <= 2 + ), f"There should be only two release dates 'TBA' ({version} and {next_minor_version}) {err}" # There is already a release note for the version we want to release assert ( content.count(FULL_WHATS_NEW_TEXT.format(version=version)) == 1 diff --git a/script/test_bump_changelog.py b/script/test_bump_changelog.py index c51b59e7..fcdbd225 100644 --- a/script/test_bump_changelog.py +++ b/script/test_bump_changelog.py @@ -1,5 +1,5 @@ import pytest -from bump_changelog import VersionType, generic_get_next_version, transform_content +from bump_changelog import VersionType, get_next_version, transform_content @pytest.mark.parametrize( @@ -19,8 +19,8 @@ from bump_changelog import VersionType, generic_get_next_version, transform_cont ["2.0.0", VersionType.MAJOR, "3.0.0"], ], ) -def test_generic_get_next_version(version, version_type, expected): - assert generic_get_next_version(version, version_type) == expected +def test_get_next_version(version, version_type, expected): + assert get_next_version(version, version_type) == expected @pytest.mark.parametrize( @@ -41,7 +41,7 @@ What's New in astroid 2.6.0? Release Date: TBA """, "2.6.1", - "More than one release date 'TBA'", + r"There should be only two release dates 'TBA' \(2.6.1 and 2.7.0\)", ], [ """=================== @@ -68,6 +68,32 @@ Release Date: 2012-02-05 "2.6.1", "the next version '2.6.2' already exists", ], + [ + """ +What's New in astroid 3.0.0? +============================ +Release Date: TBA + +What's New in astroid 2.6.10? +============================ +Release Date: TBA +""", + "3.0.0", + r"There should be only one release date 'TBA' \(3.0.0\)", + ], + [ + """ +What's New in astroid 2.7.0? +============================ +Release Date: TBA + +What's New in astroid 2.6.10? +============================ +Release Date: TBA +""", + "2.7.0", + r"There should be only one release date 'TBA' \(2.7.0\)", + ], ], ) def test_update_content_error(old_content, version, expected_error): |