@@ -237,6 +237,12 @@ func execTestTerraformVCR(prNumber, mmCommitSha, buildID, projectID, buildStep,
237237 return nil
238238 }
239239
240+ if hasBuildFailures , err := handleBuildFailures (prNumber , buildID , buildStatusTargetURL , mmCommitSha , replayingResult , vcr .Replaying , gh ); err != nil {
241+ return fmt .Errorf ("error handling build failures: %w" , err )
242+ } else if hasBuildFailures {
243+ return nil
244+ }
245+
240246 var servicesArr []string
241247 for s := range services {
242248 servicesArr = append (servicesArr , s )
@@ -297,6 +303,12 @@ func execTestTerraformVCR(prNumber, mmCommitSha, buildID, projectID, buildStep,
297303 return nil
298304 }
299305
306+ if hasBuildFailures , err := handleBuildFailures (prNumber , buildID , buildStatusTargetURL , mmCommitSha , recordingResult , vcr .Recording , gh ); err != nil {
307+ return fmt .Errorf ("error handling build failures: %w" , err )
308+ } else if hasBuildFailures {
309+ return nil
310+ }
311+
300312 replayingAfterRecordingResult := vcr.Result {}
301313 var replayingAfterRecordingErr error
302314 if len (recordingResult .PassedTests ) > 0 {
@@ -397,10 +409,11 @@ func notRunTests(gaDiff, betaDiff string, result vcr.Result) ([]string, []string
397409
398410func subtestResult (original vcr.Result ) vcr.Result {
399411 return vcr.Result {
400- PassedTests : excludeCompoundTests (original .PassedTests , original .PassedSubtests ),
401- FailedTests : excludeCompoundTests (original .FailedTests , original .FailedSubtests ),
402- SkippedTests : excludeCompoundTests (original .SkippedTests , original .SkippedSubtests ),
403- Panics : original .Panics ,
412+ PassedTests : excludeCompoundTests (original .PassedTests , original .PassedSubtests ),
413+ FailedTests : excludeCompoundTests (original .FailedTests , original .FailedSubtests ),
414+ SkippedTests : excludeCompoundTests (original .SkippedTests , original .SkippedSubtests ),
415+ Panics : original .Panics ,
416+ BuildFailures : original .BuildFailures ,
404417 }
405418}
406419
@@ -508,6 +521,26 @@ View the [build log](https://storage.cloud.google.com/ci-vcr-logs/beta/refs/head
508521 return false , nil
509522}
510523
524+ func handleBuildFailures (prNumber , buildID , buildStatusTargetURL , mmCommitSha string , result vcr.Result , mode vcr.Mode , gh GithubClient ) (bool , error ) {
525+ if len (result .BuildFailures ) > 0 {
526+ comment := color ("red" , fmt .Sprintf ("The provider failed to build during VCR tests in %s mode\n " , mode .Upper ()))
527+ comment += "The following packages failed to build:\n "
528+ for _ , pkg := range result .BuildFailures {
529+ comment += fmt .Sprintf ("- `%s`\n " , pkg )
530+ }
531+ comment += fmt .Sprintf (`Please fix the compilation errors to complete your PR.
532+ View the [build log](https://storage.cloud.google.com/ci-vcr-logs/beta/refs/heads/auto-pr-%s/artifacts/%s/build-log/%s_test.log)` , prNumber , buildID , mode .Lower ())
533+ if err := gh .PostComment (prNumber , comment ); err != nil {
534+ return true , fmt .Errorf ("error posting comment: %v" , err )
535+ }
536+ if err := gh .PostBuildStatus (prNumber , "VCR-test" , "failure" , buildStatusTargetURL , mmCommitSha ); err != nil {
537+ return true , fmt .Errorf ("error posting failure status: %v" , err )
538+ }
539+ return true , nil
540+ }
541+ return false , nil
542+ }
543+
511544func init () {
512545 rootCmd .AddCommand (testTerraformVCRCmd )
513546}
0 commit comments