1+ import pytest
12from 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
910def 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+
113123def 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-
134138def 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