Skip to content

Commit abc5bae

Browse files
committed
test(rustflags): Verify -Cmetadata directly, not through -Cextra-filename
This unblocks experimenting with having these diverge for #8716
1 parent 8b41a8e commit abc5bae

File tree

1 file changed

+32
-21
lines changed

1 file changed

+32
-21
lines changed

tests/testsuite/rustflags.rs

Lines changed: 32 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ use std::fs;
44

55
use cargo_test_support::prelude::*;
66
use cargo_test_support::registry::Package;
7-
use cargo_test_support::{basic_manifest, paths, project, project_in_home, rustc_host, str};
7+
use cargo_test_support::{
8+
basic_manifest, paths, project, project_in_home, rustc_host, str, RawOutput,
9+
};
10+
use snapbox::Assert;
811

912
#[cargo_test]
1013
fn env_rustflags_normal_source() {
@@ -1478,36 +1481,44 @@ fn env_rustflags_misspelled_build_script() {
14781481

14791482
#[cargo_test]
14801483
fn remap_path_prefix_ignored() {
1481-
// Ensure that --remap-path-prefix does not affect metadata hash.
1482-
let p = project().file("src/lib.rs", "").build();
1483-
p.cargo("build").run();
1484-
let rlibs = p
1485-
.glob("target/debug/deps/*.rlib")
1486-
.collect::<Result<Vec<_>, _>>()
1487-
.unwrap();
1488-
assert_eq!(rlibs.len(), 1);
1489-
p.cargo("clean").run();
1490-
1491-
let check_metadata_same = || {
1492-
let rlibs2 = p
1493-
.glob("target/debug/deps/*.rlib")
1494-
.collect::<Result<Vec<_>, _>>()
1495-
.unwrap();
1496-
assert_eq!(rlibs, rlibs2);
1484+
let get_c_metadata_re =
1485+
regex::Regex::new(r".*(--crate-name [^ ]*).*(-C ?metadata=[^ ]*).*").unwrap();
1486+
let get_c_metadata = |output: RawOutput| {
1487+
let stderr = String::from_utf8(output.stderr).unwrap();
1488+
let mut c_metadata = get_c_metadata_re
1489+
.captures_iter(&stderr)
1490+
.map(|c| {
1491+
let (_, [name, c_metadata]) = c.extract();
1492+
format!("{name} {c_metadata}")
1493+
})
1494+
.collect::<Vec<_>>();
1495+
assert!(
1496+
!c_metadata.is_empty(),
1497+
"`{get_c_metadata_re:?}` did not match:\n```\n{stderr}\n```"
1498+
);
1499+
c_metadata.sort();
1500+
c_metadata.join("\n")
14971501
};
14981502

1499-
p.cargo("build")
1503+
let p = project().file("src/lib.rs", "").build();
1504+
1505+
let build_output = p
1506+
.cargo("build -v")
15001507
.env(
15011508
"RUSTFLAGS",
15021509
"--remap-path-prefix=/abc=/zoo --remap-path-prefix /spaced=/zoo",
15031510
)
15041511
.run();
1505-
check_metadata_same();
1512+
let build_c_metadata = dbg!(get_c_metadata(build_output));
15061513

15071514
p.cargo("clean").run();
1508-
p.cargo("rustc -- --remap-path-prefix=/abc=/zoo --remap-path-prefix /spaced=/zoo")
1515+
1516+
let rustc_output = p
1517+
.cargo("rustc -v -- --remap-path-prefix=/abc=/zoo --remap-path-prefix /spaced=/zoo")
15091518
.run();
1510-
check_metadata_same();
1519+
let rustc_c_metadata = dbg!(get_c_metadata(rustc_output));
1520+
1521+
Assert::new().eq(rustc_c_metadata, build_c_metadata);
15111522
}
15121523

15131524
#[cargo_test]

0 commit comments

Comments
 (0)