|
13 | 13 | from univers.version_range import PypiVersionRange |
14 | 14 | from univers.version_range import VersionRange |
15 | 15 | from univers.version_range import RANGE_CLASS_BY_SCHEMES |
| 16 | +from univers.version_range import NpmVersionRange |
16 | 17 | from univers.versions import PypiVersion |
17 | 18 | from univers.versions import RubygemsVersion |
| 19 | +from univers.versions import SemverVersion |
18 | 20 |
|
19 | 21 |
|
20 | 22 | class TestVersionRange(TestCase): |
@@ -209,9 +211,32 @@ def test_PypiVersionRange_raises_ivr_for_invalid_ranges(self): |
209 | 211 | except InvalidVersionRange as ivre: |
210 | 212 | assert str(ivre).startswith("Unsupported character") |
211 | 213 |
|
| 214 | + def test_NpmVersionRange_from_native_with_compatible_with_version_operator(self): |
| 215 | + npm_range = "^1.2.9" |
| 216 | + expected = NpmVersionRange( |
| 217 | + constraints=( |
| 218 | + VersionConstraint(comparator=">=", version=SemverVersion(string="1.2.9")), |
| 219 | + VersionConstraint(comparator="<", version=SemverVersion(string="2.0.0")), |
| 220 | + ) |
| 221 | + ) |
| 222 | + version_range = NpmVersionRange.from_native(npm_range) |
| 223 | + assert version_range == expected |
| 224 | + |
| 225 | + def test_NpmVersionRange_from_native_with_approximately_equal_to_operator(self): |
| 226 | + npm_range = "~3.8.2" |
| 227 | + expected = NpmVersionRange( |
| 228 | + constraints=( |
| 229 | + VersionConstraint(comparator=">=", version=SemverVersion(string="3.8.2")), |
| 230 | + VersionConstraint(comparator="<", version=SemverVersion(string="3.9.0")), |
| 231 | + ) |
| 232 | + ) |
| 233 | + version_range = NpmVersionRange.from_native(npm_range) |
| 234 | + assert version_range == expected |
| 235 | + |
212 | 236 |
|
213 | 237 | VERSION_RANGE_TESTS_BY_SCHEME = { |
214 | 238 | "nginx": ["0.8.40+", "0.7.52-0.8.39", "0.9.10", "1.5.0+, 1.4.1+"], |
| 239 | + "npm": ["^1.2.9", "~3.8.2", "5.0.0 - 7.2.3", "2.1 || 2.6", "1.1.2 1.2.2", "<=2.1 >=1.1"], |
215 | 240 | } |
216 | 241 |
|
217 | 242 |
|
|
0 commit comments