Skip to content

Commit 5043485

Browse files
committed
fix(spec): Require opt-in for pre-release
1 parent 2f8ab44 commit 5043485

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

src/cargo/core/package_id_spec.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -470,9 +470,9 @@ mod tests {
470470

471471
let pre = PackageId::new("pre", "1.2.3-alpha.0", sid).unwrap();
472472
assert!(PackageIdSpec::parse("pre").unwrap().matches(pre));
473-
assert!(PackageIdSpec::parse("pre@1").unwrap().matches(pre));
474-
assert!(PackageIdSpec::parse("pre@1.2").unwrap().matches(pre));
475-
assert!(PackageIdSpec::parse("pre@1.2.3").unwrap().matches(pre));
473+
assert!(!PackageIdSpec::parse("pre@1").unwrap().matches(pre));
474+
assert!(!PackageIdSpec::parse("pre@1.2").unwrap().matches(pre));
475+
assert!(!PackageIdSpec::parse("pre@1.2.3").unwrap().matches(pre));
476476
assert!(PackageIdSpec::parse("pre@1.2.3-alpha.0")
477477
.unwrap()
478478
.matches(pre));

src/cargo/util/semver_ext.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,11 @@ impl PartialVersion {
191191
/// Build metadata does not affect version precedence but may be necessary for uniquely
192192
/// identifying a package.
193193
pub fn matches(&self, version: &Version) -> bool {
194+
if !version.pre.is_empty() && self.pre.is_none() {
195+
// Pre-release versions must be explicitly opted into, if for no other reason than to
196+
// give us room to figure out and define the semantics
197+
return false;
198+
}
194199
self.major == version.major
195200
&& self.minor.map(|f| f == version.minor).unwrap_or(true)
196201
&& self.patch.map(|f| f == version.patch).unwrap_or(true)

0 commit comments

Comments
 (0)