Skip to content

Commit 039de93

Browse files
committed
Add tests for CARGO_BUILD_TYPE duplicate shared deps.
1 parent da18aab commit 039de93

File tree

1 file changed

+200
-0
lines changed

1 file changed

+200
-0
lines changed

tests/testsuite/build_script.rs

Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2343,6 +2343,206 @@ fn test_duplicate_deps() {
23432343
p.cargo("build").run();
23442344
}
23452345

2346+
#[cargo_test]
2347+
fn test_duplicate_shared_deps_native() {
2348+
let p = project()
2349+
.file(
2350+
"Cargo.toml",
2351+
r#"
2352+
[project]
2353+
name = "foo"
2354+
version = "0.1.0"
2355+
authors = []
2356+
build = "build.rs"
2357+
2358+
[dependencies]
2359+
bar = { path = 'bar' }
2360+
2361+
[build-dependencies]
2362+
bar = { path = 'bar' }
2363+
"#,
2364+
)
2365+
.file(
2366+
"src/main.rs",
2367+
r#"
2368+
extern crate bar;
2369+
fn main() { bar::do_nothing() }
2370+
"#,
2371+
)
2372+
.file(
2373+
"build.rs",
2374+
r#"
2375+
extern crate bar;
2376+
use std::env;
2377+
fn main() {
2378+
bar::do_nothing();
2379+
assert_eq!(env::var("DEP_FOO_FOO").unwrap(), "bar");
2380+
assert_eq!(env::var("CARGO_BUILD_TYPE").unwrap(), "native");
2381+
}
2382+
"#,
2383+
)
2384+
.file(
2385+
"bar/Cargo.toml",
2386+
r#"
2387+
[project]
2388+
name = "bar"
2389+
version = "0.1.0"
2390+
authors = []
2391+
links = "foo"
2392+
build = "build.rs"
2393+
"#,
2394+
)
2395+
.file(
2396+
"bar/build.rs",
2397+
r#"
2398+
use std::env;
2399+
fn main() {
2400+
println!("cargo:foo=bar");
2401+
assert_eq!(env::var("CARGO_BUILD_TYPE").unwrap(), "native");
2402+
}
2403+
"#,
2404+
)
2405+
.file("bar/src/lib.rs", "pub fn do_nothing() {}")
2406+
.build();
2407+
2408+
p.cargo("build -v").run();
2409+
}
2410+
2411+
#[cargo_test]
2412+
fn test_duplicate_shared_deps_host_cross() {
2413+
let target = rustc_host();
2414+
let p = project()
2415+
.file(
2416+
"Cargo.toml",
2417+
r#"
2418+
[project]
2419+
name = "foo"
2420+
version = "0.1.0"
2421+
authors = []
2422+
build = "build.rs"
2423+
2424+
[dependencies]
2425+
bar = { path = 'bar' }
2426+
2427+
[build-dependencies]
2428+
bar = { path = 'bar' }
2429+
"#,
2430+
)
2431+
.file(
2432+
"src/main.rs",
2433+
r#"
2434+
extern crate bar;
2435+
fn main() { bar::do_nothing() }
2436+
"#,
2437+
)
2438+
.file(
2439+
"build.rs",
2440+
r#"
2441+
extern crate bar;
2442+
use std::env;
2443+
fn main() {
2444+
bar::do_nothing();
2445+
assert_eq!(env::var("DEP_FOO_FOO").unwrap(), "bar");
2446+
assert_eq!(env::var("CARGO_BUILD_TYPE").unwrap(), "cross");
2447+
}
2448+
"#,
2449+
)
2450+
.file(
2451+
"bar/Cargo.toml",
2452+
r#"
2453+
[project]
2454+
name = "bar"
2455+
version = "0.1.0"
2456+
authors = []
2457+
links = "foo"
2458+
build = "build.rs"
2459+
"#,
2460+
)
2461+
.file(
2462+
"bar/build.rs",
2463+
r#"
2464+
use std::env;
2465+
fn main() {
2466+
println!("cargo:foo=bar");
2467+
assert_eq!(env::var("CARGO_BUILD_TYPE").unwrap(), "cross");
2468+
}
2469+
"#,
2470+
)
2471+
.file("bar/src/lib.rs", "pub fn do_nothing() {}")
2472+
.build();
2473+
2474+
p.cargo("build -v --target").arg(&target).run();
2475+
}
2476+
2477+
#[cargo_test]
2478+
fn test_duplicate_shared_deps_alt_cross() {
2479+
if cross_compile::disabled() {
2480+
return;
2481+
}
2482+
let cross_target = cross_compile::alternate();
2483+
let p = project()
2484+
.file(
2485+
"Cargo.toml",
2486+
r#"
2487+
[project]
2488+
name = "foo"
2489+
version = "0.1.0"
2490+
authors = []
2491+
build = "build.rs"
2492+
2493+
[dependencies]
2494+
bar = { path = 'bar' }
2495+
2496+
[build-dependencies]
2497+
bar = { path = 'bar' }
2498+
"#,
2499+
)
2500+
.file(
2501+
"src/main.rs",
2502+
r#"
2503+
extern crate bar;
2504+
fn main() { bar::do_nothing() }
2505+
"#,
2506+
)
2507+
.file(
2508+
"build.rs",
2509+
r#"
2510+
extern crate bar;
2511+
use std::env;
2512+
fn main() {
2513+
bar::do_nothing();
2514+
assert_eq!(env::var("DEP_FOO_FOO").unwrap(), "bar");
2515+
assert_eq!(env::var("CARGO_BUILD_TYPE").unwrap(), "cross");
2516+
}
2517+
"#,
2518+
)
2519+
.file(
2520+
"bar/Cargo.toml",
2521+
r#"
2522+
[project]
2523+
name = "bar"
2524+
version = "0.1.0"
2525+
authors = []
2526+
links = "foo"
2527+
build = "build.rs"
2528+
"#,
2529+
)
2530+
.file(
2531+
"bar/build.rs",
2532+
r#"
2533+
use std::env;
2534+
fn main() {
2535+
println!("cargo:foo=bar");
2536+
assert_eq!(env::var("CARGO_BUILD_TYPE").unwrap(), "cross");
2537+
}
2538+
"#,
2539+
)
2540+
.file("bar/src/lib.rs", "pub fn do_nothing() {}")
2541+
.build();
2542+
2543+
p.cargo("build --target").arg(&cross_target).run();
2544+
}
2545+
23462546
#[cargo_test]
23472547
fn cfg_feedback() {
23482548
let p = project()

0 commit comments

Comments
 (0)