@@ -26,6 +26,61 @@ type TestReport struct {
2626 MaxPassRatio float64 `json:"max_pass_ratio,omitempty"`
2727}
2828
29+ // GenerateSummaryData generates a summary of a report's test results
30+ func (testReport * TestReport ) GenerateSummaryData () {
31+ var runs , mostRuns , passes , fails , skips , panickedTests , racedTests , flakyTests , skippedTests int
32+
33+ for _ , result := range testReport .Results {
34+ runs += result .Runs
35+ if result .Runs > mostRuns {
36+ mostRuns = result .Runs
37+ }
38+ passes += result .Successes
39+ fails += result .Failures
40+ skips += result .Skips
41+
42+ // Count tests that were entirely skipped
43+ if result .Runs == 0 && result .Skipped {
44+ skippedTests ++
45+ }
46+
47+ if result .Panic {
48+ panickedTests ++
49+ flakyTests ++
50+ } else if result .Race {
51+ racedTests ++
52+ flakyTests ++
53+ } else if ! result .Skipped && result .Runs > 0 && result .PassRatio < testReport .MaxPassRatio {
54+ flakyTests ++
55+ }
56+ }
57+
58+ // Calculate the raw pass ratio
59+ passRatio := passRatio (passes , runs )
60+
61+ // Calculate the raw flake ratio
62+ totalTests := len (testReport .Results )
63+ flakeRatio := flakeRatio (flakyTests , totalTests )
64+
65+ passRatioStr := formatRatio (passRatio )
66+ flakeTestRatioStr := formatRatio (flakeRatio )
67+
68+ testReport .SummaryData = & SummaryData {
69+ UniqueTestsRun : totalTests ,
70+ TestRunCount : mostRuns ,
71+ PanickedTests : panickedTests ,
72+ RacedTests : racedTests ,
73+ FlakyTests : flakyTests ,
74+ FlakyTestPercent : flakeTestRatioStr ,
75+
76+ TotalRuns : runs ,
77+ PassedRuns : passes ,
78+ FailedRuns : fails ,
79+ SkippedRuns : skips ,
80+ PassPercent : passRatioStr ,
81+ }
82+ }
83+
2984// TestResult contains the results and outputs of a single test
3085type TestResult struct {
3186 // ReportID is the ID of the report this test result belongs to
@@ -129,61 +184,6 @@ type SplunkTestResultEvent struct {
129184
130185// Data Processing Functions
131186
132- // GenerateSummaryData generates a summary of a report's test results
133- func GenerateSummaryData (testReport * TestReport ) {
134- var runs , mostRuns , passes , fails , skips , panickedTests , racedTests , flakyTests , skippedTests int
135-
136- for _ , result := range testReport .Results {
137- runs += result .Runs
138- if result .Runs > mostRuns {
139- mostRuns = result .Runs
140- }
141- passes += result .Successes
142- fails += result .Failures
143- skips += result .Skips
144-
145- // Count tests that were entirely skipped
146- if result .Runs == 0 && result .Skipped {
147- skippedTests ++
148- }
149-
150- if result .Panic {
151- panickedTests ++
152- flakyTests ++
153- } else if result .Race {
154- racedTests ++
155- flakyTests ++
156- } else if ! result .Skipped && result .Runs > 0 && result .PassRatio < testReport .MaxPassRatio {
157- flakyTests ++
158- }
159- }
160-
161- // Calculate the raw pass ratio
162- passRatio := passRatio (passes , runs )
163-
164- // Calculate the raw flake ratio
165- totalTests := len (testReport .Results )
166- flakeRatio := flakeRatio (flakyTests , totalTests )
167-
168- passRatioStr := formatRatio (passRatio )
169- flakeTestRatioStr := formatRatio (flakeRatio )
170-
171- testReport .SummaryData = & SummaryData {
172- UniqueTestsRun : totalTests ,
173- TestRunCount : mostRuns ,
174- PanickedTests : panickedTests ,
175- RacedTests : racedTests ,
176- FlakyTests : flakyTests ,
177- FlakyTestPercent : flakeTestRatioStr ,
178-
179- TotalRuns : runs ,
180- PassedRuns : passes ,
181- FailedRuns : fails ,
182- SkippedRuns : skips ,
183- PassPercent : passRatioStr ,
184- }
185- }
186-
187187func FilterResults (report * TestReport , maxPassRatio float64 ) * TestReport {
188188 filteredResults := FilterTests (report .Results , func (tr TestResult ) bool {
189189 return ! tr .Skipped && tr .PassRatio < maxPassRatio
0 commit comments