Skip to content

Commit 433237d

Browse files
committed
Save original dependency requirement string in the database when publishing
1 parent e7f425c commit 433237d

File tree

4 files changed

+6
-21
lines changed

4 files changed

+6
-21
lines changed

src/models/dependency.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ pub fn add_dependencies(
9090
let krate:Crate = Crate::by_exact_name(&dep.name)
9191
.first(&*conn)
9292
.map_err(|_| cargo_err(&format_args!("no known crate named `{}`", &*dep.name)))?;
93-
if dep.version_req == semver::VersionReq::parse("*").unwrap() {
93+
if semver::VersionReq::parse(&dep.version_req.0) == semver::VersionReq::parse("*") {
9494
return Err(cargo_err(
9595
"wildcard (`*` or `>= 0`) dependency constraints are not allowed \
9696
on crates.io. See https://doc.rust-lang.org/cargo/faq.html#can-\

src/tests/builders/dependency.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ impl DependencyBuilder {
1515
explicit_name_in_toml: None,
1616
name: name.to_string(),
1717
registry: None,
18-
version_req: u::EncodableCrateVersionReq(semver::VersionReq::parse("> 0").unwrap()),
18+
version_req: u::EncodableCrateVersionReq("> 0".to_string()),
1919
}
2020
}
2121

@@ -38,10 +38,7 @@ impl DependencyBuilder {
3838
/// Panics if the `version_req` string specified isn't a valid `semver::VersionReq`.
3939
#[track_caller]
4040
pub fn version_req(mut self, version_req: &str) -> Self {
41-
self.version_req = u::EncodableCrateVersionReq(
42-
semver::VersionReq::parse(version_req)
43-
.expect("version req isn't a valid semver::VersionReq"),
44-
);
41+
self.version_req = u::EncodableCrateVersionReq(version_req.to_string());
4542
self
4643
}
4744

src/tests/krate.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -907,10 +907,7 @@ fn new_krate_with_broken_dependency_requirement() {
907907

908908
// create a request body with `version_req: "broken"`
909909
let (json, tarball) = crate_to_publish.build();
910-
let new_json = json.replace(
911-
"\"version_req\":\">=1.2.3, <2.0.0\"",
912-
"\"version_req\":\"broken\"",
913-
);
910+
let new_json = json.replace("\"version_req\":\"1.2.3\"", "\"version_req\":\"broken\"");
914911
assert_ne!(json, new_json);
915912
let body = PublishBuilder::create_publish_body(&new_json, &tarball);
916913

src/views/krate_publish.rs

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ pub struct EncodableCrateName(pub String);
4141
#[derive(Debug, Deref)]
4242
pub struct EncodableCrateVersion(pub semver::Version);
4343
#[derive(Debug, Deref)]
44-
pub struct EncodableCrateVersionReq(pub semver::VersionReq);
44+
pub struct EncodableCrateVersionReq(pub String);
4545
#[derive(Serialize, Debug, Deref, Default)]
4646
pub struct EncodableKeywordList(pub Vec<EncodableKeyword>);
4747
#[derive(Serialize, Debug, Deref)]
@@ -152,7 +152,7 @@ impl<'de> Deserialize<'de> for EncodableCrateVersionReq {
152152
fn deserialize<D: Deserializer<'de>>(d: D) -> Result<EncodableCrateVersionReq, D::Error> {
153153
let s = String::deserialize(d)?;
154154
match semver::VersionReq::parse(&s) {
155-
Ok(v) => Ok(EncodableCrateVersionReq(v)),
155+
Ok(_) => Ok(EncodableCrateVersionReq(s)),
156156
Err(..) => {
157157
let value = de::Unexpected::Str(&s);
158158
let expected = "a valid version req";
@@ -162,15 +162,6 @@ impl<'de> Deserialize<'de> for EncodableCrateVersionReq {
162162
}
163163
}
164164

165-
impl<T: ?Sized> PartialEq<T> for EncodableCrateVersionReq
166-
where
167-
semver::VersionReq: PartialEq<T>,
168-
{
169-
fn eq(&self, rhs: &T) -> bool {
170-
self.0 == *rhs
171-
}
172-
}
173-
174165
impl<'de> Deserialize<'de> for EncodableKeywordList {
175166
fn deserialize<D: Deserializer<'de>>(d: D) -> Result<EncodableKeywordList, D::Error> {
176167
let inner = <Vec<EncodableKeyword> as Deserialize<'de>>::deserialize(d)?;

0 commit comments

Comments
 (0)