2023-08-15 21:42:33 -05:00
|
|
|
LL| |// Enables `no_coverage` on the entire crate
|
|
|
|
LL| |#![feature(no_coverage)]
|
|
|
|
LL| |
|
|
|
|
LL| |#[no_coverage]
|
|
|
|
LL| |fn do_not_add_coverage_1() {
|
|
|
|
LL| | println!("called but not covered");
|
|
|
|
LL| |}
|
|
|
|
LL| |
|
|
|
|
LL| |fn do_not_add_coverage_2() {
|
|
|
|
LL| | #![no_coverage]
|
|
|
|
LL| | println!("called but not covered");
|
|
|
|
LL| |}
|
|
|
|
LL| |
|
|
|
|
LL| |#[no_coverage]
|
2023-08-16 20:24:56 -05:00
|
|
|
LL| |#[allow(dead_code)]
|
2023-08-15 21:42:33 -05:00
|
|
|
LL| |fn do_not_add_coverage_not_called() {
|
|
|
|
LL| | println!("not called and not covered");
|
|
|
|
LL| |}
|
|
|
|
LL| |
|
|
|
|
LL| 1|fn add_coverage_1() {
|
|
|
|
LL| 1| println!("called and covered");
|
|
|
|
LL| 1|}
|
|
|
|
LL| |
|
|
|
|
LL| 1|fn add_coverage_2() {
|
|
|
|
LL| 1| println!("called and covered");
|
|
|
|
LL| 1|}
|
|
|
|
LL| |
|
2023-08-16 20:24:56 -05:00
|
|
|
LL| |#[allow(dead_code)]
|
2023-08-15 21:42:33 -05:00
|
|
|
LL| 0|fn add_coverage_not_called() {
|
|
|
|
LL| 0| println!("not called but covered");
|
|
|
|
LL| 0|}
|
|
|
|
LL| |
|
|
|
|
LL| |// FIXME: These test-cases illustrate confusing results of nested functions.
|
|
|
|
LL| |// See https://github.com/rust-lang/rust/issues/93319
|
|
|
|
LL| |mod nested_fns {
|
|
|
|
LL| | #[no_coverage]
|
|
|
|
LL| | pub fn outer_not_covered(is_true: bool) {
|
|
|
|
LL| 1| fn inner(is_true: bool) {
|
|
|
|
LL| 1| if is_true {
|
|
|
|
LL| 1| println!("called and covered");
|
|
|
|
LL| 1| } else {
|
|
|
|
LL| 0| println!("absolutely not covered");
|
|
|
|
LL| 0| }
|
|
|
|
LL| 1| }
|
|
|
|
LL| | println!("called but not covered");
|
|
|
|
LL| | inner(is_true);
|
|
|
|
LL| | }
|
|
|
|
LL| |
|
|
|
|
LL| 1| pub fn outer(is_true: bool) {
|
|
|
|
LL| 1| println!("called and covered");
|
|
|
|
LL| 1| inner_not_covered(is_true);
|
|
|
|
LL| 1|
|
|
|
|
LL| 1| #[no_coverage]
|
|
|
|
LL| 1| fn inner_not_covered(is_true: bool) {
|
|
|
|
LL| 1| if is_true {
|
|
|
|
LL| 1| println!("called but not covered");
|
|
|
|
LL| 1| } else {
|
|
|
|
LL| 1| println!("absolutely not covered");
|
|
|
|
LL| 1| }
|
|
|
|
LL| 1| }
|
|
|
|
LL| 1| }
|
|
|
|
LL| |
|
|
|
|
LL| 1| pub fn outer_both_covered(is_true: bool) {
|
|
|
|
LL| 1| println!("called and covered");
|
|
|
|
LL| 1| inner(is_true);
|
|
|
|
LL| 1|
|
|
|
|
LL| 1| fn inner(is_true: bool) {
|
|
|
|
LL| 1| if is_true {
|
|
|
|
LL| 1| println!("called and covered");
|
|
|
|
LL| 1| } else {
|
|
|
|
LL| 0| println!("absolutely not covered");
|
|
|
|
LL| 0| }
|
|
|
|
LL| 1| }
|
|
|
|
LL| 1| }
|
|
|
|
LL| |}
|
|
|
|
LL| |
|
|
|
|
LL| 1|fn main() {
|
|
|
|
LL| 1| let is_true = std::env::args().len() == 1;
|
|
|
|
LL| 1|
|
|
|
|
LL| 1| do_not_add_coverage_1();
|
|
|
|
LL| 1| do_not_add_coverage_2();
|
|
|
|
LL| 1| add_coverage_1();
|
|
|
|
LL| 1| add_coverage_2();
|
|
|
|
LL| 1|
|
|
|
|
LL| 1| nested_fns::outer_not_covered(is_true);
|
|
|
|
LL| 1| nested_fns::outer(is_true);
|
|
|
|
LL| 1| nested_fns::outer_both_covered(is_true);
|
|
|
|
LL| 1|}
|
2021-04-26 23:25:30 -05:00
|
|
|
|