@@ -27,17 +27,18 @@ func TestGenerateSummaryData(t *testing.T) {
2727 MaxPassRatio : 1.0 ,
2828 },
2929 expected : & SummaryData {
30- UniqueTestsRun : 2 ,
31- TestRunCount : 10 ,
32- PanickedTests : 0 ,
33- RacedTests : 0 ,
34- FlakyTests : 0 ,
35- FlakyTestPercent : "0%" , // no flaky tests
36- TotalRuns : 15 ,
37- PassedRuns : 15 ,
38- FailedRuns : 0 ,
39- SkippedRuns : 0 ,
40- PassPercent : "100%" ,
30+ UniqueTestsRun : 2 ,
31+ TestRunCount : 10 ,
32+ PanickedTests : 0 ,
33+ RacedTests : 0 ,
34+ FlakyTests : 0 ,
35+ FlakyTestPercent : "0%" , // no flaky tests
36+ TotalRuns : 15 ,
37+ PassedRuns : 15 ,
38+ FailedRuns : 0 ,
39+ SkippedRuns : 0 ,
40+ PassPercent : "100%" ,
41+ UniqueSkippedTestCount : 0 ,
4142 },
4243 },
4344 {
@@ -60,10 +61,11 @@ func TestGenerateSummaryData(t *testing.T) {
6061 FlakyTestPercent : "66.6667%" ,
6162 TotalRuns : 19 ,
6263 PassedRuns : 15 ,
63- FailedRuns : 4 , // total failures
64+ FailedRuns : 4 ,
6465 SkippedRuns : 0 ,
6566 // 15/19 => ~78.947...
66- PassPercent : "78.9474%" ,
67+ PassPercent : "78.9474%" ,
68+ UniqueSkippedTestCount : 0 ,
6769 },
6870 },
6971 {
@@ -89,7 +91,8 @@ func TestGenerateSummaryData(t *testing.T) {
8991 FailedRuns : 1 ,
9092 SkippedRuns : 0 ,
9193 // 17/18 => ~94.444...
92- PassPercent : "94.4444%" ,
94+ PassPercent : "94.4444%" ,
95+ UniqueSkippedTestCount : 0 ,
9396 },
9497 },
9598 {
@@ -104,70 +107,74 @@ func TestGenerateSummaryData(t *testing.T) {
104107 PanickedTests : 0 ,
105108 RacedTests : 0 ,
106109 FlakyTests : 0 ,
107- FlakyTestPercent : "0%" , // no tests => 0%
110+ FlakyTestPercent : "0%" ,
108111 TotalRuns : 0 ,
109112 PassedRuns : 0 ,
110113 FailedRuns : 0 ,
111114 SkippedRuns : 0 ,
112115 // With zero runs, we default passRatio to "100%"
113- PassPercent : "100%" ,
116+ PassPercent : "100%" ,
117+ UniqueSkippedTestCount : 0 ,
114118 },
115119 },
116120 {
117121 name : "Skipped tests included in total but not executed" ,
118122 testReport : & TestReport {
119123 Results : []TestResult {
124+ // Skipped test with no runs should be counted in UniqueSkippedTestCount.
120125 {PassRatio : - 1.0 , Runs : 0 , Successes : 0 , Skips : 1 , Skipped : true },
121126 {PassRatio : 0.7 , Runs : 10 , Successes : 7 , Failures : 3 },
122127 },
123128 MaxPassRatio : 0.8 ,
124129 },
125130 expected : & SummaryData {
126- UniqueTestsRun : 2 ,
127- TestRunCount : 10 ,
128- PanickedTests : 0 ,
129- RacedTests : 0 ,
130- FlakyTests : 1 , // second test has ratio=0.7 => "flaky"
131- FlakyTestPercent : "50%" , // 1 out of 2 => 50%
132- TotalRuns : 10 ,
133- PassedRuns : 7 ,
134- FailedRuns : 3 ,
135- SkippedRuns : 1 , // from first test
136- PassPercent : "70%" ,
131+ UniqueTestsRun : 2 ,
132+ TestRunCount : 10 ,
133+ PanickedTests : 0 ,
134+ RacedTests : 0 ,
135+ FlakyTests : 1 ,
136+ FlakyTestPercent : "50%" ,
137+ TotalRuns : 10 ,
138+ PassedRuns : 7 ,
139+ FailedRuns : 3 ,
140+ SkippedRuns : 1 ,
141+ PassPercent : "70%" ,
142+ UniqueSkippedTestCount : 1 ,
137143 },
138144 },
139145 {
140146 name : "Mixed skipped and executed tests" ,
141147 testReport : & TestReport {
142148 Results : []TestResult {
149+ // Skipped test should be counted for UniqueSkippedTestCount.
143150 {PassRatio : - 1.0 , Runs : 0 , Successes : 0 , Skips : 1 , Skipped : true },
144151 {PassRatio : 0.9 , Runs : 10 , Successes : 9 , Failures : 1 },
145152 {PassRatio : 0.5 , Runs : 4 , Successes : 2 , Failures : 2 },
146153 },
147154 MaxPassRatio : 0.85 ,
148155 },
149156 expected : & SummaryData {
150- UniqueTestsRun : 3 ,
151- TestRunCount : 10 ,
152- PanickedTests : 0 ,
153- RacedTests : 0 ,
154- FlakyTests : 1 , // last test has ratio=0.5 => "flaky"
155- FlakyTestPercent : "33.3333%" , // 1 out of 3 => 33.333...
156- TotalRuns : 14 , // 10 + 4
157- PassedRuns : 11 , // 9 + 2
158- FailedRuns : 3 , // 1 + 2
159- SkippedRuns : 1 , // from first test
160- // 11/14 => 78.5714...
161- PassPercent : "78.5714%" ,
157+ UniqueTestsRun : 3 ,
158+ TestRunCount : 10 ,
159+ PanickedTests : 0 ,
160+ RacedTests : 0 ,
161+ FlakyTests : 1 ,
162+ FlakyTestPercent : " 33.3333%" ,
163+ TotalRuns : 14 ,
164+ PassedRuns : 11 ,
165+ FailedRuns : 3 ,
166+ SkippedRuns : 1 ,
167+ PassPercent : " 78.5714%" ,
168+ UniqueSkippedTestCount : 1 ,
162169 },
163170 },
164171 {
165172 name : "Tiny flake ratio that is exactly 0.01%" ,
166173 testReport : & TestReport {
167174 Results : func () []TestResult {
168175 // 9,999 total:
169- // - 9,998 stable => pass= 1.0
170- // - 1 flaky => pass= 0.5
176+ // - 9,998 stable tests => pass ratio = 1.0
177+ // - 1 flaky test => pass ratio = 0.5
171178 const total = 9999
172179 tests := make ([]TestResult , total )
173180 for i := 0 ; i < total - 1 ; i ++ {
@@ -178,7 +185,7 @@ func TestGenerateSummaryData(t *testing.T) {
178185 }
179186 }
180187 tests [total - 1 ] = TestResult {
181- PassRatio : 0.5 , // 1 success, 1 fail
188+ PassRatio : 0.5 , // 1 success, 1 failure
182189 Runs : 2 ,
183190 Successes : 1 ,
184191 Failures : 1 ,
@@ -188,17 +195,47 @@ func TestGenerateSummaryData(t *testing.T) {
188195 MaxPassRatio : 1.0 ,
189196 },
190197 expected : & SummaryData {
191- UniqueTestsRun : 9999 ,
192- TestRunCount : 10 ,
193- PanickedTests : 0 ,
194- RacedTests : 0 ,
195- FlakyTests : 1 ,
196- FlakyTestPercent : "0.01%" ,
197- TotalRuns : (9998 * 10 ) + 2 ,
198- PassedRuns : (9998 * 10 ) + 1 ,
199- FailedRuns : 1 ,
200- SkippedRuns : 0 ,
201- PassPercent : "99.999%" ,
198+ UniqueTestsRun : 9999 ,
199+ TestRunCount : 10 ,
200+ PanickedTests : 0 ,
201+ RacedTests : 0 ,
202+ FlakyTests : 1 ,
203+ FlakyTestPercent : "0.01%" ,
204+ TotalRuns : (9998 * 10 ) + 2 ,
205+ PassedRuns : (9998 * 10 ) + 1 ,
206+ FailedRuns : 1 ,
207+ SkippedRuns : 0 ,
208+ PassPercent : "99.999%" ,
209+ UniqueSkippedTestCount : 0 ,
210+ },
211+ },
212+ {
213+ name : "Duplicate skipped tests" ,
214+ testReport : & TestReport {
215+ Results : []TestResult {
216+ // Two entries for "TestA" should count as one unique skipped test.
217+ {TestName : "TestA" , PassRatio : - 1.0 , Runs : 0 , Skips : 1 , Skipped : true },
218+ {TestName : "TestA" , PassRatio : - 1.0 , Runs : 0 , Skips : 1 , Skipped : true },
219+ // A different test "TestB"
220+ {TestName : "TestB" , PassRatio : - 1.0 , Runs : 0 , Skips : 1 , Skipped : true },
221+ // This test was executed so it should not count as skipped.
222+ {TestName : "TestC" , PassRatio : 1.0 , Runs : 5 , Successes : 5 , Skipped : false },
223+ },
224+ MaxPassRatio : 1.0 ,
225+ },
226+ expected : & SummaryData {
227+ UniqueTestsRun : 4 ,
228+ TestRunCount : 5 ,
229+ PanickedTests : 0 ,
230+ RacedTests : 0 ,
231+ FlakyTests : 0 ,
232+ FlakyTestPercent : "0%" ,
233+ TotalRuns : 5 ,
234+ PassedRuns : 5 ,
235+ FailedRuns : 0 ,
236+ SkippedRuns : 3 , // Sum of Skips for all skipped tests.
237+ PassPercent : "100%" ,
238+ UniqueSkippedTestCount : 2 , // Only "TestA" and "TestB" count.
202239 },
203240 },
204241 }
0 commit comments