@@ -2472,3 +2472,74 @@ fn all_features_merges_with_features() {
2472
2472
. with_stdout ( "it works" )
2473
2473
. run ( ) ;
2474
2474
}
2475
+
2476
+ #[ cargo_test]
2477
+ fn dep_with_optional_host_deps_activated ( ) {
2478
+ // To prevent regression like rust-lang/cargo#11330
2479
+ let p = project ( )
2480
+ . file (
2481
+ "Cargo.toml" ,
2482
+ r#"
2483
+ [package]
2484
+ name = "foo"
2485
+ version = "0.1.0"
2486
+ edition = "2021"
2487
+
2488
+ [dependencies]
2489
+ serde = { path = "serde", features = ["derive", "build"] }
2490
+ "# ,
2491
+ )
2492
+ . file ( "src/lib.rs" , "" )
2493
+ . file (
2494
+ "serde/Cargo.toml" ,
2495
+ r#"
2496
+ [package]
2497
+ name = "serde"
2498
+ version = "0.1.0"
2499
+ edition = "2021"
2500
+
2501
+ [dependencies]
2502
+ serde_derive = { path = "../serde_derive", optional = true }
2503
+
2504
+ [build-dependencies]
2505
+ serde_build = { path = "../serde_build", optional = true }
2506
+
2507
+ [features]
2508
+ derive = ["dep:serde_derive"]
2509
+ build = ["dep:serde_build"]
2510
+ "# ,
2511
+ )
2512
+ . file ( "serde/src/lib.rs" , "" )
2513
+ . file ( "serde/build.rs" , "fn main() {}" )
2514
+ . file (
2515
+ "serde_derive/Cargo.toml" ,
2516
+ r#"
2517
+ [package]
2518
+ name = "serde_derive"
2519
+ version = "0.1.0"
2520
+ edition = "2021"
2521
+
2522
+ [lib]
2523
+ proc-macro = true
2524
+ "# ,
2525
+ )
2526
+ . file ( "serde_derive/src/lib.rs" , "" )
2527
+ . file (
2528
+ "serde_build/Cargo.toml" ,
2529
+ & basic_manifest ( "serde_build" , "0.1.0" ) ,
2530
+ )
2531
+ . file ( "serde_build/src/lib.rs" , "" )
2532
+ . build ( ) ;
2533
+
2534
+ p. cargo ( "check" )
2535
+ . with_stderr (
2536
+ "\
2537
+ [COMPILING] serde_build v0.1.0 ([CWD]/serde_build)
2538
+ [COMPILING] serde_derive v0.1.0 ([CWD]/serde_derive)
2539
+ [COMPILING] serde v0.1.0 ([CWD]/serde)
2540
+ [CHECKING] foo v0.1.0 ([CWD])
2541
+ [FINISHED] dev [..]
2542
+ " ,
2543
+ )
2544
+ . run ( ) ;
2545
+ }
0 commit comments