mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-28 17:53:56 +00:00
Move the extra directives for Mode::CoverageRun
into iter_header
When these extra directives were ported over as part of #112300, it made sense to introduce `iter_header_extra` and pass them in as an extra argument. But now that #120881 has added a `mode` parameter to `iter_header` for its own purposes, it's slightly simpler to move the coverage special-case code directly into `iter_header` as well. This lets us get rid of `iter_header_extra`.
This commit is contained in:
parent
488ffaa726
commit
c521d7fa2e
@ -672,17 +672,6 @@ pub fn line_directive<'line>(
|
||||
}
|
||||
}
|
||||
|
||||
fn iter_header<R: Read>(
|
||||
mode: Mode,
|
||||
suite: &str,
|
||||
poisoned: &mut bool,
|
||||
testfile: &Path,
|
||||
rdr: R,
|
||||
it: &mut dyn FnMut(HeaderLine<'_>),
|
||||
) {
|
||||
iter_header_extra(mode, suite, poisoned, testfile, rdr, &[], it)
|
||||
}
|
||||
|
||||
/// This is generated by collecting directives from ui tests and then extracting their directive
|
||||
/// names. This is **not** an exhaustive list of all possible directives. Instead, this is a
|
||||
/// best-effort approximation for diagnostics.
|
||||
@ -813,23 +802,37 @@ struct HeaderLine<'ln> {
|
||||
line_number: usize,
|
||||
}
|
||||
|
||||
fn iter_header_extra(
|
||||
fn iter_header(
|
||||
mode: Mode,
|
||||
suite: &str,
|
||||
poisoned: &mut bool,
|
||||
testfile: &Path,
|
||||
rdr: impl Read,
|
||||
extra_directives: &[&str],
|
||||
it: &mut dyn FnMut(HeaderLine<'_>),
|
||||
) {
|
||||
if testfile.is_dir() {
|
||||
return;
|
||||
}
|
||||
|
||||
// Process any extra directives supplied by the caller (e.g. because they
|
||||
// are implied by the test mode), with a dummy line number of 0.
|
||||
for directive in extra_directives {
|
||||
it(HeaderLine { header_revision: None, original_line: "", directive, line_number: 0 });
|
||||
// Coverage tests in coverage-run mode always have these extra directives,
|
||||
// without needing to specify them manually in every test file.
|
||||
// (Some of the comments below have been copied over from the old
|
||||
// `tests/run-make/coverage-reports/Makefile`, which no longer exists.)
|
||||
if mode == Mode::CoverageRun {
|
||||
let extra_directives: &[&str] = &[
|
||||
"needs-profiler-support",
|
||||
// FIXME(mati865): MinGW GCC miscompiles compiler-rt profiling library but with Clang it works
|
||||
// properly. Since we only have GCC on the CI ignore the test for now.
|
||||
"ignore-windows-gnu",
|
||||
// FIXME(pietroalbini): this test currently does not work on cross-compiled
|
||||
// targets because remote-test is not capable of sending back the *.profraw
|
||||
// files generated by the LLVM instrumentation.
|
||||
"ignore-cross-compile",
|
||||
];
|
||||
// Process the extra implied directives, with a dummy line number of 0.
|
||||
for directive in extra_directives {
|
||||
it(HeaderLine { header_revision: None, original_line: "", directive, line_number: 0 });
|
||||
}
|
||||
}
|
||||
|
||||
let comment = if testfile.extension().is_some_and(|e| e == "rs") {
|
||||
@ -1162,35 +1165,14 @@ pub fn make_test_description<R: Read>(
|
||||
let mut ignore_message = None;
|
||||
let mut should_fail = false;
|
||||
|
||||
let extra_directives: &[&str] = match config.mode {
|
||||
// The coverage-run tests are treated as having these extra directives,
|
||||
// without needing to specify them manually in every test file.
|
||||
// (Some of the comments below have been copied over from
|
||||
// `tests/run-make/coverage-reports/Makefile`, which no longer exists.)
|
||||
Mode::CoverageRun => {
|
||||
&[
|
||||
"needs-profiler-support",
|
||||
// FIXME(mati865): MinGW GCC miscompiles compiler-rt profiling library but with Clang it works
|
||||
// properly. Since we only have GCC on the CI ignore the test for now.
|
||||
"ignore-windows-gnu",
|
||||
// FIXME(pietroalbini): this test currently does not work on cross-compiled
|
||||
// targets because remote-test is not capable of sending back the *.profraw
|
||||
// files generated by the LLVM instrumentation.
|
||||
"ignore-cross-compile",
|
||||
]
|
||||
}
|
||||
_ => &[],
|
||||
};
|
||||
|
||||
let mut local_poisoned = false;
|
||||
|
||||
iter_header_extra(
|
||||
iter_header(
|
||||
config.mode,
|
||||
&config.suite,
|
||||
&mut local_poisoned,
|
||||
path,
|
||||
src,
|
||||
extra_directives,
|
||||
&mut |HeaderLine { header_revision, original_line, directive: ln, line_number }| {
|
||||
if header_revision.is_some() && header_revision != cfg {
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user