Skip to content

Commit 5e81873

Browse files
committed
fix(SemVerIncrement): fix error handling and add test
1 parent 0265ad5 commit 5e81873

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed

commitizen/bump_rule.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def safe_cast(cls, value: Any) -> SemVerIncrement | None:
2323
return None
2424
try:
2525
return cls[value]
26-
except ValueError:
26+
except KeyError:
2727
return None
2828

2929
@classmethod

tests/test_bump_rule.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -655,3 +655,38 @@ def test_find_highest_increment():
655655
)
656656
== SemVerIncrement.MINOR
657657
)
658+
659+
660+
class TestSemVerIncrementSafeCast:
661+
def test_safe_cast_valid_values(self):
662+
"""Test safe_cast with valid enum values."""
663+
assert SemVerIncrement.safe_cast("MAJOR") == SemVerIncrement.MAJOR
664+
assert SemVerIncrement.safe_cast("MINOR") == SemVerIncrement.MINOR
665+
assert SemVerIncrement.safe_cast("PATCH") == SemVerIncrement.PATCH
666+
667+
def test_safe_cast_invalid_values(self):
668+
"""Test safe_cast with invalid values."""
669+
assert SemVerIncrement.safe_cast("INVALID") is None
670+
assert SemVerIncrement.safe_cast("") is None
671+
assert SemVerIncrement.safe_cast(123) is None
672+
assert SemVerIncrement.safe_cast(None) is None
673+
674+
def test_safe_cast_dict(self):
675+
"""Test safe_cast_dict method."""
676+
test_dict = {
677+
"MAJOR": "MAJOR",
678+
"MINOR": "MINOR",
679+
"PATCH": "PATCH",
680+
"INVALID": "INVALID",
681+
"empty": "",
682+
"number": 123,
683+
"none": None,
684+
}
685+
686+
expected_dict = {
687+
"MAJOR": SemVerIncrement.MAJOR,
688+
"MINOR": SemVerIncrement.MINOR,
689+
"PATCH": SemVerIncrement.PATCH,
690+
}
691+
692+
assert SemVerIncrement.safe_cast_dict(test_dict) == expected_dict

0 commit comments

Comments
 (0)