Skip to content

Commit 4b35383

Browse files
committed
Replace branch coverage line anonymization test with MC/DC
We don't need the branch coverage version of this test, but we can recycle is to make sure that the MC/DC coverage support works as expected.
1 parent 1135cd3 commit 4b35383

File tree

1 file changed

+48
-52
lines changed
  • src/tools/compiletest/src/runtest

1 file changed

+48
-52
lines changed

src/tools/compiletest/src/runtest/tests.rs

+48-52
Original file line numberDiff line numberDiff line change
@@ -50,72 +50,68 @@ fn normalize_platform_differences() {
5050
}
5151

5252
/// Test for anonymizing line numbers in coverage reports, especially for
53-
/// branch regions.
53+
/// MC/DC regions.
5454
///
55-
/// FIXME(#119681): This test can be removed when we have examples of branch
55+
/// FIXME(#123409): This test can be removed when we have examples of MC/DC
5656
/// coverage in the actual coverage test suite.
5757
#[test]
5858
fn anonymize_coverage_line_numbers() {
5959
let anon = |coverage| TestCx::anonymize_coverage_line_numbers(coverage);
6060

6161
let input = r#"
62-
6| 3|fn print_size<T>() {
63-
7| 3| if std::mem::size_of::<T>() > 4 {
62+
7| 2|fn mcdc_check_neither(a: bool, b: bool) {
63+
8| 2| if a && b {
64+
^0
6465
------------------
65-
| Branch (7:8): [True: 0, False: 1]
66-
| Branch (7:8): [True: 0, False: 1]
67-
| Branch (7:8): [True: 1, False: 0]
66+
|---> MC/DC Decision Region (8:8) to (8:14)
67+
|
68+
| Number of Conditions: 2
69+
| Condition C1 --> (8:8)
70+
| Condition C2 --> (8:13)
71+
|
72+
| Executed MC/DC Test Vectors:
73+
|
74+
| C1, C2 Result
75+
| 1 { F, - = F }
76+
|
77+
| C1-Pair: not covered
78+
| C2-Pair: not covered
79+
| MC/DC Coverage for Decision: 0.00%
80+
|
6881
------------------
69-
8| 1| println!("size > 4");
82+
9| 0| say("a and b");
83+
10| 2| } else {
84+
11| 2| say("not both");
85+
12| 2| }
86+
13| 2|}
7087
"#;
7188

7289
let expected = r#"
73-
LL| 3|fn print_size<T>() {
74-
LL| 3| if std::mem::size_of::<T>() > 4 {
90+
LL| 2|fn mcdc_check_neither(a: bool, b: bool) {
91+
LL| 2| if a && b {
92+
^0
7593
------------------
76-
| Branch (LL:8): [True: 0, False: 1]
77-
| Branch (LL:8): [True: 0, False: 1]
78-
| Branch (LL:8): [True: 1, False: 0]
79-
------------------
80-
LL| 1| println!("size > 4");
81-
"#;
82-
83-
assert_eq!(anon(input), expected);
84-
85-
//////////
86-
87-
let input = r#"
88-
12| 3|}
89-
------------------
90-
| branch_generics::print_size::<()>:
91-
| 6| 1|fn print_size<T>() {
92-
| 7| 1| if std::mem::size_of::<T>() > 4 {
93-
| ------------------
94-
| | Branch (7:8): [True: 0, False: 1]
95-
| ------------------
96-
| 8| 0| println!("size > 4");
97-
| 9| 1| } else {
98-
| 10| 1| println!("size <= 4");
99-
| 11| 1| }
100-
| 12| 1|}
101-
------------------
102-
"#;
103-
104-
let expected = r#"
105-
LL| 3|}
106-
------------------
107-
| branch_generics::print_size::<()>:
108-
| LL| 1|fn print_size<T>() {
109-
| LL| 1| if std::mem::size_of::<T>() > 4 {
110-
| ------------------
111-
| | Branch (LL:8): [True: 0, False: 1]
112-
| ------------------
113-
| LL| 0| println!("size > 4");
114-
| LL| 1| } else {
115-
| LL| 1| println!("size <= 4");
116-
| LL| 1| }
117-
| LL| 1|}
94+
|---> MC/DC Decision Region (LL:8) to (LL:14)
95+
|
96+
| Number of Conditions: 2
97+
| Condition C1 --> (LL:8)
98+
| Condition C2 --> (LL:13)
99+
|
100+
| Executed MC/DC Test Vectors:
101+
|
102+
| C1, C2 Result
103+
| 1 { F, - = F }
104+
|
105+
| C1-Pair: not covered
106+
| C2-Pair: not covered
107+
| MC/DC Coverage for Decision: 0.00%
108+
|
118109
------------------
110+
LL| 0| say("a and b");
111+
LL| 2| } else {
112+
LL| 2| say("not both");
113+
LL| 2| }
114+
LL| 2|}
119115
"#;
120116

121117
assert_eq!(anon(input), expected);

0 commit comments

Comments
 (0)