rust/tests/run-coverage/no_cov_crate.coverage
Zalathar 72b721f48e Resolve all warnings in run-coverage tests
When one of these tests fails, any compiler warnings will be printed to the
console, which makes it harder to track down the actual reason for failure.

(The outstanding warnings were found by temporarily adding `-Dwarnings` to the
compiler arguments for `RunCoverage` in `src/tools/compiletest/src/runtest.rs`.)
2023-08-26 14:35:34 +10:00

90 lines
3.2 KiB
Plaintext

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]
LL| |#[allow(dead_code)]
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| |
LL| |#[allow(dead_code)]
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|}