Skip to content

Commit 47c994c

Browse files
committed
test(Prerelease): test
1 parent 30a36da commit 47c994c

File tree

2 files changed

+31
-6
lines changed

2 files changed

+31
-6
lines changed

commitizen/version_schemes.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,9 @@ class Prerelease(Enum):
4646
BETA = "beta"
4747
RC = "rc"
4848

49-
def __str__(self) -> str:
50-
return self.value
51-
5249
@classmethod
53-
def safe_cast(cls, value: str | None) -> Prerelease | None:
54-
if not value:
50+
def safe_cast(cls, value: object) -> Prerelease | None:
51+
if not isinstance(value, str):
5552
return None
5653
try:
5754
return cls[value.upper()]

tests/test_version_schemes.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,35 @@
1212

1313
from commitizen.config.base_config import BaseConfig
1414
from commitizen.exceptions import VersionSchemeUnknown
15-
from commitizen.version_schemes import Pep440, SemVer, get_version_scheme
15+
from commitizen.version_schemes import Pep440, Prerelease, SemVer, get_version_scheme
16+
17+
18+
class TestPrereleaseSafeCast:
19+
def test_safe_cast_valid_strings(self):
20+
assert Prerelease.safe_cast("ALPHA") == Prerelease.ALPHA
21+
assert Prerelease.safe_cast("BETA") == Prerelease.BETA
22+
assert Prerelease.safe_cast("RC") == Prerelease.RC
23+
24+
def test_safe_cast_case_insensitive(self):
25+
assert Prerelease.safe_cast("alpha") == Prerelease.ALPHA
26+
assert Prerelease.safe_cast("beta") == Prerelease.BETA
27+
assert Prerelease.safe_cast("rc") == Prerelease.RC
28+
assert Prerelease.safe_cast("Alpha") == Prerelease.ALPHA
29+
assert Prerelease.safe_cast("Beta") == Prerelease.BETA
30+
assert Prerelease.safe_cast("Rc") == Prerelease.RC
31+
32+
def test_safe_cast_invalid_strings(self):
33+
assert Prerelease.safe_cast("invalid") is None
34+
assert Prerelease.safe_cast("") is None
35+
assert Prerelease.safe_cast("release") is None
36+
37+
def test_safe_cast_non_string_values(self):
38+
assert Prerelease.safe_cast(None) is None
39+
assert Prerelease.safe_cast(1) is None
40+
assert Prerelease.safe_cast(True) is None
41+
assert Prerelease.safe_cast([]) is None
42+
assert Prerelease.safe_cast({}) is None
43+
assert Prerelease.safe_cast(Prerelease.ALPHA) is None # enum value itself
1644

1745

1846
def test_default_version_scheme_is_pep440(config: BaseConfig):

0 commit comments

Comments
 (0)