Skip to content

Commit dc0ddc3

Browse files
committed
test(features2): test to prevent regressing of optional host deps of dep
1 parent df56877 commit dc0ddc3

File tree

1 file changed

+82
-0
lines changed

1 file changed

+82
-0
lines changed

tests/testsuite/features2.rs

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2472,3 +2472,85 @@ fn all_features_merges_with_features() {
24722472
.with_stdout("it works")
24732473
.run();
24742474
}
2475+
2476+
#[cargo_test]
2477+
fn dep_with_optional_host_deps_activated() {
2478+
// To prevent regression like rust-lang/cargo#11330
2479+
Package::new("serde_derive", "0.1.0")
2480+
.feature("derive", &["dep:serde_derive"])
2481+
.file("src/lib.rs", "")
2482+
.publish();
2483+
2484+
Package::new("serde", "0.1.0")
2485+
.feature("derive", &["dep:serde_derive"])
2486+
.dep("serde_derive", "0.1.0")
2487+
.file("src/lib.rs", "")
2488+
.publish();
2489+
2490+
let p = project()
2491+
.file(
2492+
"Cargo.toml",
2493+
r#"
2494+
[package]
2495+
name = "foo"
2496+
version = "0.1.0"
2497+
edition = "2021"
2498+
2499+
[dependencies]
2500+
serde = { path = "serde", features = ["derive", "build"] }
2501+
"#,
2502+
)
2503+
.file("src/lib.rs", "")
2504+
.file(
2505+
"serde/Cargo.toml",
2506+
r#"
2507+
[package]
2508+
name = "serde"
2509+
version = "0.1.0"
2510+
edition = "2021"
2511+
2512+
[dependencies]
2513+
serde_derive = { path = "../serde_derive", optional = true }
2514+
2515+
[build-dependencies]
2516+
serde_build = { path = "../serde_build", optional = true }
2517+
2518+
[features]
2519+
derive = ["dep:serde_derive"]
2520+
build = ["dep:serde_build"]
2521+
"#,
2522+
)
2523+
.file("serde/src/lib.rs", "")
2524+
.file("serde/build.rs", "fn main() {}")
2525+
.file(
2526+
"serde_derive/Cargo.toml",
2527+
r#"
2528+
[package]
2529+
name = "serde_derive"
2530+
version = "0.1.0"
2531+
edition = "2021"
2532+
2533+
[lib]
2534+
proc-macro = true
2535+
"#,
2536+
)
2537+
.file("serde_derive/src/lib.rs", "")
2538+
.file(
2539+
"serde_build/Cargo.toml",
2540+
&basic_manifest("serde_build", "0.1.0"),
2541+
)
2542+
.file("serde_build/src/lib.rs", "")
2543+
.build();
2544+
2545+
p.cargo("build")
2546+
.with_stderr(
2547+
"\
2548+
[COMPILING] serde_build v0.1.0 ([ROOT]/foo/serde_build)
2549+
[COMPILING] serde_derive v0.1.0 ([ROOT]/foo/serde_derive)
2550+
[COMPILING] serde v0.1.0 ([ROOT]/foo/serde)
2551+
[COMPILING] foo v0.1.0 ([ROOT]/foo)
2552+
[FINISHED] dev [..]
2553+
",
2554+
)
2555+
.run();
2556+
}

0 commit comments

Comments
 (0)