1| |// Enables `no_coverage` on the entire crate 2| |#![feature(no_coverage)] 3| | 4| |#[no_coverage] 5| |fn do_not_add_coverage_1() { 6| | println!("called but not covered"); 7| |} 8| | 9| |fn do_not_add_coverage_2() { 10| | #![no_coverage] 11| | println!("called but not covered"); 12| |} 13| | 14| |#[no_coverage] 15| |fn do_not_add_coverage_not_called() { 16| | println!("not called and not covered"); 17| |} 18| | 19| 1|fn add_coverage_1() { 20| 1| println!("called and covered"); 21| 1|} 22| | 23| 1|fn add_coverage_2() { 24| 1| println!("called and covered"); 25| 1|} 26| | 27| 0|fn add_coverage_not_called() { 28| 0| println!("not called but covered"); 29| 0|} 30| | 31| |// FIXME: These test-cases illustrate confusing results of nested functions. 32| |// See https://github.com/rust-lang/rust/issues/93319 33| |mod nested_fns { 34| | #[no_coverage] 35| | pub fn outer_not_covered(is_true: bool) { 36| 1| fn inner(is_true: bool) { 37| 1| if is_true { 38| 1| println!("called and covered"); 39| 1| } else { 40| 0| println!("absolutely not covered"); 41| 0| } 42| 1| } 43| | println!("called but not covered"); 44| | inner(is_true); 45| | } 46| | 47| 1| pub fn outer(is_true: bool) { 48| 1| println!("called and covered"); 49| 1| inner_not_covered(is_true); 50| 1| 51| 1| #[no_coverage] 52| 1| fn inner_not_covered(is_true: bool) { 53| 1| if is_true { 54| 1| println!("called but not covered"); 55| 1| } else { 56| 1| println!("absolutely not covered"); 57| 1| } 58| 1| } 59| 1| } 60| | 61| 1| pub fn outer_both_covered(is_true: bool) { 62| 1| println!("called and covered"); 63| 1| inner(is_true); 64| 1| 65| 1| fn inner(is_true: bool) { 66| 1| if is_true { 67| 1| println!("called and covered"); 68| 1| } else { 69| 0| println!("absolutely not covered"); 70| 0| } 71| 1| } 72| 1| } 73| |} 74| | 75| 1|fn main() { 76| 1| let is_true = std::env::args().len() == 1; 77| 1| 78| 1| do_not_add_coverage_1(); 79| 1| do_not_add_coverage_2(); 80| 1| add_coverage_1(); 81| 1| add_coverage_2(); 82| 1| 83| 1| nested_fns::outer_not_covered(is_true); 84| 1| nested_fns::outer(is_true); 85| 1| nested_fns::outer_both_covered(is_true); 86| 1|}