diff --git a/checks/evaluation/pinned_dependencies.go b/checks/evaluation/pinned_dependencies.go index a8e98be8e17..c05038fa7ec 100644 --- a/checks/evaluation/pinned_dependencies.go +++ b/checks/evaluation/pinned_dependencies.go @@ -133,6 +133,12 @@ func PinningDependencies(name string, c *checker.CheckRequest, return checker.CreateRuntimeErrorResult(name, err) } + // Go installs. + goScore, err := createReturnForIsGoInstallPinned(pr, dl) + if err != nil { + return checker.CreateRuntimeErrorResult(name, err) + } + // Scores may be inconclusive. actionScore = maxScore(0, actionScore) dockerFromScore = maxScore(0, dockerFromScore) @@ -140,9 +146,10 @@ func PinningDependencies(name string, c *checker.CheckRequest, scriptScore = maxScore(0, scriptScore) pipScore = maxScore(0, pipScore) npmScore = maxScore(0, npmScore) + goScore = maxScore(0, goScore) score := checker.AggregateScores(actionScore, dockerFromScore, - dockerDownloadScore, scriptScore, pipScore, npmScore) + dockerDownloadScore, scriptScore, pipScore, npmScore, goScore) if score == checker.MaxResultScore { return checker.CreateMaxScoreResult(name, "all dependencies are pinned") @@ -276,6 +283,15 @@ func createReturnForIsNpmInstallPinned(pr map[checker.DependencyUseType]pinnedRe dl) } +// Create the result for go install commands. +func createReturnForIsGoInstallPinned(pr map[checker.DependencyUseType]pinnedResult, + dl checker.DetailLogger, +) (int, error) { + return createReturnValues(pr, checker.DependencyUseTypeGoCommand, + "go installs are pinned", + dl) +} + func createReturnValues(pr map[checker.DependencyUseType]pinnedResult, t checker.DependencyUseType, infoMsg string, dl checker.DetailLogger, diff --git a/checks/evaluation/pinned_dependencies_test.go b/checks/evaluation/pinned_dependencies_test.go index 5e3e369a314..0a40c0da9a0 100644 --- a/checks/evaluation/pinned_dependencies_test.go +++ b/checks/evaluation/pinned_dependencies_test.go @@ -111,7 +111,7 @@ func Test_PinningDependencies(t *testing.T) { Error: nil, Score: checker.MaxResultScore, NumberOfWarn: 0, - NumberOfInfo: 7, + NumberOfInfo: 8, NumberOfDebug: 1, }, }, @@ -130,9 +130,9 @@ func Test_PinningDependencies(t *testing.T) { }, expected: scut.TestReturn{ Error: nil, - Score: 6, + Score: 7, NumberOfWarn: 1, - NumberOfInfo: 5, + NumberOfInfo: 6, NumberOfDebug: 1, }, }, @@ -158,9 +158,9 @@ func Test_PinningDependencies(t *testing.T) { }, expected: scut.TestReturn{ Error: nil, - Score: 3, + Score: 4, NumberOfWarn: 3, - NumberOfInfo: 3, + NumberOfInfo: 4, NumberOfDebug: 1, }, }, @@ -176,7 +176,7 @@ func Test_PinningDependencies(t *testing.T) { Error: nil, Score: 8, NumberOfWarn: 1, - NumberOfInfo: 6, + NumberOfInfo: 7, NumberOfDebug: 0, }, }, @@ -193,7 +193,7 @@ func Test_PinningDependencies(t *testing.T) { Error: nil, Score: 10, NumberOfWarn: 0, - NumberOfInfo: 7, + NumberOfInfo: 8, NumberOfDebug: 1, }, }, @@ -203,7 +203,7 @@ func Test_PinningDependencies(t *testing.T) { Error: nil, Score: 10, NumberOfWarn: 0, - NumberOfInfo: 7, + NumberOfInfo: 8, NumberOfDebug: 0, }, }, @@ -229,9 +229,9 @@ func Test_PinningDependencies(t *testing.T) { }, expected: scut.TestReturn{ Error: nil, - Score: 3, + Score: 4, NumberOfWarn: 3, - NumberOfInfo: 3, + NumberOfInfo: 4, NumberOfDebug: 1, }, }, @@ -247,7 +247,23 @@ func Test_PinningDependencies(t *testing.T) { Error: nil, Score: 8, NumberOfWarn: 1, - NumberOfInfo: 6, + NumberOfInfo: 7, + NumberOfDebug: 0, + }, + }, + { + name: "unpinned go install", + dependencies: []checker.Dependency{ + { + Location: &checker.File{}, + Type: checker.DependencyUseTypeGoCommand, + }, + }, + expected: scut.TestReturn{ + Error: nil, + Score: 8, + NumberOfWarn: 1, + NumberOfInfo: 7, NumberOfDebug: 0, }, }, diff --git a/e2e/pinned_dependencies_test.go b/e2e/pinned_dependencies_test.go index 8253abf49cc..c49357d337e 100644 --- a/e2e/pinned_dependencies_test.go +++ b/e2e/pinned_dependencies_test.go @@ -49,9 +49,9 @@ var _ = Describe("E2E TEST:"+checks.CheckPinnedDependencies, func() { } expected := scut.TestReturn{ Error: nil, - Score: 3, + Score: 4, NumberOfWarn: 139, - NumberOfInfo: 2, + NumberOfInfo: 3, NumberOfDebug: 0, } result := checks.PinningDependencies(&req) @@ -74,9 +74,9 @@ var _ = Describe("E2E TEST:"+checks.CheckPinnedDependencies, func() { } expected := scut.TestReturn{ Error: nil, - Score: 3, + Score: 4, NumberOfWarn: 139, - NumberOfInfo: 2, + NumberOfInfo: 3, NumberOfDebug: 0, } result := checks.PinningDependencies(&req) @@ -110,9 +110,9 @@ var _ = Describe("E2E TEST:"+checks.CheckPinnedDependencies, func() { } expected := scut.TestReturn{ Error: nil, - Score: 3, + Score: 4, NumberOfWarn: 139, - NumberOfInfo: 2, + NumberOfInfo: 3, NumberOfDebug: 0, } result := checks.PinningDependencies(&req)