2020from univers .version_range import OpensslVersionRange
2121from univers .version_range import PypiVersionRange
2222from univers .version_range import VersionRange
23+ from univers .version_range import build_range_from_discrete_version_string
24+ from univers .version_range import build_range_from_snyk_advisory_string
2325from univers .version_range import from_gitlab_native
2426from univers .versions import InvalidVersion
2527from univers .versions import NugetVersion
@@ -85,6 +87,11 @@ def test_VersionRange_contains_version_in_between(self):
8587 version_range = VersionRange .from_string (vers )
8688 assert version_range .contains (PypiVersion ("1.5" ))
8789
90+ def test_VersionRange_contains_filterd_constraint_edge_case (self ):
91+ vers = "vers:pypi/<=1.3.0|3.0.0"
92+ version_range = VersionRange .from_string (vers )
93+ assert version_range .contains (PypiVersion ("1.0.0" ))
94+
8895 def test_VersionRange_from_string_pypi (self ):
8996 vers = "vers:pypi/0.0.2|0.0.6|0.0.0|0.0.1|0.0.4|0.0.5|0.0.3"
9097 version_range = VersionRange .from_string (vers )
@@ -458,8 +465,40 @@ def test_mattermost_version_range():
458465 ) == VersionRange .from_string ("vers:mattermost/>=5.0" )
459466
460467
468+ def test_build_range_from_snyk_advisory_string ():
469+ expression = [">=4.0.0, <4.0.10" , ">7.0.0, <8.0.1" ]
470+ vr = build_range_from_snyk_advisory_string ("pypi" , expression )
471+ expected = "vers:pypi/>=4.0.0|<4.0.10|>7.0.0|<8.0.1"
472+
473+ assert str (vr ) == expected
474+
475+
476+ def test_build_range_from_snyk_advisory_string_bracket ():
477+ expression = ["[3.0.0,3.1.25)" , "[1.0.0,1.0.5)" ]
478+ vr = build_range_from_snyk_advisory_string ("nuget" , expression )
479+ expected = "vers:nuget/>=1.0.0|<1.0.5|>=3.0.0|<3.1.25"
480+
481+ assert str (vr ) == expected
482+
483+
484+ def test_build_range_from_snyk_advisory_string_spaced ():
485+ expression = [">=4.1.0 <4.4.1" , ">2.1.0 <=3.2.7" ]
486+ vr = build_range_from_snyk_advisory_string ("composer" , expression )
487+ expected = "vers:composer/>2.1.0|<=3.2.7|>=4.1.0|<4.4.1"
488+
489+ assert str (vr ) == expected
490+
491+
492+ def test_build_range_from_discrete_version_string ():
493+ expression = ["4.1.0" , " 4.4.1" , "2.1.0 " , " 3.2.7 " ]
494+ vr = build_range_from_discrete_version_string ("pypi" , expression )
495+ expected = "vers:pypi/2.1.0|3.2.7|4.1.0|4.4.1"
496+
497+ assert str (vr ) == expected
498+
499+
461500def test_version_range_normalize_case1 ():
462- known_versions = ["3.0.0" , "1.0.0" , "2.0.0" , "1.3.0" , "1.1.0" , "1.2.0" ]
501+ known_versions = ["4.0.0" , " 3.0.0" , "1.0.0" , "2.0.0" , "1.3.0" , "1.1.0" , "1.2.0" ]
463502
464503 vr = VersionRange .from_string ("vers:pypi/<=1.1.0|>=1.2.0|<=1.3.0|3.0.0" )
465504 nvr = vr .normalize (known_versions = known_versions )
@@ -468,7 +507,7 @@ def test_version_range_normalize_case1():
468507
469508
470509def test_version_range_normalize_case2 ():
471- known_versions = ["3.0.0" , "1.0.0" , "2.0.0" , "1.3.0" , "1.1.0" , "1.2.0" ]
510+ known_versions = ["4.0.0" , " 3.0.0" , "1.0.0" , "2.0.0" , "1.3.0" , "1.1.0" , "1.2.0" ]
472511
473512 vr = VersionRange .from_string ("vers:pypi/<=1.3.0|3.0.0" )
474513 nvr = vr .normalize (known_versions = known_versions )
@@ -477,7 +516,7 @@ def test_version_range_normalize_case2():
477516
478517
479518def test_version_range_normalize_case3 ():
480- known_versions = ["3.0.0" , "1.0.0" , "2.0.0" , "1.3.0" , "1.1.0" , "1.2.0" ]
519+ known_versions = ["4.0.0" , " 3.0.0" , "1.0.0" , "2.0.0" , "1.3.0" , "1.1.0" , "1.2.0" ]
481520
482521 vr = VersionRange .from_string ("vers:pypi/<2.0.0|3.0.0" )
483522 nvr = vr .normalize (known_versions = known_versions )
0 commit comments