Skip to content

Commit fb02ade

Browse files
committed
Rework tests to avoid using -vv
Environment variables are represented differently in differents OSes in the output. Add tests checking if the variable is set instead.
1 parent c12aed2 commit fb02ade

File tree

2 files changed

+65
-92
lines changed

2 files changed

+65
-92
lines changed

tests/testsuite/build.rs

+42-57
Original file line numberDiff line numberDiff line change
@@ -5182,80 +5182,65 @@ fn build_script_o0_default_even_with_release() {
51825182

51835183
#[cargo_test]
51845184
fn primary_package_env_var() {
5185-
// "foo" depends on "bar" (local) which depends on "baz" (git) which depends on "qux" (registry)
5186-
// Test that CARGO_PRIMARY_PACKAGE is enabled only for "foo".
5185+
// Test that CARGO_PRIMARY_PACKAGE is enabled only for "foo" and not for any dependency.
51875186

5188-
Package::new("qux", "1.0.0")
5189-
.file("src/lib.rs", "")
5187+
let is_primary_package = r#"
5188+
pub fn is_primary_package() -> bool {{
5189+
option_env!("CARGO_PRIMARY_PACKAGE").is_some()
5190+
}}
5191+
"#;
5192+
5193+
Package::new("qux", "0.1.0")
5194+
.file("src/lib.rs", is_primary_package)
51905195
.publish();
51915196

51925197
let baz = git::new("baz", |project| {
51935198
project
5194-
.file(
5195-
"Cargo.toml",
5196-
r#"
5197-
[package]
5198-
name = "baz"
5199-
version = "1.0.0"
5200-
5201-
[dependencies]
5202-
qux = "1.0"
5203-
"#,
5204-
)
5205-
.file("src/lib.rs", "extern crate qux;")
5199+
.file("Cargo.toml", &basic_manifest("baz", "0.1.0"))
5200+
.file("src/lib.rs", is_primary_package)
52065201
});
52075202

52085203
let foo = project()
52095204
.file(
52105205
"Cargo.toml",
5211-
r#"
5212-
[package]
5213-
name = "foo"
5214-
version = "1.0.0"
5206+
&format!(
5207+
r#"
5208+
[package]
5209+
name = "foo"
5210+
version = "0.1.0"
52155211
5216-
[dependencies]
5217-
bar = {path = "bar"}
5218-
"#,
5212+
[dependencies]
5213+
bar = {{ path = "bar" }}
5214+
baz = {{ git = '{}' }}
5215+
qux = "0.1"
5216+
"#,
5217+
baz.url()
5218+
),
52195219
)
5220-
.file("src/lib.rs", "extern crate bar;")
52215220
.file(
5222-
"bar/Cargo.toml",
5221+
"src/lib.rs",
52235222
&format!(
52245223
r#"
5225-
[package]
5226-
name = "bar"
5227-
version = "1.0.0"
5228-
5229-
[dependencies]
5230-
baz = {{ git = '{}' }}
5231-
"#,
5232-
baz.url()
5224+
extern crate bar;
5225+
extern crate baz;
5226+
extern crate qux;
5227+
5228+
{}
5229+
5230+
#[test]
5231+
fn verify_primary_package() {{
5232+
assert!(!bar::is_primary_package());
5233+
assert!(!baz::is_primary_package());
5234+
assert!(!qux::is_primary_package());
5235+
assert!(is_primary_package());
5236+
}}
5237+
"#,
5238+
is_primary_package
52335239
),
52345240
)
5235-
.file("bar/src/lib.rs", "extern crate baz;")
5241+
.file("bar/Cargo.toml", &basic_manifest("bar", "0.1.0"))
5242+
.file("bar/src/lib.rs", is_primary_package)
52365243
.build();
52375244

5238-
foo.cargo("build -vv")
5239-
.with_stderr_contains("[COMPILING] qux[..]")
5240-
.with_stderr_line_without(
5241-
&["[RUNNING]", "CARGO_CRATE_NAME=qux"],
5242-
&["CARGO_PRIMARY_PACKAGE=1"],
5243-
)
5244-
.with_stderr_contains("[COMPILING] baz[..]")
5245-
.with_stderr_line_without(
5246-
&["[RUNNING]", "CARGO_CRATE_NAME=baz"],
5247-
&["CARGO_PRIMARY_PACKAGE=1"],
5248-
)
5249-
.with_stderr_contains("[COMPILING] bar[..]")
5250-
.with_stderr_line_without(
5251-
&["[RUNNING]", "CARGO_CRATE_NAME=bar"],
5252-
&["CARGO_PRIMARY_PACKAGE=1"],
5253-
)
5254-
.with_stderr_contains(
5255-
"\
5256-
[COMPILING] foo[..]
5257-
[RUNNING] [..] CARGO_CRATE_NAME=foo [..] CARGO_PRIMARY_PACKAGE=1 [..]
5258-
[FINISHED] dev [unoptimized + debuginfo] target(s) in [..]",
5259-
)
5260-
.run();
5245+
foo.cargo("test").run();
52615246
}

tests/testsuite/workspaces.rs

+23-35
Original file line numberDiff line numberDiff line change
@@ -2322,6 +2322,13 @@ Caused by:
23222322

23232323
#[cargo_test]
23242324
fn simple_primary_package_env_var() {
2325+
let is_primary_package = r#"
2326+
#[test]
2327+
fn verify_primary_package() {{
2328+
assert!(option_env!("CARGO_PRIMARY_PACKAGE").is_some());
2329+
}}
2330+
"#;
2331+
23252332
let p = project()
23262333
.file(
23272334
"Cargo.toml",
@@ -2335,7 +2342,7 @@ fn simple_primary_package_env_var() {
23352342
members = ["bar"]
23362343
"#,
23372344
)
2338-
.file("src/main.rs", "fn main() {}")
2345+
.file("src/lib.rs", is_primary_package)
23392346
.file(
23402347
"bar/Cargo.toml",
23412348
r#"
@@ -2346,37 +2353,29 @@ fn simple_primary_package_env_var() {
23462353
workspace = ".."
23472354
"#,
23482355
)
2349-
.file("bar/src/main.rs", "fn main() {}");
2356+
.file("bar/src/lib.rs", is_primary_package);
23502357
let p = p.build();
23512358

2352-
p.cargo("build -vv")
2353-
.with_stderr_contains(
2354-
"[RUNNING] [..] CARGO_CRATE_NAME=foo [..] CARGO_PRIMARY_PACKAGE=1 [..]",
2355-
)
2356-
.run();
2359+
p.cargo("test").run();
23572360

23582361
// Again, this time selecting a specific crate
23592362
p.cargo("clean").run();
2360-
p.cargo("build -vv -p bar")
2361-
.with_stderr_contains(
2362-
"[RUNNING] [..] CARGO_CRATE_NAME=bar [..] CARGO_PRIMARY_PACKAGE=1 [..]",
2363-
)
2364-
.run();
2363+
p.cargo("test -p bar").run();
23652364

23662365
// Again, this time selecting all crates
23672366
p.cargo("clean").run();
2368-
p.cargo("build -vv --all")
2369-
.with_stderr_contains(
2370-
"[RUNNING] [..] CARGO_CRATE_NAME=foo [..] CARGO_PRIMARY_PACKAGE=1 [..]",
2371-
)
2372-
.with_stderr_contains(
2373-
"[RUNNING] [..] CARGO_CRATE_NAME=bar [..] CARGO_PRIMARY_PACKAGE=1 [..]",
2374-
)
2375-
.run();
2367+
p.cargo("test --all").run();
23762368
}
23772369

23782370
#[cargo_test]
23792371
fn virtual_primary_package_env_var() {
2372+
let is_primary_package = r#"
2373+
#[test]
2374+
fn verify_primary_package() {{
2375+
assert!(option_env!("CARGO_PRIMARY_PACKAGE").is_some());
2376+
}}
2377+
"#;
2378+
23802379
let p = project()
23812380
.file(
23822381
"Cargo.toml",
@@ -2386,25 +2385,14 @@ fn virtual_primary_package_env_var() {
23862385
"#,
23872386
)
23882387
.file("foo/Cargo.toml", &basic_manifest("foo", "0.1.0"))
2389-
.file("foo/src/main.rs", "fn main() {}")
2388+
.file("foo/src/lib.rs", is_primary_package)
23902389
.file("bar/Cargo.toml", &basic_manifest("bar", "0.1.0"))
2391-
.file("bar/src/main.rs", "fn main() {}");
2390+
.file("bar/src/lib.rs", is_primary_package);
23922391
let p = p.build();
23932392

2394-
p.cargo("build -vv")
2395-
.with_stderr_contains(
2396-
"[RUNNING] [..] CARGO_CRATE_NAME=foo [..] CARGO_PRIMARY_PACKAGE=1 [..]",
2397-
)
2398-
.with_stderr_contains(
2399-
"[RUNNING] [..] CARGO_CRATE_NAME=bar [..] CARGO_PRIMARY_PACKAGE=1 [..]",
2400-
)
2401-
.run();
2393+
p.cargo("test").run();
24022394

24032395
// Again, this time selecting a specific crate
24042396
p.cargo("clean").run();
2405-
p.cargo("build -vv -p foo")
2406-
.with_stderr_contains(
2407-
"[RUNNING] [..] CARGO_CRATE_NAME=foo [..] CARGO_PRIMARY_PACKAGE=1 [..]",
2408-
)
2409-
.run();
2397+
p.cargo("test -p foo").run();
24102398
}

0 commit comments

Comments
 (0)