func Check()

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
}