Skip to content

Commit bb68c66

Browse files
committed
Fix assertions in coverage-reports test
Update some `C-unwind` bits and then
1 parent 37c85ec commit bb68c66

File tree

4 files changed

+70
-76
lines changed

4 files changed

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

src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.generics.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@
2929
18| 2| println!("BOOM times {}!!!", self.strength);
3030
19| 2| }
3131
------------------
32-
| <generics::Firework<i32> as core::ops::drop::Drop>::drop:
32+
| <generics::Firework<f64> as core::ops::drop::Drop>::drop:
3333
| 17| 1| fn drop(&mut self) {
3434
| 18| 1| println!("BOOM times {}!!!", self.strength);
3535
| 19| 1| }
3636
------------------
37-
| <generics::Firework<f64> as core::ops::drop::Drop>::drop:
37+
| <generics::Firework<i32> as core::ops::drop::Drop>::drop:
3838
| 17| 1| fn drop(&mut self) {
3939
| 18| 1| println!("BOOM times {}!!!", self.strength);
4040
| 19| 1| }

src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.uses_crate.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@
1919
18| 2| println!("used_only_from_bin_crate_generic_function with {:?}", arg);
2020
19| 2|}
2121
------------------
22-
| used_crate::used_only_from_bin_crate_generic_function::<&str>:
22+
| used_crate::used_only_from_bin_crate_generic_function::<&alloc::vec::Vec<i32>>:
2323
| 17| 1|pub fn used_only_from_bin_crate_generic_function<T: Debug>(arg: T) {
2424
| 18| 1| println!("used_only_from_bin_crate_generic_function with {:?}", arg);
2525
| 19| 1|}
2626
------------------
27-
| used_crate::used_only_from_bin_crate_generic_function::<&alloc::vec::Vec<i32>>:
27+
| used_crate::used_only_from_bin_crate_generic_function::<&str>:
2828
| 17| 1|pub fn used_only_from_bin_crate_generic_function<T: Debug>(arg: T) {
2929
| 18| 1| println!("used_only_from_bin_crate_generic_function with {:?}", arg);
3030
| 19| 1|}

src/test/run-make-fulldeps/coverage/abort.rs

+2-7
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,11 @@ fn main() -> Result<(), u8> {
1717
might_abort(false);
1818
}
1919
// See discussion (below the `Notes` section) on coverage results for the closing brace.
20-
if countdown < 5 {
21-
might_abort(false);
22-
}
23-
// Counts for different regions on one line.
20+
if countdown < 5 { might_abort(false); } // Counts for different regions on one line.
2421
// For the following example, the closing brace is the last character on the line.
2522
// This shows the character after the closing brace is highlighted, even if that next
2623
// character is a newline.
27-
if countdown < 5 {
28-
might_abort(false);
29-
}
24+
if countdown < 5 { might_abort(false); }
3025
countdown -= 1;
3126
}
3227
Ok(())

0 commit comments

Comments
 (0)