Skip to content

Commit 73ff686

Browse files
authored
Merge pull request #34 from keshav-space/main
Fix for NpmVersionRange.from_native and README
2 parents 4b83fb4 + 5fc4c36 commit 73ff686

3 files changed

Lines changed: 30 additions & 5 deletions

File tree

README.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ Compare two native Python versions:
139139

140140
.. code:: python
141141
142-
from univers.version import PypiVersion
142+
from univers.versions import PypiVersion
143143
assert PypiVersion("1.2.3") < PypiVersion("1.2.4")
144144
145145
@@ -156,7 +156,7 @@ Test if a version is within or outside a version range:
156156

157157
.. code:: python
158158
159-
from univers.version import PypiVersion
159+
from univers.versions import PypiVersion
160160
from univers.version_range import VersionRange
161161
162162
range = VersionRange.from_string("vers:pypi/>=1.2.4")
@@ -170,7 +170,7 @@ Development
170170

171171
Run these commands, starting from a git clone of https://github.com/nexB/univers ::
172172

173-
$ configure --dev
173+
$ ./configure --dev
174174
$ source venv/bin/active
175175
$ pytest -vvs
176176

src/univers/version_range.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -234,10 +234,10 @@ def from_native(cls, string):
234234
anyof_constraints = []
235235
if isinstance(clause, AnyOf):
236236
for allof_clause in clause.clauses:
237-
anyof_constraints.append(get_allof_constraints(cls, allof_clause))
237+
anyof_constraints.extend(get_allof_constraints(cls, allof_clause))
238238
elif isinstance(clause, AllOf):
239239
alloc = get_allof_constraints(cls, clause)
240-
anyof_constraints.append(alloc)
240+
anyof_constraints.extend(alloc)
241241
else:
242242
raise ValueError(f"Unknown clause type: {spec!r}")
243243

tests/test_version_range.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@
1313
from univers.version_range import PypiVersionRange
1414
from univers.version_range import VersionRange
1515
from univers.version_range import RANGE_CLASS_BY_SCHEMES
16+
from univers.version_range import NpmVersionRange
1617
from univers.versions import PypiVersion
1718
from univers.versions import RubygemsVersion
19+
from univers.versions import SemverVersion
1820

1921

2022
class TestVersionRange(TestCase):
@@ -209,9 +211,32 @@ def test_PypiVersionRange_raises_ivr_for_invalid_ranges(self):
209211
except InvalidVersionRange as ivre:
210212
assert str(ivre).startswith("Unsupported character")
211213

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+
212236

213237
VERSION_RANGE_TESTS_BY_SCHEME = {
214238
"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"],
215240
}
216241

217242

0 commit comments

Comments
 (0)