diff --git a/tests/testsuite/artifact_dep.rs b/tests/testsuite/artifact_dep.rs index cfb46b63791b..fe2917808d7a 100644 --- a/tests/testsuite/artifact_dep.rs +++ b/tests/testsuite/artifact_dep.rs @@ -1579,6 +1579,84 @@ foo v0.0.0 ([ROOT]/foo) .run(); } +/// From issue #10061 +/// The case where: +/// * artifact dep is { target = } +/// * dependency of that artifact dependency specifies the same target +/// * the target is not activated. +#[cargo_test] +fn dep_of_artifact_dep_same_target_specified() { + if cross_compile::disabled() { + return; + } + let target = cross_compile::alternate(); + let p = project() + .file( + "Cargo.toml", + &format!( + r#" + [package] + name = "foo" + version = "0.1.0" + edition = "2015" + resolver = "2" + + [dependencies] + bar = {{ path = "bar", artifact = "bin", target = "{target}" }} + "#, + ), + ) + .file("src/lib.rs", "") + .file( + "bar/Cargo.toml", + &format!( + r#" + [package] + name = "bar" + version = "0.1.0" + + [target.{target}.dependencies] + baz = {{ path = "../baz" }} + "#, + ), + ) + .file("bar/src/lib.rs", "") + .file( + "baz/Cargo.toml", + r#" + [package] + name = "baz" + version = "0.1.0" + + "#, + ) + .file("baz/src/lib.rs", "") + .build(); + + // TODO This command currently fails due to a bug in cargo but it should be fixed so that it succeeds in the future. + p.cargo("check -Z bindeps") + .masquerade_as_nightly_cargo(&["bindeps"]) + .with_stderr_data(str![[r#" +[LOCKING] 2 packages to latest compatible versions +[ERROR] dependency `bar` in package `foo` requires a `bin` artifact to be present. + +"#]]) + .with_status(101) + .run(); + + // TODO This command currently fails due to a bug in cargo but it should be fixed so that it succeeds in the future. + p.cargo("tree -Z bindeps") + .masquerade_as_nightly_cargo(&["bindeps"]) + .with_stderr_data( + r#"... +no entry found for key +... +"#, + ) + .with_status(101) + .run(); +} + #[cargo_test] fn targets_are_picked_up_from_non_workspace_artifact_deps() { if cross_compile::disabled() {