2023-09-05 23:42:57 +01:00
|
|
|
// Enables `coverage(off)` on the entire crate
|
|
|
|
#![feature(coverage_attribute)]
|
2021-04-26 21:25:30 -07:00
|
|
|
|
2023-09-05 23:42:57 +01:00
|
|
|
#[coverage(off)]
|
2021-04-26 21:25:30 -07:00
|
|
|
fn do_not_add_coverage_1() {
|
|
|
|
println!("called but not covered");
|
|
|
|
}
|
|
|
|
|
|
|
|
fn do_not_add_coverage_2() {
|
2023-09-05 23:42:57 +01:00
|
|
|
#![coverage(off)]
|
2021-04-26 21:25:30 -07:00
|
|
|
println!("called but not covered");
|
|
|
|
}
|
|
|
|
|
2023-09-05 23:42:57 +01:00
|
|
|
#[coverage(off)]
|
2023-08-17 11:24:56 +10:00
|
|
|
#[allow(dead_code)]
|
2021-05-03 11:23:40 -07:00
|
|
|
fn do_not_add_coverage_not_called() {
|
|
|
|
println!("not called and not covered");
|
|
|
|
}
|
|
|
|
|
|
|
|
fn add_coverage_1() {
|
|
|
|
println!("called and covered");
|
|
|
|
}
|
|
|
|
|
|
|
|
fn add_coverage_2() {
|
|
|
|
println!("called and covered");
|
|
|
|
}
|
|
|
|
|
2023-08-17 11:24:56 +10:00
|
|
|
#[allow(dead_code)]
|
2021-05-03 11:23:40 -07:00
|
|
|
fn add_coverage_not_called() {
|
|
|
|
println!("not called but covered");
|
|
|
|
}
|
|
|
|
|
2022-01-09 18:14:01 +01:00
|
|
|
// FIXME: These test-cases illustrate confusing results of nested functions.
|
|
|
|
// See https://github.com/rust-lang/rust/issues/93319
|
|
|
|
mod nested_fns {
|
2023-09-05 23:42:57 +01:00
|
|
|
#[coverage(off)]
|
2022-01-09 18:14:01 +01:00
|
|
|
pub fn outer_not_covered(is_true: bool) {
|
|
|
|
fn inner(is_true: bool) {
|
|
|
|
if is_true {
|
|
|
|
println!("called and covered");
|
|
|
|
} else {
|
|
|
|
println!("absolutely not covered");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
println!("called but not covered");
|
|
|
|
inner(is_true);
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn outer(is_true: bool) {
|
|
|
|
println!("called and covered");
|
|
|
|
inner_not_covered(is_true);
|
|
|
|
|
2023-09-05 23:42:57 +01:00
|
|
|
#[coverage(off)]
|
2022-01-09 18:14:01 +01:00
|
|
|
fn inner_not_covered(is_true: bool) {
|
|
|
|
if is_true {
|
|
|
|
println!("called but not covered");
|
|
|
|
} else {
|
|
|
|
println!("absolutely not covered");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn outer_both_covered(is_true: bool) {
|
|
|
|
println!("called and covered");
|
|
|
|
inner(is_true);
|
|
|
|
|
|
|
|
fn inner(is_true: bool) {
|
|
|
|
if is_true {
|
|
|
|
println!("called and covered");
|
|
|
|
} else {
|
|
|
|
println!("absolutely not covered");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-04-26 21:25:30 -07:00
|
|
|
fn main() {
|
2022-01-09 18:14:01 +01:00
|
|
|
let is_true = std::env::args().len() == 1;
|
|
|
|
|
2021-04-26 21:25:30 -07:00
|
|
|
do_not_add_coverage_1();
|
|
|
|
do_not_add_coverage_2();
|
2021-05-03 11:23:40 -07:00
|
|
|
add_coverage_1();
|
|
|
|
add_coverage_2();
|
2022-01-09 18:14:01 +01:00
|
|
|
|
|
|
|
nested_fns::outer_not_covered(is_true);
|
|
|
|
nested_fns::outer(is_true);
|
|
|
|
nested_fns::outer_both_covered(is_true);
|
2021-04-26 21:25:30 -07:00
|
|
|
}
|