11package reports
22
33import (
4+ "bytes"
45 "encoding/json"
56 "fmt"
67 "os"
8+ "os/exec"
79 "sort"
810 "strings"
911 "time"
@@ -25,6 +27,7 @@ type TestReport struct {
2527 SelectedTests []string `json:"selected_tests,omitempty"`
2628 Results []TestResult `json:"results,omitempty"`
2729 FailedLogsURL string `json:"failed_logs_url,omitempty"`
30+ JSONOutputPaths []string `json:"-"` // go test -json outputs from runs
2831 // MaxPassRatio is the maximum flakiness ratio allowed for a test to be considered not flaky
2932 MaxPassRatio float64 `json:"max_pass_ratio,omitempty"`
3033}
@@ -44,6 +47,25 @@ func (testReport *TestReport) SaveToFile(outputPath string) error {
4447 return nil
4548}
4649
50+ func (tr * TestReport ) PrintGotestsumOutput (format string ) error {
51+ for _ , path := range tr .JSONOutputPaths {
52+ cmdStr := fmt .Sprintf ("cat %q | gotestsum --raw-command --format %q -- cat" , path , format )
53+ cmd := exec .Command ("bash" , "-c" , cmdStr )
54+
55+ var outBuf bytes.Buffer
56+ cmd .Stdout = & outBuf
57+ cmd .Stderr = & outBuf
58+
59+ if err := cmd .Run (); err != nil {
60+ return fmt .Errorf ("gotestsum command failed for file %s: %w\n Output: %s" , path , err , outBuf .String ())
61+ }
62+
63+ fmt .Print (outBuf .String ())
64+ fmt .Println ("---------------------" )
65+ }
66+ return nil
67+ }
68+
4769// GenerateSummaryData generates a summary of a report's test results
4870func (testReport * TestReport ) GenerateSummaryData () {
4971 var runs , testRunCount , passes , fails , skips , panickedTests , racedTests , flakyTests int
0 commit comments