diff --git a/checks/raw/vulnerabilities.go b/checks/raw/vulnerabilities.go index 80d148f3817d..1c93dccf9196 100644 --- a/checks/raw/vulnerabilities.go +++ b/checks/raw/vulnerabilities.go @@ -31,8 +31,8 @@ func Vulnerabilities(c *checker.CheckRequest) (checker.VulnerabilitiesData, erro return checker.VulnerabilitiesData{}, fmt.Errorf("repoClient.ListCommits: %w", err) } - if len(commits) < 1 || commits[0].SHA == "" { - return checker.VulnerabilitiesData{}, fmt.Errorf("%w", errNoCommitFound) + if len(commits) < 1 || allOf(commits, hasEmptySHA) { + return checker.VulnerabilitiesData{}, nil } resp, err := c.VulnerabilitiesClient.HasUnfixedVulnerabilities(c.Ctx, commits[0].SHA) @@ -52,6 +52,21 @@ func Vulnerabilities(c *checker.CheckRequest) (checker.VulnerabilitiesData, erro return checker.VulnerabilitiesData{Vulnerabilities: vulns}, nil } +type predicateOnCommitFn func(clients.Commit) bool + +var hasEmptySHA predicateOnCommitFn = func(c clients.Commit) bool { + return c.SHA == "" +} + +func allOf(commits []clients.Commit, predicate func(clients.Commit) bool) bool { + for _, c := range commits { + if !predicate(c) { + return false + } + } + return true +} + func getVulnerabilities(resp *clients.VulnerabilitiesResponse) []string { ids := make([]string, 0, len(resp.Vulns)) for _, vuln := range resp.Vulns { diff --git a/checks/raw/vulnerabilities_test.go b/checks/raw/vulnerabilities_test.go index bd24c938c147..9de4b316db91 100644 --- a/checks/raw/vulnerabilities_test.go +++ b/checks/raw/vulnerabilities_test.go @@ -54,8 +54,8 @@ func TestVulnerabilities(t *testing.T) { vulnsResponse: clients.VulnerabilitiesResponse{}, }, { - name: "err response", - wantErr: true, + name: "no commits", + wantErr: false, numberofCommits: 0, vulnsResponse: clients.VulnerabilitiesResponse{}, },