in dev/testsreporter/testsreporter.go [34:102]
func Check(ctx context.Context, resultsPath string, options CheckOptions) error {
if options.CodeownersPath == "" {
// set default value for the GitHub CODEOWNERS file
options.CodeownersPath = codeowners.DefaultCodeownersPath
}
if options.DryRun {
fmt.Println("DRY_RUN mode enabled")
}
fmt.Println("path: ", resultsPath)
packageErrors, err := errorsFromTests(resultsPath, options)
if err != nil {
return err
}
ghCli := newGhCli(githubOptions{
DryRun: options.DryRun,
})
aReporter := newReporter(reporterOptions{
GhCli: ghCli,
MaxPreviousLinks: options.MaxPreviousLinks,
Verbose: options.Verbose,
})
if len(packageErrors) > options.MaxTestsReported {
fmt.Printf("Skip creating GitHub issues, hit the maximum number (%d) of tests to be reported. Total failing tests: %d.\n", options.MaxTestsReported, len(packageErrors))
packages, err := packagesFromTests(resultsPath)
if err != nil {
return fmt.Errorf("failed to get packages from results files: %w", err)
}
bError, err := newBuildError(buildErrorOptions{
Serverless: options.Serverless,
ServerlessProject: options.ServerlessProject,
LogsDB: options.LogsDB,
StackVersion: options.StackVersion,
Subscription: options.Subscription,
BuildURL: options.BuildURL,
Packages: packages,
})
if err != nil {
return fmt.Errorf("failed to create the build information error: %w", err)
}
ghIssue, err := createInitialIssue(bError, options.MaxPreviousLinks)
if err != nil {
return fmt.Errorf("failed to create initial issue: %w", err)
}
if err := aReporter.Report(ctx, ghIssue, bError); err != nil {
return err
}
return nil
}
var multiErr error
for _, pError := range packageErrors {
ghIssue, err := createInitialIssue(pError, options.MaxPreviousLinks)
if err != nil {
return fmt.Errorf("failed to create initial issue: %w", err)
}
if err := aReporter.Report(ctx, ghIssue, pError); err != nil {
multiErr = errors.Join(multiErr, err)
}
}
return multiErr
}