Allow coverage tests to enable llvm-cov --use-color

This commit is contained in:
Zalathar 2023-12-16 13:30:47 +11:00
parent 9ab8c632ee
commit 731ba80a6b
4 changed files with 35 additions and 0 deletions

View File

@ -178,6 +178,9 @@ pub struct TestProps {
// Whether to tell `rustc` to remap the "src base" directory to a fake // Whether to tell `rustc` to remap the "src base" directory to a fake
// directory. // directory.
pub remap_src_base: bool, pub remap_src_base: bool,
/// Extra flags to pass to `llvm-cov` when producing coverage reports.
/// Only used by the "coverage-run" test mode.
pub llvm_cov_flags: Vec<String>,
} }
mod directives { mod directives {
@ -216,6 +219,7 @@ mod directives {
pub const MIR_UNIT_TEST: &'static str = "unit-test"; pub const MIR_UNIT_TEST: &'static str = "unit-test";
pub const REMAP_SRC_BASE: &'static str = "remap-src-base"; pub const REMAP_SRC_BASE: &'static str = "remap-src-base";
pub const COMPARE_OUTPUT_LINES_BY_SUBSET: &'static str = "compare-output-lines-by-subset"; pub const COMPARE_OUTPUT_LINES_BY_SUBSET: &'static str = "compare-output-lines-by-subset";
pub const LLVM_COV_FLAGS: &'static str = "llvm-cov-flags";
// This isn't a real directive, just one that is probably mistyped often // This isn't a real directive, just one that is probably mistyped often
pub const INCORRECT_COMPILER_FLAGS: &'static str = "compiler-flags"; pub const INCORRECT_COMPILER_FLAGS: &'static str = "compiler-flags";
} }
@ -265,6 +269,7 @@ impl TestProps {
stderr_per_bitwidth: false, stderr_per_bitwidth: false,
mir_unit_test: None, mir_unit_test: None,
remap_src_base: false, remap_src_base: false,
llvm_cov_flags: vec![],
} }
} }
@ -495,6 +500,10 @@ impl TestProps {
COMPARE_OUTPUT_LINES_BY_SUBSET, COMPARE_OUTPUT_LINES_BY_SUBSET,
&mut self.compare_output_lines_by_subset, &mut self.compare_output_lines_by_subset,
); );
if let Some(flags) = config.parse_name_value_directive(ln, LLVM_COV_FLAGS) {
self.llvm_cov_flags.extend(split_flags(&flags));
}
}); });
} }

View File

@ -575,6 +575,8 @@ impl<'test> TestCx<'test> {
cmd.arg("--object"); cmd.arg("--object");
cmd.arg(bin); cmd.arg(bin);
} }
cmd.args(&self.props.llvm_cov_flags);
}); });
if !proc_res.status.success() { if !proc_res.status.success() {
self.fatal_proc_rec("llvm-cov show failed!", &proc_res); self.fatal_proc_rec("llvm-cov show failed!", &proc_res);

View File

@ -0,0 +1,13 @@
LL| |// edition: 2021
LL| |// ignore-mode-coverage-map
LL| |// ignore-windows
LL| |// llvm-cov-flags: --use-color
LL| |
LL| |// Verify that telling `llvm-cov` to use colored output actually works.
LL| |// Ignored on Windows because we can't tell the tool to use ANSI escapes.
LL| |
LL| 1|fn main() {
LL| 1| for _i in 0..0 {}
^0 ^0
LL| 1|}

11
tests/coverage/color.rs Normal file
View File

@ -0,0 +1,11 @@
// edition: 2021
// ignore-mode-coverage-map
// ignore-windows
// llvm-cov-flags: --use-color
// Verify that telling `llvm-cov` to use colored output actually works.
// Ignored on Windows because we can't tell the tool to use ANSI escapes.
fn main() {
for _i in 0..0 {}
}