Skip to content

Commit f6c18bb

Browse files
committed
fix(spec/npm): build metadata ranges
1 parent 22f1953 commit f6c18bb

File tree

4 files changed

+20
-14
lines changed

4 files changed

+20
-14
lines changed

spec/internal/clauses.bzl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,7 @@ def _range_new(
382382
version_scheme = Version.SCHEME.SEMVER,
383383
prerelease_policy = None,
384384
build_policy = None,
385+
npm_mode = False,
385386
_fail = fail):
386387
def _same_at(v1, v2, level):
387388
if not (v1.has(level) or v2.has(level)):
@@ -501,12 +502,11 @@ def _range_new(
501502
target = VersionScheme.parse(target)
502503

503504
prerelease_policy = prerelease_policy or PRERELEASE.NATURAL
504-
build_policy = build_policy or BUILD.IMPLICIT
505505

506-
if target.build:
507-
build_policy = BUILD.STRICT
506+
if build_policy == None:
507+
build_policy = BUILD.STRICT if target.build else BUILD.IMPLICIT
508508

509-
if target.build and operator not in (OP.EQ, OP.NE):
509+
if target.build and operator not in (OP.EQ, OP.NE) and not npm_mode:
510510
msg = "Invalid range '%s%s': build numbers have no ordering."
511511
return _fail(msg % (operator, target.to_str()))
512512

spec/internal/npm.bzl

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -187,14 +187,18 @@ def _npm_parser_new(version_scheme = Version.SCHEME.SEMVER, _fail = fail):
187187

188188
return result
189189

190-
def _range(operator, target):
191-
return Range.new(
192-
operator,
193-
target,
190+
def _range(operator, target, build_policy = None):
191+
kwargs = dict(
194192
version_scheme = version_scheme,
195193
prerelease_policy = Range.PRERELEASE.SAMEPATCH,
194+
npm_mode = True,
196195
)
197196

197+
if build_policy != None:
198+
kwargs["build_policy"] = build_policy
199+
200+
return Range.new(operator, target, **kwargs)
201+
198202
# buildifier: disable=name-conventions
199203
VersionScheme = Version.new(version_scheme, _fail = _fail)
200204

spec/internal/simple.bzl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,8 @@ def _parse_block(self, expression, VersionScheme, npm_mode = False, _fail = fail
206206
return [
207207
self._range(Range.OP.EQ, target, build_policy = Range.BUILD.STRICT),
208208
]
209+
elif npm_mode:
210+
return [self._range(Range.OP.EQ, target, build_policy = Range.BUILD.IMPLICIT)]
209211
else:
210212
return [self._range(Range.OP.EQ, target)]
211213

tests/spec/npm_server.bzl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,12 @@ def _npm_server_impl(ctx):
3737
("1.0.0-100", "<1.0.0-150", True),
3838
("1.0.0-100", "<1.0.0-150 >=1.0.0-100 || >1.0.0-150 <1.0.0-200", True),
3939
("1.0.0-199", "<1.0.0-150 >=1.0.0-100 || >1.0.0-150 <1.0.0-200", True),
40-
#("1.0.0+200", "1.0.0+100", True),
41-
#("1.0.0", "1.0.0+100", True),
42-
#("1.0.0+100", "<1.0.0+150 >=1.0.0+100 || >1.0.0+150 <1.0.0+200", False),
43-
#("1.0.0+199", "<1.0.0+150 >=1.0.0+100 || >1.0.0+150 <1.0.0+200", False),
44-
#("1.0.0+200", "<1.0.0+150 >=1.0.0+100 || >1.0.0+150 <1.0.0+200", False),
45-
#("1.0.0+150", "<1.0.0+150 >=1.0.0+100 || >1.0.0+150 <1.0.0+200", False),
40+
("1.0.0+200", "1.0.0+100", True),
41+
("1.0.0", "1.0.0+100", True),
42+
("1.0.0+100", "<1.0.0+150 >=1.0.0+100 || >1.0.0+150 <1.0.0+200", False),
43+
("1.0.0+199", "<1.0.0+150 >=1.0.0+100 || >1.0.0+150 <1.0.0+200", False),
44+
("1.0.0+200", "<1.0.0+150 >=1.0.0+100 || >1.0.0+150 <1.0.0+200", False),
45+
("1.0.0+150", "<1.0.0+150 >=1.0.0+100 || >1.0.0+150 <1.0.0+200", False),
4646
]
4747

4848
for version, spec, satisfies in params:

0 commit comments

Comments
 (0)