Skip to content

Commit e012bb3

Browse files
authored
[MRG] Rewrite tests in test_semver.py #615 (#757)
[MRG] Rewrite tests in test_semver.py #615
2 parents bf29f66 + 6efe82b commit e012bb3

File tree

1 file changed

+90
-86
lines changed

1 file changed

+90
-86
lines changed

tests/unit/test_semver.py

Lines changed: 90 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1+
import pytest
12
from repo2docker.buildpacks.julia import semver
23

34

4-
def test_str_to_version():
5-
assert semver.str_to_version("1.5.2") == (1, 5, 2)
6-
assert semver.str_to_version("1") == (1,)
5+
@pytest.mark.parametrize("test_input, expected", [("1.5.2", (1, 5, 2)), ("1", (1,))])
6+
def test_str_to_version(test_input, expected):
7+
assert semver.str_to_version(test_input) == expected
78

89

910
def test_major_minor_patch():
@@ -14,84 +15,86 @@ def test_major_minor_patch():
1415
assert semver.patch((1,)) == 0
1516

1617

17-
def test_simple_matches():
18-
assert repr(semver.create_semver_matcher("1.2.5")) == "[1.2.5-2)"
19-
assert repr(semver.create_semver_matcher("1.2.5")) == "[1.2.5-2)"
20-
assert repr(semver.create_semver_matcher("^1.2.3")) == "[1.2.3-2)"
21-
assert repr(semver.create_semver_matcher("^1.2")) == "[1.2-2)"
22-
assert repr(semver.create_semver_matcher("^1")) == "[1-2)"
23-
assert repr(semver.create_semver_matcher("^0.2.3")) == "[0.2.3-0.3)"
24-
assert repr(semver.create_semver_matcher("^0.0.3")) == "[0.0.3-0.0.4)"
25-
assert repr(semver.create_semver_matcher("^0.0")) == "[0.0-0.1)"
26-
assert repr(semver.create_semver_matcher("^0")) == "[0-1)"
27-
# This one seems wrong: `~1.2.3 = [1.2.3, 1.2.4)` but ~ is special in Julia
28-
# from https://docs.julialang.org/en/latest/stdlib/Pkg/#Tilde-specifiers-1
29-
assert repr(semver.create_semver_matcher("~1.2.3")) == "[1.2.3-1.2.4]"
30-
assert repr(semver.create_semver_matcher("~1.3.5")) == "[1.3.5-1.3.6]"
31-
assert repr(semver.create_semver_matcher("~1.2")) == "[1.2-1.3]"
32-
assert repr(semver.create_semver_matcher("~1")) == "[1-2]"
33-
34-
35-
def test_range_matches():
36-
assert semver.create_semver_matcher("1.2.3") == semver.create_semver_matcher(
37-
"^1.2.3"
38-
)
39-
assert semver.create_semver_matcher("1.2.3") == semver.create_semver_matcher(
40-
"^1.2.3"
41-
)
42-
assert semver.create_semver_matcher("1.2") == semver.create_semver_matcher("^1.2")
43-
assert semver.create_semver_matcher("1") == semver.create_semver_matcher("^1")
44-
assert semver.create_semver_matcher("0.0.3") == semver.create_semver_matcher(
45-
"^0.0.3"
46-
)
47-
assert semver.create_semver_matcher("0") == semver.create_semver_matcher("^0")
48-
49-
50-
def test_match_particular_version():
51-
assert semver.create_semver_matcher("1.2.3").match(semver.str_to_version("1.5.2"))
52-
assert semver.create_semver_matcher("1.2.3").match(semver.str_to_version("1.2.3"))
53-
assert (
54-
semver.create_semver_matcher("1.2.3").match(semver.str_to_version("2.0.0"))
55-
== False
56-
)
57-
assert (
58-
semver.create_semver_matcher("1.2.3").match(semver.str_to_version("1.2.2"))
59-
== False
60-
)
61-
assert semver.create_semver_matcher("~1.2.3").match(semver.str_to_version("1.2.4"))
62-
assert semver.create_semver_matcher("~1.2.3").match(semver.str_to_version("1.2.3"))
63-
assert (
64-
semver.create_semver_matcher("~1.2.3").match(semver.str_to_version("1.3"))
65-
== False
66-
)
67-
assert semver.create_semver_matcher("1.2").match(semver.str_to_version("1.2.0"))
68-
assert semver.create_semver_matcher("1.2").match(semver.str_to_version("1.9.9"))
69-
assert (
70-
semver.create_semver_matcher("1.2").match(semver.str_to_version("2.0.0"))
71-
== False
72-
)
18+
@pytest.mark.parametrize(
19+
"test_input, expected",
20+
[
21+
("1.2.5", "[1.2.5-2)"),
22+
("1.2.5", "[1.2.5-2)"),
23+
("^1.2.3", "[1.2.3-2)"),
24+
("^1.2", "[1.2-2)"),
25+
("^1", "[1-2)"),
26+
("^0.2.3", "[0.2.3-0.3)"),
27+
("^0.0.3", "[0.0.3-0.0.4)"),
28+
("^0.0", "[0.0-0.1)"),
29+
("^0", "[0-1)"),
30+
# This one seems wrong: `~1.2.3 = [1.2.3, 1.2.4)`
31+
# but ~ is special in Julia from
32+
# https://docs.julialang.org/en/latest/stdlib/Pkg/#Tilde-specifiers-1
33+
("~1.2.3", "[1.2.3-1.2.4]"),
34+
("~1.3.5", "[1.3.5-1.3.6]"),
35+
("~1.2", "[1.2-1.3]"),
36+
("~1", "[1-2]"),
37+
],
38+
)
39+
def test_simple_matches(test_input, expected):
40+
assert repr(semver.create_semver_matcher(test_input)) == expected
41+
42+
43+
@pytest.mark.parametrize(
44+
"test_input, expected",
45+
[
46+
("1.2.3", "^1.2.3"),
47+
("1.2", "^1.2"),
48+
("1", "^1"),
49+
("0.0.3", "^0.0.3"),
50+
("0", "^0"),
51+
],
52+
)
53+
def test_range_matches(test_input, expected):
54+
assert semver.create_semver_matcher(test_input) == semver.create_semver_matcher(
55+
expected
56+
)
57+
58+
59+
@pytest.mark.parametrize(
60+
"test_input, expected",
61+
[
62+
("1.2.3", "1.5.2"),
63+
("1.2.3", "1.2.3"),
64+
("~1.2.3", "1.2.4"),
65+
("~1.2.3", "1.2.3"),
66+
("1.2", "1.2.0"),
67+
("1.2", "1.9.9"),
68+
("0.2.3", "0.2.3"),
69+
("0", "0.0.0"),
70+
("0", "0.99.0"),
71+
("0.0", "0.0.0"),
72+
("0.0", "0.0.99"),
73+
],
74+
)
75+
def test_match_particular_version_expected_true(test_input, expected):
76+
assert semver.create_semver_matcher(test_input).match(
77+
semver.str_to_version(expected)
78+
)
79+
80+
81+
@pytest.mark.parametrize(
82+
"test_input, expected",
83+
[
84+
("1.2.3", "2.0.0"),
85+
("1.2.3", "1.2.2"),
86+
("~1.2.3", "1.3"),
87+
("1.2", "2.0.0"),
88+
("1.2", "1.1.9"),
89+
("0.2.3", "0.3.0"),
90+
("0.2.3", "0.2.2"),
91+
("0", "1.0.0"),
92+
("0.0", "0.1.0"),
93+
],
94+
)
95+
def test_match_particular_version_expected_false(test_input, expected):
7396
assert (
74-
semver.create_semver_matcher("1.2").match(semver.str_to_version("1.1.9"))
75-
== False
76-
)
77-
assert semver.create_semver_matcher("0.2.3").match(semver.str_to_version("0.2.3"))
78-
assert (
79-
semver.create_semver_matcher("0.2.3").match(semver.str_to_version("0.3.0"))
80-
== False
81-
)
82-
assert (
83-
semver.create_semver_matcher("0.2.3").match(semver.str_to_version("0.2.2"))
84-
== False
85-
)
86-
assert semver.create_semver_matcher("0").match(semver.str_to_version("0.0.0"))
87-
assert semver.create_semver_matcher("0").match(semver.str_to_version("0.99.0"))
88-
assert (
89-
semver.create_semver_matcher("0").match(semver.str_to_version("1.0.0")) == False
90-
)
91-
assert semver.create_semver_matcher("0.0").match(semver.str_to_version("0.0.0"))
92-
assert semver.create_semver_matcher("0.0").match(semver.str_to_version("0.0.99"))
93-
assert (
94-
semver.create_semver_matcher("0.0").match(semver.str_to_version("0.1.0"))
97+
semver.create_semver_matcher(test_input).match(semver.str_to_version(expected))
9598
== False
9699
)
97100

@@ -110,6 +113,13 @@ def test_less_than_prefix():
110113
)
111114

112115

116+
@pytest.mark.parametrize("test_input, expected", [("≥1.3.0", ">=1.3.0")])
117+
def test_fancy_unicode(test_input, expected):
118+
assert semver.create_semver_matcher(test_input) == semver.create_semver_matcher(
119+
expected
120+
)
121+
122+
113123
def test_equal_prefix():
114124
assert repr(semver.create_semver_matcher("=1.2.3")) == "==1.2.3"
115125
assert repr(semver.create_semver_matcher("=1.2")) == "==1.2.0"
@@ -125,12 +135,6 @@ def test_equal_prefix():
125135
)
126136

127137

128-
def test_fancy_unicode():
129-
assert semver.create_semver_matcher("≥1.3.0") == semver.create_semver_matcher(
130-
">=1.3.0"
131-
)
132-
133-
134138
def test_largerthan_equal():
135139
assert repr(semver.create_semver_matcher(">= 1.2.3")) == ">= 1.2.3"
136140
assert repr(semver.create_semver_matcher(" >= 1")) == ">= 1.0.0"

0 commit comments

Comments
 (0)