Skip to content

Commit f1aa2d1

Browse files
committed
Save original dependency requirement string in the database when publishing
1 parent e44a6f2 commit f1aa2d1

File tree

4 files changed

+6
-18
lines changed

4 files changed

+6
-18
lines changed

src/models/dependency.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ pub fn add_dependencies(
9595
let krate:Crate = Crate::by_exact_name(&dep.name)
9696
.first(&*conn)
9797
.map_err(|_| cargo_err(&format_args!("no known crate named `{}`", &*dep.name)))?;
98-
if dep.version_req == semver::VersionReq::parse("*").unwrap() {
98+
if semver::VersionReq::parse(&dep.version_req.0) == semver::VersionReq::parse("*") {
9999
return Err(cargo_err(WILDCARD_ERROR_MESSAGE));
100100
}
101101

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/publish.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ fn new_krate_with_broken_dependency_requirement() {
223223

224224
// create a request body with `version_req: "broken"`
225225
let (json, tarball) = crate_to_publish.build();
226-
let new_json = json.replace("\"version_req\":\"^1.2.3\"", "\"version_req\":\"broken\"");
226+
let new_json = json.replace("\"version_req\":\"1.2.3\"", "\"version_req\":\"broken\"");
227227
assert_ne!(json, new_json);
228228
let body = PublishBuilder::create_publish_body(&new_json, &tarball);
229229

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)