Skip to content

Commit 9d6bace

Browse files
BumpversionConfigTestCase
1 parent f8b499b commit 9d6bace

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed

tests/test_bumpversion_config.py

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
import re
2+
3+
from base_test_case import BaseTestCase
4+
5+
6+
class BumpversionConfigTestCase(BaseTestCase):
7+
"""
8+
Tests the regex pattern from the .bumpversion.cfg file.
9+
"""
10+
11+
# The pattern from the .bumpversion.cfg `parse` key
12+
parse_pattern = re.compile(
13+
r'(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)' r'(\-(?P<prerelease_label>[a-z]+)\.(?P<prerelease>\d+))?'
14+
)
15+
16+
def test_parses_prerelease_version(self):
17+
"""
18+
Verify that a version with a pre-release label is parsed correctly.
19+
"""
20+
version_string = '3.9.30-alpha.0'
21+
match = self.parse_pattern.search(version_string)
22+
23+
self.assertIsNotNone(match, 'The regex should match the pre-release version string.')
24+
25+
parts = match.groupdict()
26+
self.assertEqual(parts['major'], '3')
27+
self.assertEqual(parts['minor'], '9')
28+
self.assertEqual(parts['patch'], '30')
29+
self.assertEqual(parts['prerelease_label'], 'alpha')
30+
self.assertEqual(parts['prerelease'], '0')
31+
32+
def test_parses_release_version(self):
33+
"""
34+
Verify that a standard release version is parsed correctly.
35+
"""
36+
version_string = '3.9.30'
37+
match = self.parse_pattern.search(version_string)
38+
39+
self.assertIsNotNone(match, 'The regex should match the standard release version string.')
40+
41+
parts = match.groupdict()
42+
self.assertEqual(parts['major'], '3')
43+
self.assertEqual(parts['minor'], '9')
44+
self.assertEqual(parts['patch'], '30')
45+
self.assertIsNone(parts['prerelease_label'], 'The pre-release label should be None for a release version.')
46+
self.assertIsNone(parts['prerelease'], 'The pre-release number should be None for a release version.')
47+
48+
def test_parses_rc_prerelease_version(self):
49+
"""
50+
Verify that a version with a different pre-release label (rc) is parsed correctly.
51+
"""
52+
version_string = '10.0.1-rc.12'
53+
match = self.parse_pattern.search(version_string)
54+
55+
self.assertIsNotNone(match, 'The regex should match the rc pre-release version string.')
56+
57+
parts = match.groupdict()
58+
self.assertEqual(parts['major'], '10')
59+
self.assertEqual(parts['minor'], '0')
60+
self.assertEqual(parts['patch'], '1')
61+
self.assertEqual(parts['prerelease_label'], 'rc')
62+
self.assertEqual(parts['prerelease'], '12')
63+
64+
def test_does_not_match_invalid_string(self):
65+
"""
66+
Verify that the regex does not match an invalid version string.
67+
"""
68+
version_string = 'not-a-version'
69+
match = self.parse_pattern.search(version_string)
70+
self.assertIsNone(match, 'The regex should not match an invalid version string.')

0 commit comments

Comments
 (0)