55 "encoding/json"
66 "errors"
77 "fmt"
8+ "io"
89 "os"
910 "os/exec"
1011 "path/filepath"
@@ -25,8 +26,10 @@ const (
2526)
2627
2728var (
28- startPanicRe = regexp .MustCompile (`^panic:` )
29- startRaceRe = regexp .MustCompile (`^WARNING: DATA RACE` )
29+ startPanicRe = regexp .MustCompile (`^panic:` )
30+ startRaceRe = regexp .MustCompile (`^WARNING: DATA RACE` )
31+ buildErr = errors .New ("failed to build test code" )
32+ failedToShowBuildErr = errors .New ("flakeguard failed to show build errors" )
3033)
3134
3235// Runner describes the test run parameters and raw test outputs
@@ -297,6 +300,19 @@ func (r *Runner) parseTestResults(runPrefix string, runCount int) ([]reports.Tes
297300 context := append (precedingLines , followingLines ... )
298301 return nil , fmt .Errorf ("failed to parse json test output near lines:\n %s\n error: %w" , strings .Join (context , "\n " ), err )
299302 }
303+ if entryLine .Action == "build-fail" {
304+ _ , err := file .Seek (0 , 0 )
305+ if err != nil {
306+ return nil , fmt .Errorf ("%w: %w" , failedToShowBuildErr , buildErr )
307+ }
308+ // Print all build errors
309+ buildErrs , err := io .ReadAll (file )
310+ if err != nil {
311+ return nil , fmt .Errorf ("%w: %w" , failedToShowBuildErr , buildErr )
312+ }
313+ fmt .Println (string (buildErrs ))
314+ return nil , buildErr
315+ }
300316
301317 var result * reports.TestResult
302318 if entryLine .Test != "" {
0 commit comments