Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 9b9829a

Browse files
bearomorphismLee-W
authored andcommitted
refactor(changelog): add get_next_tag_name_after_version and test, mark unused for get_smart_tag_range
1 parent 3ae6404 commit 9b9829a

File tree

2 files changed

+34
-8
lines changed

2 files changed

+34
-8
lines changed

‎commitizen/changelog.py‎

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,16 @@ def incremental_build(
276276
return output_lines
277277

278278

279+
def get_next_tag_name_after_version(tags: Iterable[GitTag], version: str) -> str | None:
280+
it = iter(tag.name for tag in tags)
281+
for name in it:
282+
if name == version:
283+
return next(it, None)
284+
285+
raise NoCommitsFoundError(f"Could not find a valid revision range. {version=}")
286+
287+
288+
# TODO: unused, deprecate this?
279289
def get_smart_tag_range(
280290
tags: Sequence[GitTag], newest: str, oldest: str | None = None
281291
) -> list[GitTag]:
@@ -303,7 +313,7 @@ def get_smart_tag_range(
303313

304314

305315
def get_oldest_and_newest_rev(
306-
tags: Sequence[GitTag],
316+
tags: Iterable[GitTag],
307317
version: str,
308318
rules: TagRules,
309319
) -> tuple[str | None, str]:
@@ -326,15 +336,13 @@ def get_tag_name(v: str) -> str:
326336
newest_tag_name = get_tag_name(newest_version)
327337
oldest_tag_name = get_tag_name(oldest_version) if oldest_version else None
328338

329-
tags_range = get_smart_tag_range(tags, newest_tag_name, oldest_tag_name)
330-
if not tags_range:
331-
raise NoCommitsFoundError("Could not find a valid revision range.")
332-
333-
oldest_rev: str | None = tags_range[-1].name
339+
oldest_rev = get_next_tag_name_after_version(
340+
tags, oldest_tag_name or newest_tag_name
341+
)
334342

335343
# Return None for oldest_rev if:
336344
# 1. The oldest tag is the last tag in the list and matches the requested oldest tag
337345
# 2. The oldest and the newest tag are the same
338-
if oldest_rev == oldest_tag_name==tags[-1].nameoroldest_rev==newest_tag_name:
339-
oldest_rev=None
346+
if oldest_rev == newest_tag_name:
347+
returnNone, newest_tag_name
340348
return oldest_rev, newest_tag_name

‎tests/test_changelog.py‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1535,6 +1535,24 @@ def test_get_smart_tag_range_returns_an_extra_for_a_single_tag(tags):
15351535
assert 2 == len(res)
15361536

15371537

1538+
def test_get_next_tag_name_after_version(tags):
1539+
# Test finding next tag after a version
1540+
next_tag_name = changelog.get_next_tag_name_after_version(tags, "v1.2.0")
1541+
assert next_tag_name == "v1.1.1"
1542+
1543+
next_tag_name = changelog.get_next_tag_name_after_version(tags, "v1.1.0")
1544+
assert next_tag_name == "v1.0.0"
1545+
1546+
# Test finding last tag when given version is last
1547+
last_tag_name = changelog.get_next_tag_name_after_version(tags, "v0.9.1")
1548+
assert last_tag_name is None
1549+
1550+
# Test error when version not found
1551+
with pytest.raises(changelog.NoCommitsFoundError) as exc_info:
1552+
changelog.get_next_tag_name_after_version(tags, "nonexistent")
1553+
assert "Could not find a valid revision range" in str(exc_info.value)
1554+
1555+
15381556
@dataclass
15391557
class TagDef:
15401558
name: str

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /