]> git.lizzy.rs Git - rust.git/blob - src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.abort.txt
Re-use std::sealed::Sealed in os/linux/process.
[rust.git] / src / test / run-make-fulldeps / coverage-reports / expected_show_coverage.abort.txt
1     1|       |#![feature(unwind_attributes)]
2     2|       |#![allow(unused_assignments)]
3     3|       |
4     4|       |#[unwind(aborts)]
5     5|     12|fn might_abort(should_abort: bool) {
6     6|     12|    if should_abort {
7     7|      0|        println!("aborting...");
8     8|      0|        panic!("panics and aborts");
9     9|     12|    } else {
10    10|     12|        println!("Don't Panic");
11    11|     12|    }
12    12|     12|}
13    13|       |
14    14|      1|fn main() -> Result<(), u8> {
15    15|      1|    let mut countdown = 10;
16    16|     11|    while countdown > 0 {
17    17|     10|        if countdown < 5 {
18    18|      4|            might_abort(false);
19    19|      6|        }
20    20|       |        // See discussion (below the `Notes` section) on coverage results for the closing brace.
21    21|     10|        if countdown < 5 { might_abort(false); } // Counts for different regions on one line.
22                                        ^4                     ^6
23    22|       |        // For the following example, the closing brace is the last character on the line.
24    23|       |        // This shows the character after the closing brace is highlighted, even if that next
25    24|       |        // character is a newline.
26    25|     10|        if countdown < 5 { might_abort(false); }
27                                        ^4                     ^6
28    26|     10|        countdown -= 1;
29    27|       |    }
30    28|      1|    Ok(())
31    29|      1|}
32    30|       |
33    31|       |// Notes:
34    32|       |//   1. Compare this program and its coverage results to those of the similar tests
35    33|       |//      `panic_unwind.rs` and `try_error_result.rs`.
36    34|       |//   2. This test confirms the coverage generated when a program includes `TerminatorKind::Abort`.
37    35|       |//   3. The test does not invoke the abort. By executing to a successful completion, the coverage
38    36|       |//      results show where the program did and did not execute.
39    37|       |//   4. If the program actually aborted, the coverage counters would not be saved (which "works as
40    38|       |//      intended"). Coverage results would show no executed coverage regions.
41    39|       |//   6. If `should_abort` is `true` and the program aborts, the program exits with a `132` status
42    40|       |//      (on Linux at least).
43    41|       |
44    42|       |/*
45    43|       |
46    44|       |Expect the following coverage results:
47    45|       |
48    46|       |```text
49    47|       |    16|     11|    while countdown > 0 {
50    48|       |    17|     10|        if countdown < 5 {
51    49|       |    18|      4|            might_abort(false);
52    50|       |    19|      6|        }
53    51|       |```
54    52|       |
55    53|       |This is actually correct.
56    54|       |
57    55|       |The condition `countdown < 5` executed 10 times (10 loop iterations).
58    56|       |
59    57|       |It evaluated to `true` 4 times, and executed the `might_abort()` call.
60    58|       |
61    59|       |It skipped the body of the `might_abort()` call 6 times. If an `if` does not include an explicit
62    60|       |`else`, the coverage implementation injects a counter, at the character immediately after the `if`s
63    61|       |closing brace, to count the "implicit" `else`. This is the only way to capture the coverage of the
64    62|       |non-true condition.
65    63|       |
66    64|       |As another example of why this is important, say the condition was `countdown < 50`, which is always
67    65|       |`true`. In that case, we wouldn't have a test for what happens if `might_abort()` is not called.
68    66|       |The closing brace would have a count of `0`, highlighting the missed coverage.
69    67|       |*/
70