-
Notifications
You must be signed in to change notification settings - Fork 13.7k
Closed
Labels
A-testsuiteArea: The testsuite used to check the correctness of rustcArea: The testsuite used to check the correctness of rustcC-enhancementCategory: An issue proposing an enhancement or a PR with one.Category: An issue proposing an enhancement or a PR with one.
Description
The failure mode for using an unrecognized header like only-i686
is that the test never runs which is very easy to miss. compiletest should verify that it recognizes the header value and that some target could run the test. This is basically a more specific version of #83551.
See #90569 for a case where this would have caught tests that never ran.
This is where the changes will need to be made:
rust/src/tools/compiletest/src/header.rs
Lines 674 to 713 in 27143a9
fn parse_cfg_name_directive(&self, line: &str, prefix: &str) -> ParsedNameDirective { | |
if !line.as_bytes().starts_with(prefix.as_bytes()) { | |
return ParsedNameDirective::NoMatch; | |
} | |
if line.as_bytes().get(prefix.len()) != Some(&b'-') { | |
return ParsedNameDirective::NoMatch; | |
} | |
let name = line[prefix.len() + 1..].split(&[':', ' '][..]).next().unwrap(); | |
let is_match = name == "test" || | |
self.target == name || // triple | |
util::matches_os(&self.target, name) || // target | |
util::matches_env(&self.target, name) || // env | |
self.target.ends_with(name) || // target and env | |
name == util::get_arch(&self.target) || // architecture | |
name == util::get_pointer_width(&self.target) || // pointer width | |
name == self.stage_id.split('-').next().unwrap() || // stage | |
name == self.channel || // channel | |
(self.target != self.host && name == "cross-compile") || | |
(name == "endian-big" && util::is_big_endian(&self.target)) || | |
(self.remote_test_client.is_some() && name == "remote") || | |
match self.compare_mode { | |
Some(CompareMode::Nll) => name == "compare-mode-nll", | |
Some(CompareMode::Polonius) => name == "compare-mode-polonius", | |
Some(CompareMode::Chalk) => name == "compare-mode-chalk", | |
Some(CompareMode::SplitDwarf) => name == "compare-mode-split-dwarf", | |
Some(CompareMode::SplitDwarfSingle) => name == "compare-mode-split-dwarf-single", | |
None => false, | |
} || | |
(cfg!(debug_assertions) && name == "debug") || | |
match self.debugger { | |
Some(Debugger::Cdb) => name == "cdb", | |
Some(Debugger::Gdb) => name == "gdb", | |
Some(Debugger::Lldb) => name == "lldb", | |
None => false, | |
}; | |
if is_match { ParsedNameDirective::Match } else { ParsedNameDirective::NoMatch } | |
} |
Metadata
Metadata
Assignees
Labels
A-testsuiteArea: The testsuite used to check the correctness of rustcArea: The testsuite used to check the correctness of rustcC-enhancementCategory: An issue proposing an enhancement or a PR with one.Category: An issue proposing an enhancement or a PR with one.