summaryrefslogtreecommitdiffstats
path: root/src/tools/cargo/crates/resolver-tests/tests/resolve.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/cargo/crates/resolver-tests/tests/resolve.rs')
-rw-r--r--src/tools/cargo/crates/resolver-tests/tests/resolve.rs33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/tools/cargo/crates/resolver-tests/tests/resolve.rs b/src/tools/cargo/crates/resolver-tests/tests/resolve.rs
index 02486bfb5..dd21502d8 100644
--- a/src/tools/cargo/crates/resolver-tests/tests/resolve.rs
+++ b/src/tools/cargo/crates/resolver-tests/tests/resolve.rs
@@ -1562,3 +1562,36 @@ package `A v0.0.0 (registry `https://example.com/`)`
... which satisfies dependency `C = \"*\"` of package `A v0.0.0 (registry `https://example.com/`)`\
", error.to_string());
}
+
+#[test]
+fn shortest_path_in_error_message() {
+ let input = vec![
+ pkg!(("F", "0.1.2")),
+ pkg!(("F", "0.1.1") => [dep("bad"),]),
+ pkg!(("F", "0.1.0") => [dep("bad"),]),
+ pkg!("E" => [dep_req("F", "^0.1.2"),]),
+ pkg!("D" => [dep_req("F", "^0.1.2"),]),
+ pkg!("C" => [dep("D"),]),
+ pkg!("A" => [dep("C"),dep("E"),dep_req("F", "<=0.1.1"),]),
+ ];
+ let error = resolve(vec![dep("A")], &registry(input)).unwrap_err();
+ println!("{}", error);
+ assert_eq!(
+ "\
+failed to select a version for `F`.
+ ... required by package `A v1.0.0 (registry `https://example.com/`)`
+ ... which satisfies dependency `A = \"*\"` of package `root v1.0.0 (registry `https://example.com/`)`
+versions that meet the requirements `<=0.1.1` are: 0.1.1, 0.1.0
+
+all possible versions conflict with previously selected packages.
+
+ previously selected package `F v0.1.2 (registry `https://example.com/`)`
+ ... which satisfies dependency `F = \"^0.1.2\"` of package `E v1.0.0 (registry `https://example.com/`)`
+ ... which satisfies dependency `E = \"*\"` of package `A v1.0.0 (registry `https://example.com/`)`
+ ... which satisfies dependency `A = \"*\"` of package `root v1.0.0 (registry `https://example.com/`)`
+
+failed to select a version for `F` which could resolve this conflict\
+ ",
+ error.to_string()
+ );
+}