77values = [
88 # https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html
99 # caret
10- ["^1.2.3" , [[[ "=" , "1.2.3" ]]] , ["1.2.3" ], ["1.2.4" ]],
10+ ["^1.2.3" , [[]] , ["1.2.3" ], []],
1111 # tilde
12- ["~1.2.3" , [[[">=" , "1.2.3" ], ["<" , "1.3.0" ]]], ["1.2.4" ], ["2.0.1" ]],
13- ["~1.2" , [[[">=" , "1.2.0" ], ["<" , "1.3.0" ]]], ["1.2.5" ], ["1.3.1" ]],
14- [
15- "~1" ,
16- [[[">=" , "1.0.0" ], ["<" , "2.0.0" ]]],
17- ["1.3.0" , "1.8.1" ],
18- ["2.1.0" , "2.2" ],
19- ], # tilde increment the major
12+ ["~1.2.3" , [[">=" , "1.2.3" ], ["<" , "1.3.0" ]], ["1.2.4" ], ["2.0.1" ]],
13+ ["~1.2" , [[">=" , "1.2.0" ], ["<" , "1.3.0" ]], ["1.2.5" ], ["1.3.1" ]],
14+ ["~1" , [[">=" , "1.0.0" ], ["<" , "2.0.0" ]], ["1.3.0" , "1.8.1" ], ["2.1.0" , "2.2" ]], # tilde increment the major
2015 # wildcard
21- ["*" , [[[">=" , "0.0.0" ]]], ["1.0.0" , "2.0.0" ], []],
22- # ["1.*", [[[">=", "1.0.0"]]], ["1.0.0"], ["2", "1.0.1"]],
23- # ["1.2.*", [[[">=", "1.2.0"], ["<", "1.3.0"]]], ["1.2", "1.2.1"], ["2.1.0", "2.2"]],
16+ ["*" , [[">=" , "0.0.0" ]], ["1.0.0" , "2.0.0" ], []],
17+ ["1.*" , [], ["1.0.0" ], ["2" ]],
18+ ["1.2.*" , [[">=" , "1.2.0" ], ["<" , "1.3.0" ]], ["1.2" , "1.2.1" ], ["2.1.0" , "2.2" ]],
19+
2420 # https://github.com/dtolnay/semver/blob/master/tests/test_version_req.rs :
21+
22+ # test_basic
23+ # ["^1.0.0", [[]], ["1.0.0", "1.1.0", "1.0.1"], ["0.9.9", "0.10.0", "0.1.0", "1.0.0-pre", "1.0.1-pre"]],
24+
25+ # test_exact
2526 ["=1.0.0" , [["=" , "1.0.0" ]], ["1.0.0" ], ["1.0.1" , "0.9.9" , "0.10.0" , "0.1.0" , "1.0.0-pre" ]],
2627 ["=0.9.0" , [["=" , "0.9.0" ]], ["0.9.0" ], ["0.9.1" , "1.9.0" , "0.0.9" , "0.9.0-pre" ]],
2728 ["=0.0.2" , [["=" , "0.0.2" ]], ["0.0.2" ], ["0.0.1" , "0.0.3" , "0.0.2-pre" ]],
28- [
29- "=0.1.0-beta2.a" ,
30- [["=" , "0.1.0-beta2.a" ]],
31- ["0.1.0-beta2.a" ],
32- ["0.9.1" , "0.1.0" , "0.1.1-beta2.a" , "0.1.0-beta2" ],
33- ],
29+ ["=0.1.0-beta2.a" , [["=" , "0.1.0-beta2.a" ]], ["0.1.0-beta2.a" ], ["0.9.1" , "0.1.0" , "0.1.1-beta2.a" , "0.1.0-beta2" ]],
30+ # https://github.com/dtolnay/semver/blob/master/tests/test_version_req.rs#L73
3431 # ["=0.1.0+meta", [["=", "0.1.0+meta"]], ["0.1.0", "0.1.0+meta", "0.1.0+any"], []],
35- # ["<1.0.0", [["<", "1.0.0"]], ["0.1.0", "0.0.1"], ["1.0.0", "1.0.0-beta", "1.0.1", "0.9.9-alpha"]],
36- # [
37- # "<= 2.1.0-alpha2",
38- # [["<", "2.1.0-alpha2"], ["=", "2.1.0-alpha2"]],
39- # ["2.1.0-alpha2", "2.1.0-alpha1", "2.0.0", "1.0.0"],
40- # ["2.1.0", "2.2.0-alpha1", "2.0.0-alpha2", "1.0.0-alpha2"],
41- # ],
42- # [">1.0.0-alpha, <1.0.0", [[[">", "2.1.0-alpha2"], ["<", "1.0.0"]]], ["1.0.0-beta"], []],
43- # [">1.0.0-alpha, <1.0", [[[">", "1.0.0-alpha"], ["<", "1.0"]]], ["1.0.0-beta"], []],
44- # [">1.0.0-alpha, <1", [[[">", "1.0.0-alpha"], ["<", "1"]]], ["1.0.0-beta"], []],
45- # [
46- # ">=0.5.1-alpha3, <0.6",
47- # [[[">", "0.5.1-alpha3"], ["=", "0.5.1-alpha3"], ["<", "0.6"]]],
48- # ["0.5.1-alpha3", "0.5.1-alpha4", "0.5.1-beta", "0.5.1", "0.5.5"],
49- # ["0.5.1-alpha1", "0.5.2-alpha3", "0.5.5-pre", "0.5.0-pre"],
50- # ],
51- ["~1" , [], ["1.0.0" , "1.0.1" , "1.1.1" ], ["0.9.1" , "2.9.0" , "0.0.9" ]],
52- ["~1.2" , [], ["1.2.0" , "1.2.1" ], ["1.1.1" , "1.3.0" , "0.0.9" ]],
53- ["~1.2.2" , [], ["1.2.2" , "1.2.4" ], ["1.2.1" , "1.9.0" , "1.0.9" , "2.0.1" , "0.1.3" ]],
54- # [
55- # "~1.2.3-beta.2",
56- # [],
57- # ["1.2.3", "1.2.4", "1.2.3-beta.2", "1.2.3-beta.4"],
58- # ["1.3.3", "1.1.4", "1.2.3-beta.1", "1.2.4-beta.2"],
59- # ],
32+
33+ # test_greater_than
34+ # [">= 1.0.0", [[]], ["1.0.0", "2.0.0"], ["0.1.0", "0.0.1", "1.0.0-pre", "2.0.0-pre"]],
35+ # [">= 2.1.0-alpha2", [[]], ["2.1.0-alpha2", "2.1.0-alpha3", "2.1.0", "3.0.0"], ["2.0.0", "2.1.0-alpha1", "2.0.0-alpha2", "3.0.0-alpha2"]],
36+
37+ # test_less_than
38+ # ["<1.0.0", [[]], ["0.1.0", "0.0.1"], ["1.0.0", "1.0.0-beta", "1.0.1", "0.9.9-alpha"]],
39+ # ["<= 2.1.0-alpha2", [[]], ["2.1.0-alpha2", "2.1.0-alpha1", "2.0.0", "1.0.0"], ["2.1.0", "2.2.0-alpha1", "2.0.0-alpha2", "1.0.0-alpha2"]],
40+ # [">1.0.0-alpha, <1.0.0", [[">", "2.1.0-alpha2"], ["<", "1.0.0"]], ["1.0.0-beta"], []],
41+ # [">1.0.0-alpha, <1.0", [[">", "1.0.0-alpha"], ["<", "1.0"]]], ["1.0.0-beta"], []],
42+ [">1.0.0-alpha, <1" , [[">" , "1.0.0-alpha" ], ["<" , "1" ]], ["1.0.0-beta" ], []],
43+
44+ # test_multiple
45+ ["> 0.0.9, <= 2.5.3" , [[]], ["0.0.10" , "1.0.0" , "2.5.3" ], ["0.0.8" , "2.5.4" ]],
46+ # ["^0.3.0, ^0.4.0", [[]], [], ["0.0.8", "0.3.0", "0.4.0"]],
47+ # ["<=0.2.0, >=0.5.0", [[]], [], ["0.0.8", "0.3.0", "0.5.1"]],
48+ # ["^0.1.0, ^0.1.4, ^0.1.6", [[]], ["0.1.6", "0.1.9"], ["0.1.0", "0.1.4", "0.2.0"]],
49+ # [">=0.5.1-alpha3, <0.6", [[[">", "0.5.1-alpha3"], ["=", "0.5.1-alpha3"], ["<", "0.6"]]], ["0.5.1-alpha3", "0.5.1-alpha4", "0.5.1-beta", "0.5.1", "0.5.5"], ["0.5.1-alpha1", "0.5.2-alpha3", "0.5.5-pre", "0.5.0-pre"]],
50+
51+ # test_tilde
52+ ["~1" , [[]], ["1.0.0" , "1.0.1" , "1.1.1" ], ["0.9.1" , "2.9.0" , "0.0.9" ]],
53+ ["~1.2" , [[]], ["1.2.0" , "1.2.1" ], ["1.1.1" , "1.3.0" , "0.0.9" ]],
54+ ["~1.2.2" , [[]], ["1.2.2" , "1.2.4" ], ["1.2.1" , "1.9.0" , "1.0.9" , "2.0.1" , "0.1.3" ]],
55+ # ["~1.2.3-beta.2", [[]], ["1.2.3", "1.2.4", "1.2.3-beta.2", "1.2.3-beta.4"],
56+ # ["1.3.3", "1.1.4", "1.2.3-beta.1", "1.2.4-beta.2"]],
57+
58+ # test_caret
59+ # ["^1", [[]], ["1.1.2", "1.1.0", "1.2.1", "1.0.1"],
60+ # ["0.9.1", "2.9.0", "0.1.4", "1.0.0-beta1", "0.1.0-alpha", "1.0.1-pre"]],
61+
62+ ["^1.1" , [[]], ["1.1.2" , "1.1.0" , "1.2.1" ],
63+ ["0.9.1" , "2.9.0" , "1.0.1" , "0.1.4" ]],
64+
65+ # ["^1.1.2", [[]], ["1.1.2", "1.1.4", "1.2.1"],
66+ # ["0.9.1", "2.9.0", "1.1.1", "0.0.1", "1.1.2-alpha1", "1.1.3-alpha1", "2.9.0-alpha1"]],
67+
68+ # ["^0.1.2", [[]], ["0.1.2", "0.1.4"],
69+ # ["0.9.1", "2.9.0", "1.1.1", "0.0.1", "0.1.2-beta", "0.1.3-alpha", "0.2.0-pre"]],
70+
71+ # ["^0.5.1-alpha3", [[]], ["0.5.1-alpha3", "0.5.1-alpha4", "0.5.1-beta", "0.5.1", "0.5.5", ],
72+ # ["0.5.1-alpha1", "0.5.2-alpha3", "0.5.5-pre", "0.5.0-pre", "0.6.0"]],
73+
74+ ["^0.0.2" , [[]], ["0.0.2" ],
75+ ["0.9.1" , "2.9.0" , "1.1.1" , "0.0.1" , "0.1.4" ]],
76+
77+ # ["^0.0", [[]], ["0.0.2", "0.0.0"],
78+ # ["0.9.1", "2.9.0", "1.1.1", "0.0.1", "0.1.4"]],
79+
80+ ["^0" , [[]], ["0.9.1" , "0.0.2" , "0.0.0" ],
81+ ["2.9.0" , "1.1.1" ]],
82+
83+ # ["^1.4.2-beta.5", [[]], ["1.4.2", "1.4.3", "1.4.2-beta.5", "1.4.2-beta.6", "1.4.2-c"],
84+ # ["0.9.9", "2.0.0", "1.4.2-alpha", "1.4.2-beta.4", "1.4.3-beta.5"]],
85+
86+ # test_wildcard
87+ # https://github.com/dtolnay/semver/blob/master/tests/test_version_req.rs#L272
88+ # ["*", [[]], ["0.9.1", "2.9.0", "0.0.9", "1.0.1", "1.1.1"],
89+ # ["1.0.0-pre"]],
90+
91+ # ["1.*", [[]], ["1.2.0", "1.2.1", "1.1.1", "1.3.0"],
92+ # ["0.0.9", "1.2.0-pre"]],
93+
94+ # ["1.2.*", [[]], ["1.2.0", "1.2.2", "1.2.4"],
95+ # ["1.9.0", "1.0.9", "2.0.1", "0.1.3", "1.2.2-pre"]],
96+
97+ # test_pre
98+ # ["=2.1.1-really.0", [[]], ["2.1.1-really.0"], []]
99+
100+ # test_cargo3202
101+ ["0.*.*" , [[]], ["0.5.0" ], []]
102+
60103]
61104
105+
62106error_list = [
63107 "> 0.1.0," ,
64108 "> 0.3.0, ," ,
65109 # "1.2.3 - 2.3.4",
66110 # "> 0.0.9 <= 2.5.3",
67111 # "=1.2.3 || =2.3.4",
68112 # "1.1 || =1.2.3",
69- # "6.* || 8.* || >= 10.*",
113+ "6.* || 8.* || >= 10.*" ,
70114 # ">= >= 0.0.2",
71115 # ">== 0.0.2",
72116 # "a.0.0",
73117 # "1.0.0-",
74118 # ">=",
75- # "*.1",
76- # "1.*.1",
77- # ">=1.*.1",
78- # "*, 0.20.0-any",
79- # "0.20.0-any, *" "0.20.0-any, *, 1.0",
119+ "*.1" ,
120+ "1.*.1" ,
121+ ">=1.*.1" ,
122+ "*, 0.20.0-any" ,
123+ "0.20.0-any, *" "0.20.0-any, *, 1.0" ,
80124]
81125
82126
@@ -93,6 +137,6 @@ def test_range(version_range, conditions, versions_in, versions_out):
93137
94138
95139def test_error ():
96- for i in error_list :
140+ for version_range in error_list :
97141 with pytest .raises (InvalidVersionRange ):
98- CargoVersionRange .from_native (i )
142+ CargoVersionRange .from_native (version_range )
0 commit comments