Skip to content

Commit 3d5ad6e

Browse files
authored
Merge pull request #7245 from Turbo87/normalize-version-req
publish: Normalize dependency version requirements
2 parents 981ac72 + fc2b704 commit 3d5ad6e

7 files changed

+43
-8
lines changed

src/controllers/krate/publish.rs

+10-2
Original file line numberDiff line numberDiff line change
@@ -506,7 +506,15 @@ fn convert_dependency(
506506
target: Option<&str>,
507507
) -> EncodableCrateDependency {
508508
let details = dep.detail();
509-
let req = dep.req();
509+
510+
// Normalize version requirement with a `parse()` and `to_string()` cycle.
511+
//
512+
// If the value can't be parsed the `validate_dependency()` fn will return
513+
// an error later in the call chain. Parsing the value twice is a bit
514+
// wasteful, but we can clean this up later.
515+
let req = semver::VersionReq::parse(dep.req())
516+
.map(|req| req.to_string())
517+
.unwrap_or_else(|_| dep.req().to_string());
510518

511519
let (crate_name, explicit_name_in_toml) = match details.and_then(|it| it.package.clone()) {
512520
None => (name.to_string(), None),
@@ -522,7 +530,7 @@ fn convert_dependency(
522530

523531
EncodableCrateDependency {
524532
name: crate_name,
525-
version_req: req.to_string(),
533+
version_req: req,
526534
optional,
527535
default_features,
528536
features,

src/tests/krate/publish/dependencies.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,10 @@ fn new_krate_with_dependency() {
9696

9797
assert_eq!(dependencies.len(), 1);
9898
assert_eq!(dependencies[0].crate_id, "foo-dep");
99-
assert_eq!(dependencies[0].req, "1.0.0");
99+
assert_eq!(dependencies[0].req, "^1.0.0");
100+
101+
let crates = app.crates_from_index_head("new_dep");
102+
assert_json_snapshot!(crates);
100103
}
101104

102105
#[test]

src/tests/krate/publish/snapshots/all__krate__publish__dependencies__new_krate_sorts_deps.snap

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ expression: crates
99
"deps": [
1010
{
1111
"name": "dep-a",
12-
"req": "> 0",
12+
"req": ">0",
1313
"features": [],
1414
"optional": false,
1515
"default_features": true,
@@ -18,7 +18,7 @@ expression: crates
1818
},
1919
{
2020
"name": "dep-b",
21-
"req": "> 0",
21+
"req": ">0",
2222
"features": [],
2323
"optional": false,
2424
"default_features": true,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
source: src/tests/krate/publish/dependencies.rs
3+
expression: crates
4+
---
5+
[
6+
{
7+
"name": "new_dep",
8+
"vers": "1.0.0",
9+
"deps": [
10+
{
11+
"name": "foo-dep",
12+
"req": "^1.0.0",
13+
"features": [],
14+
"optional": false,
15+
"default_features": true,
16+
"target": null,
17+
"kind": "normal"
18+
}
19+
],
20+
"cksum": "b1ce14dbe59036a964369747770d2d64695039065384b1ab56f09a59525300a6",
21+
"features": {},
22+
"yanked": false
23+
}
24+
]

src/tests/krate/publish/snapshots/all__krate__publish__dependencies__new_with_renamed_dependency.snap

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ expression: crates
99
"deps": [
1010
{
1111
"name": "my-name",
12-
"req": "> 0",
12+
"req": ">0",
1313
"features": [],
1414
"optional": false,
1515
"default_features": true,

src/tests/krate/publish/snapshots/all__krate__publish__dependencies__new_with_underscore_renamed_dependency.snap

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ expression: crates
99
"deps": [
1010
{
1111
"name": "_my-name",
12-
"req": "> 0",
12+
"req": ">0",
1313
"features": [],
1414
"optional": false,
1515
"default_features": true,

src/tests/krate/publish/snapshots/all__krate__publish__features__features_version_2.snap

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ expression: crates
99
"deps": [
1010
{
1111
"name": "bar",
12-
"req": "> 0",
12+
"req": ">0",
1313
"features": [],
1414
"optional": false,
1515
"default_features": true,

0 commit comments

Comments
 (0)