-
Notifications
You must be signed in to change notification settings - Fork 96
Expand file tree
/
Copy pathtest_replace.py
More file actions
50 lines (41 loc) · 1.75 KB
/
test_replace.py
File metadata and controls
50 lines (41 loc) · 1.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import pytest
from semver import Version, replace
@pytest.mark.parametrize(
"version,parts,expected",
[
("3.4.5", dict(major=2), "2.4.5"),
("3.4.5", dict(major="2"), "2.4.5"),
("3.4.5", dict(major=2, minor=5), "2.5.5"),
("3.4.5", dict(minor=2), "3.2.5"),
("3.4.5", dict(major=2, minor=5, patch=10), "2.5.10"),
("3.4.5", dict(major=2, minor=5, patch=10, prerelease="rc1"), "2.5.10-rc1"),
(
"3.4.5",
dict(major=2, minor=5, patch=10, prerelease="rc1", build="b1"),
"2.5.10-rc1+b1",
),
("3.4.5-alpha.1.2", dict(major=2), "2.4.5-alpha.1.2"),
("3.4.5-alpha.1.2", dict(build="x1"), "3.4.5-alpha.1.2+x1"),
("3.4.5+build1", dict(major=2), "2.4.5+build1"),
],
)
def test_replace_method_replaces_requested_parts(version, parts, expected):
assert replace(version, **parts) == expected
def test_replace_raises_TypeError_for_invalid_keyword_arg():
with pytest.raises(TypeError, match=r"replace\(\).*unknown.*"):
assert replace("1.2.3", unknown="should_raise")
@pytest.mark.parametrize(
"version,parts,expected",
[
("3.4.5", dict(major=2, minor=5), "2.5.5"),
("3.4.5", dict(major=2, minor=5, patch=10), "2.5.10"),
("3.4.5-alpha.1.2", dict(major=2), "2.4.5-alpha.1.2"),
("3.4.5-alpha.1.2", dict(build="x1"), "3.4.5-alpha.1.2+x1"),
("3.4.5+build1", dict(major=2), "2.4.5+build1"),
],
)
def test_should_return_versioninfo_with_replaced_parts(version, parts, expected):
assert Version.parse(version).replace(**parts) == Version.parse(expected)
def test_replace_raises_ValueError_for_non_numeric_values():
with pytest.raises(ValueError):
Version.parse("1.2.3").replace(major="x")