From 877ada48b731634dd7c740648fc6e45987123050 Mon Sep 17 00:00:00 2001 From: Spencer Schrock Date: Tue, 11 Oct 2022 10:08:42 -0700 Subject: [PATCH] Return unknown commit SHA for local repos. Signed-off-by: Spencer Schrock --- pkg/scorecard.go | 7 +++++-- pkg/scorecard_test.go | 46 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/pkg/scorecard.go b/pkg/scorecard.go index 1ab89a0f0ae..ae1eacc0237 100644 --- a/pkg/scorecard.go +++ b/pkg/scorecard.go @@ -66,8 +66,11 @@ func runEnabledChecks(ctx context.Context, func getRepoCommitHash(r clients.RepoClient) (string, error) { commits, err := r.ListCommits() - - if err != nil && !errors.Is(err, clients.ErrUnsupportedFeature) { + if err != nil { + // allow --local repos to still process + if errors.Is(err, clients.ErrUnsupportedFeature) { + return "unknown", nil + } return "", sce.WithMessage(sce.ErrScorecardInternal, fmt.Sprintf("ListCommits:%v", err.Error())) } diff --git a/pkg/scorecard_test.go b/pkg/scorecard_test.go index a06f6413821..0c4f283b107 100644 --- a/pkg/scorecard_test.go +++ b/pkg/scorecard_test.go @@ -21,7 +21,9 @@ import ( "github.com/golang/mock/gomock" "github.com/ossf/scorecard/v4/clients" + "github.com/ossf/scorecard/v4/clients/localdir" mockrepo "github.com/ossf/scorecard/v4/clients/mockclients" + "github.com/ossf/scorecard/v4/log" ) func Test_getRepoCommitHash(t *testing.T) { @@ -72,6 +74,50 @@ func Test_getRepoCommitHash(t *testing.T) { } } +func Test_getRepoCommitHashLocal(t *testing.T) { + t.Parallel() + tests := []struct { + name string + path string + want string + wantErr bool + }{ + { + name: "local directory", + path: "testdata", + want: "unknown", + wantErr: false, + }, + } + + for _, tt := range tests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + logger := log.NewLogger(log.DebugLevel) + localDirClient := localdir.CreateLocalDirClient(context.Background(), logger) + localRepo, err := localdir.MakeLocalDirRepo("testdata") + if err != nil { + t.Errorf("MakeLocalDirRepo: %v", err) + return + } + if err := localDirClient.InitRepo(localRepo, clients.HeadSHA); err != nil { + t.Errorf("InitRepo: %v", err) + return + } + + got, err := getRepoCommitHash(localDirClient) + if (err != nil) != tt.wantErr { + t.Errorf("getRepoCommitHash() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("getRepoCommitHash() got = %v, want %v", got, tt.want) + } + }) + } +} + func TestRunScorecards(t *testing.T) { t.Parallel() type args struct {