|
5 | 5 | # Visit https://aboutcode.org and https://github.com/nexB/univers for support and download. |
6 | 6 |
|
7 | 7 | from unittest import TestCase |
| 8 | +import pytest |
8 | 9 |
|
9 | 10 | from univers.version_constraint import VersionConstraint |
10 | 11 | from univers.version_range import GemVersionRange |
11 | 12 | from univers.version_range import PypiVersionRange |
12 | 13 | from univers.version_range import VersionRange |
| 14 | +from univers.version_range import RANGE_CLASS_BY_SCHEMES |
13 | 15 | from univers.versions import PypiVersion |
14 | 16 | from univers.versions import RubygemsVersion |
15 | 17 |
|
@@ -189,3 +191,18 @@ def test_VersionRange_contains_works_for_star_range(self): |
189 | 191 | from univers.versions import SemverVersion |
190 | 192 |
|
191 | 193 | SemverVersion("1.0.0") in VersionRange.from_string("vers:nginx/*") |
| 194 | + |
| 195 | +@pytest.mark.parametrize("scheme, range_class", RANGE_CLASS_BY_SCHEMES.items()) |
| 196 | +class TestVersionRangeImplementations: |
| 197 | + VERSION_RANGES_BY_SCHEMES = { |
| 198 | + "nginx": ["0.8.40+", "0.7.52-0.8.39", "0.9.10", "1.5.0+, 1.4.1+"], |
| 199 | + } |
| 200 | + |
| 201 | + def test_from_native_and_from_string_equality(self, scheme, range_class): |
| 202 | + if scheme not in self.VERSION_RANGES_BY_SCHEMES: |
| 203 | + pytest.skip(f"No {scheme} in VERSION_RANGES_BY_SCHEMES") |
| 204 | + |
| 205 | + for rng in self.VERSION_RANGES_BY_SCHEMES.get(scheme, []): |
| 206 | + rng_from_native = range_class.from_native(rng) |
| 207 | + rng_from_string = range_class.from_string(rng_from_native.to_string()) |
| 208 | + assert rng_from_native == rng_from_string |
0 commit comments