diff options
Diffstat (limited to 'src/tools/cargo/crates/resolver-tests/tests/resolve.rs')
-rw-r--r-- | src/tools/cargo/crates/resolver-tests/tests/resolve.rs | 33 |
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")], ®istry(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() + ); +} |