66import pytest
77
88from univers .utils import cmp
9- from univers . versions import SemverVersion as SemanticVersion
9+ from univers import nuget
1010
1111
1212# A normal version number MUST take the form X.Y.Z
1313@pytest .mark .parametrize (
1414 ["version" , "expected" ],
1515 [
16- ("1" , False ),
17- ("1.2" , False ),
18- ("1.2.3" , True ),
19- ("10.2.3" , True ),
20- ("13234.223.32222" , True ),
21- ("1.2.3.4" , False ),
22- ("1.2. 3" , False ),
23- ("1. 2.3" , False ),
24- ("X.2.3" , False ),
25- ("1.2.Z" , False ),
26- ("X.Y.Z" , False ),
16+ ("1" , "1.0.0" ),
17+ ("1.2" , "1.2.0" ),
18+ ("1.2.3" , "1.2.3" ),
19+ ("10.2.3" , "10.2.3" ),
20+ ("13234.223.32222" , "13234.223.32222" ),
21+ ("1.2.3.4" , "1.2.3.4" ),
2722 ],
2823)
2924def test_SemVerVersionMustBe3Parts (version , expected ):
30- semVer = None
31- valid = SemanticVersion (version , semVer )
32- assert valid == expected
25+ version = nuget .Version .from_string (version )
26+ assert str (version ) == expected
27+
28+
29+ @pytest .mark .parametrize (
30+ "version" ,
31+ [
32+ "1.2. 3" ,
33+ "1. 2.3" ,
34+ "X.2.3" ,
35+ "1.2.Z" ,
36+ "X.Y.Z" ,
37+ ],
38+ )
39+ def test_SemVerVersionMustBeValid (version ):
40+ with pytest .raises (Exception ):
41+ nuget .Version .from_string (version )
3342
3443
3544# X, Y, and Z are non-negative integers
3645@pytest .mark .parametrize (
37- [ "versionString" ] ,
46+ "version" ,
3847 [
39- ( "-1.2.3" ,) ,
40- ( "1.-2.3" ,) ,
41- ( "1.2.-3" ,) ,
48+ "-1.2.3" ,
49+ "1.-2.3" ,
50+ "1.2.-3" ,
4251 ],
4352)
44- def test_SemVerVersionNegativeNumbers (versionString ):
45- semVer = None
46- valid = SemanticVersion (versionString , semVer )
47- assert not valid
53+ def test_SemVerVersionNegativeNumbers (version ):
54+ with pytest .raises (Exception ):
55+ nuget .Version .from_string (version )
4856
4957
50- # X, Y, and Z MUST NOT contain leading zeroes
58+ # X, Y, and Z leading zeroes are normalized
5159@pytest .mark .parametrize (
52- "versionString" ,
60+ ( "version" , "expected" ) ,
5361 [
54- ("01.2.3" ,),
55- ("1.02.3" ,),
56- ("1.2.03" ,),
57- ("00.2.3" ,),
58- ("1.2.0030" ,),
62+ ("01.2.3" , "1.2.3" ),
63+ ("1.02.3" , "1.2.3" ),
64+ ("1.2.03" , "1.2.3" ),
65+ ("00.2.3" , "0.2.3" ),
66+ ("1.2.0030" , "1.2.30" ),
5967 ],
6068)
61- def test_SemVerVersionLeadingZeros (versionString ):
62- semVer = None
63- valid = SemanticVersion (versionString , semVer )
64- assert not valid
69+ def test_SemVerVersionAcceptsLeadingZeros (version , expected ):
70+ version = nuget .Version .from_string (version )
71+ assert str (version ) == expected
6572
6673
6774# Major version zero (0.y.z) is for initial development
6875@pytest .mark .parametrize (
69- "versionString " ,
76+ "version " ,
7077 [
71- ( "0.1.2" ,) ,
72- ( "1.0.0" ,) ,
73- ( "0.0.0" ,) ,
78+ "0.1.2" ,
79+ "1.0.0" ,
80+ "0.0.0" ,
7481 ],
7582)
76- def test_SemVerVersionValidZeros (versionString ):
77- semVer = None
78- valid = SemanticVersion (versionString , semVer )
79- assert valid
83+ def test_SemVerVersionValidZeros (version ):
84+ valid = nuget .Version .from_string (version )
85+ assert str (valid ) == version
8086
8187
8288# valid release labels
8389@pytest .mark .parametrize (
84- "versionString" ,
90+ ( "version" , "prerelease" ) ,
8591 [
86- ("0.1.2-Alpha" ,),
87- ("0.1.2-Alpha.2.34.5.453.345.345.345.345.A.B.bbbbbbb.Csdfdfdf" ,),
88- ("0.1.2-Alpha-2-5Bdd" ,),
89- ("0.1.2--" ,),
90- ("0.1.2--B-C-" ,),
91- ("0.1.2--B2.-.C.-A0-" ,),
92- ("0.1.2+NoReleaseLabel" ,),
92+ ("0.1.2-Alpha" , "Alpha" ),
93+ (
94+ "0.1.2-Alpha.2.34.5.453.345.345.345.345.A.B.bbbbbbb.Csdfdfdf" ,
95+ "Alpha.2.34.5.453.345.345.345.345.A.B.bbbbbbb.Csdfdfdf" ,
96+ ),
97+ ("0.1.2-Alpha-2-5Bdd" , "Alpha-2-5Bdd" ),
98+ ("0.1.2--" , "-" ),
99+ ("0.1.2--B-C-" , "-B-C-" ),
100+ ("0.1.2--B2.-.C.-A0-" , "-B2.-.C.-A0-" ),
101+ ("0.1.2+NoReleaseLabel" , "" ),
93102 ],
94103)
95- def test_SemVerVersionValidReleaseLabels (versionString ):
96- semVer = None
97- valid = SemanticVersion (versionString , semVer )
98- assert valid
104+ def test_SemVerVersionValidReleaseLabels (version , prerelease ):
105+ version = nuget .Version .from_string (version )
106+ assert version .prerelease == prerelease .lower ()
99107
100108
101109# Release label identifiers MUST NOT be empty
@@ -109,9 +117,8 @@ def test_SemVerVersionValidReleaseLabels(versionString):
109117 ],
110118)
111119def test_SemVerVersionInvalidReleaseId (versionString ):
112- semVer = None
113- valid = SemanticVersion (versionString , semVer )
114- assert not valid
120+ with pytest .raises (Exception ):
121+ nuget .Version .from_string (versionString )
115122
116123
117124# Identifiers MUST comprise only ASCII alphanumerics and hyphen [0-9A-Za-z-]
@@ -125,9 +132,8 @@ def test_SemVerVersionInvalidReleaseId(versionString):
125132 ],
126133)
127134def test_SemVerVersionInvalidReleaseLabelChars (versionString ):
128- semVer = None
129- valid = SemanticVersion (versionString , semVer )
130- assert not valid
135+ with pytest .raises (Exception ):
136+ nuget .Version .from_string (versionString )
131137
132138
133139# Numeric identifiers MUST NOT include leading zeroes
@@ -141,9 +147,8 @@ def test_SemVerVersionInvalidReleaseLabelChars(versionString):
141147 ],
142148)
143149def test_SemVerVersionReleaseLabelZeros (versionString ):
144- semVer = None
145- valid = SemanticVersion (versionString , semVer )
146- assert not valid
150+ with pytest .raises (Exception ):
151+ nuget .Version .from_string (versionString )
147152
148153
149154# Numeric identifiers MUST NOT include leading zeroes
@@ -157,8 +162,7 @@ def test_SemVerVersionReleaseLabelZeros(versionString):
157162 ],
158163)
159164def test_SemVerVersionReleaseLabelValidZeros (versionString ):
160- semVer = None
161- valid = SemanticVersion (versionString , semVer )
165+ valid = nuget .Version .from_string (versionString )
162166 assert valid
163167
164168
@@ -177,8 +181,7 @@ def test_SemVerVersionReleaseLabelValidZeros(versionString):
177181 ],
178182)
179183def test_SemVerVersionMetadataValidChars (versionString ):
180- semVer = None
181- valid = SemanticVersion (versionString , semVer )
184+ valid = nuget .Version .from_string (versionString )
182185 assert valid
183186
184187
@@ -192,9 +195,8 @@ def test_SemVerVersionMetadataValidChars(versionString):
192195 ],
193196)
194197def test_SemVerVersionMetadataInvalidChars (versionString ):
195- semVer = None
196- valid = SemanticVersion (versionString , semVer )
197- assert not valid
198+ with pytest .raises (Exception ):
199+ nuget .Version .from_string (versionString )
198200
199201
200202# Identifiers MUST NOT be empty
@@ -207,9 +209,8 @@ def test_SemVerVersionMetadataInvalidChars(versionString):
207209 ],
208210)
209211def test_SemVerVersionMetadataNonEmptyParts (versionString ):
210- semVer = None
211- valid = SemanticVersion (versionString , semVer )
212- assert not valid
212+ with pytest .raises (Exception ):
213+ nuget .Version .from_string (versionString )
213214
214215
215216# Leading zeros are fine for metadata
@@ -223,8 +224,7 @@ def test_SemVerVersionMetadataNonEmptyParts(versionString):
223224 ],
224225)
225226def test_SemVerVersionMetadataLeadingZeros (versionString ):
226- semVer = None
227- valid = SemanticVersion (versionString , semVer )
227+ valid = nuget .Version .from_string (versionString )
228228 assert valid
229229
230230
@@ -236,8 +236,8 @@ def test_SemVerVersionMetadataLeadingZeros(versionString):
236236 ],
237237)
238238def test_SemVerVersionMetadataOrder (versionString ):
239- semver = SemanticVersion (versionString )
240- assert not semver .IsPrerelease
239+ semver = nuget . Version . from_string (versionString )
240+ assert not semver .prerelease
241241
242242
243243# Precedence is determined by the first difference when comparing each
@@ -252,8 +252,8 @@ def test_SemVerVersionMetadataOrder(versionString):
252252 ],
253253)
254254def test_SemVerSortVersion (lower , higher ):
255- lowerSemVer = SemanticVersion (lower )
256- higherSemVer = SemanticVersion (higher )
255+ lowerSemVer = nuget . Version . from_string (lower )
256+ higherSemVer = nuget . Version . from_string (higher )
257257 assert cmp (lowerSemVer , higherSemVer ) < 0
258258
259259
@@ -265,8 +265,8 @@ def test_SemVerSortVersion(lower, higher):
265265 ],
266266)
267267def test_SemVerSortRelease (lower , higher ):
268- lowerSemVer = SemanticVersion (lower )
269- higherSemVer = SemanticVersion (higher )
268+ lowerSemVer = nuget . Version . from_string (lower )
269+ higherSemVer = nuget . Version . from_string (higher )
270270 assert cmp (lowerSemVer , higherSemVer ) < 0
271271
272272
@@ -279,8 +279,8 @@ def test_SemVerSortRelease(lower, higher):
279279 ],
280280)
281281def test_SemVerSortReleaseNumeric (lower , higher ):
282- lowerSemVer = SemanticVersion (lower )
283- higherSemVer = SemanticVersion (higher )
282+ lowerSemVer = nuget . Version . from_string (lower )
283+ higherSemVer = nuget . Version . from_string (higher )
284284 assert cmp (lowerSemVer , higherSemVer ) < 0
285285
286286
@@ -293,8 +293,8 @@ def test_SemVerSortReleaseNumeric(lower, higher):
293293 ],
294294)
295295def test_SemVerSortReleaseAlpha (lower , higher ):
296- lowerSemVer = SemanticVersion (lower )
297- higherSemVer = SemanticVersion (higher )
296+ lowerSemVer = nuget . Version . from_string (lower )
297+ higherSemVer = nuget . Version . from_string (higher )
298298 assert cmp (lowerSemVer , higherSemVer ) < 0
299299
300300
@@ -307,8 +307,8 @@ def test_SemVerSortReleaseAlpha(lower, higher):
307307 ],
308308)
309309def test_SemVerSortNumericAlpha (lower , higher ):
310- lowerSemVer = SemanticVersion (lower )
311- higherSemVer = SemanticVersion (higher )
310+ lowerSemVer = nuget . Version . from_string (lower )
311+ higherSemVer = nuget . Version . from_string (higher )
312312 assert cmp (lowerSemVer , higherSemVer ) < 0
313313
314314
@@ -321,8 +321,8 @@ def test_SemVerSortNumericAlpha(lower, higher):
321321 ],
322322)
323323def test_SemVerSortReleaseLabelCount (lower , higher ):
324- lowerSemVer = SemanticVersion (lower )
325- higherSemVer = SemanticVersion (higher )
324+ lowerSemVer = nuget . Version . from_string (lower )
325+ higherSemVer = nuget . Version . from_string (higher )
326326 assert cmp (lowerSemVer , higherSemVer ) < 0
327327
328328
@@ -335,6 +335,6 @@ def test_SemVerSortReleaseLabelCount(lower, higher):
335335 ],
336336)
337337def test_SemVerSortIgnoreReleaseCasing (a , b ):
338- semVerA = SemanticVersion (a )
339- semVerB = SemanticVersion (b )
338+ semVerA = nuget . Version . from_string (a )
339+ semVerB = nuget . Version . from_string (b )
340340 assert semVerA == semVerB
0 commit comments