Skip to content

Commit 4581c36

Browse files
Remove ListMergedPRs API (#1566)
Co-authored-by: Azeem Shaikh <azeems@google.com>
1 parent 9037444 commit 4581c36

File tree

16 files changed

+174
-271
lines changed

16 files changed

+174
-271
lines changed

checker/raw_result.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
package checker
1616

17+
import "time"
18+
1719
// RawResults contains results before a policy
1820
// is applied.
1921
type RawResults struct {
@@ -123,12 +125,13 @@ type DefaultBranchCommit struct {
123125
}
124126

125127
// MergeRequest represents a merge request.
126-
//nolint:govet
128+
// nolint:govet
127129
type MergeRequest struct {
128-
Number int
129-
Labels []string
130-
Reviews []Review
131-
Author User
130+
Number int
131+
Labels []string
132+
Reviews []Review
133+
Author User
134+
MergedAt time.Time
132135
}
133136

134137
// Review represent a review using the built-in review system.

checks/ci_tests.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,18 @@ func init() {
3939

4040
// CITests runs CI-Tests check.
4141
func CITests(c *checker.CheckRequest) checker.CheckResult {
42-
prs, err := c.RepoClient.ListMergedPRs()
42+
commits, err := c.RepoClient.ListCommits()
4343
if err != nil {
44-
e := sce.WithMessage(sce.ErrScorecardInternal, fmt.Sprintf("RepoClient.ListMergedPRs: %v", err))
44+
e := sce.WithMessage(sce.ErrScorecardInternal, fmt.Sprintf("RepoClient.ListCommits: %v", err))
4545
return checker.CreateRuntimeErrorResult(CheckCITests, e)
4646
}
4747

4848
totalMerged := 0
4949
totalTested := 0
50-
for index := range prs {
51-
pr := &prs[index]
50+
for i := range commits {
51+
pr := &commits[i].AssociatedMergeRequest
52+
// TODO(#575): We ignore associated PRs if Scorecard is being run on a fork
53+
// but the PR was created in the original repo.
5254
if pr.MergedAt.IsZero() {
5355
continue
5456
}

checks/code_review_test.go

Lines changed: 45 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ func TestCodereview(t *testing.T) {
3737
name string
3838
commiterr error
3939
commits []clients.Commit
40-
prs []clients.PullRequest
4140
expected checker.CheckResult
4241
}{
4342
{
@@ -70,150 +69,115 @@ func TestCodereview(t *testing.T) {
7069
},
7170
{
7271
name: "Valid GitHub PR",
73-
prs: []clients.PullRequest{
74-
{
75-
Number: 1,
76-
MergedAt: time.Now(),
77-
Reviews: []clients.Review{
78-
{
79-
State: "APPROVED",
80-
},
81-
},
82-
MergeCommit: clients.Commit{
83-
SHA: "sha",
84-
},
85-
},
86-
},
8772
commits: []clients.Commit{
8873
{
8974
SHA: "sha",
9075
Committer: clients.User{
9176
Login: "user",
9277
},
78+
AssociatedMergeRequest: clients.PullRequest{
79+
Number: 1,
80+
MergedAt: time.Now(),
81+
Reviews: []clients.Review{
82+
{
83+
State: "APPROVED",
84+
},
85+
},
86+
},
9387
},
9488
},
95-
9689
expected: checker.CheckResult{
9790
Score: 10,
9891
Pass: true,
9992
},
10093
},
10194
{
10295
name: "Valid Prow PR as not a bot",
103-
prs: []clients.PullRequest{
104-
{
105-
Number: 1,
106-
MergedAt: time.Now(),
107-
Labels: []clients.Label{
108-
{
109-
Name: "lgtm",
110-
},
111-
},
112-
MergeCommit: clients.Commit{
113-
SHA: "sha",
114-
},
115-
},
116-
},
11796
commits: []clients.Commit{
11897
{
11998
SHA: "sha",
12099
Committer: clients.User{
121100
Login: "user",
122101
},
102+
AssociatedMergeRequest: clients.PullRequest{
103+
Number: 1,
104+
MergedAt: time.Now(),
105+
Labels: []clients.Label{
106+
{
107+
Name: "lgtm",
108+
},
109+
},
110+
},
123111
},
124112
},
125-
126113
expected: checker.CheckResult{
127114
Score: 10,
128115
Pass: true,
129116
},
130117
},
131118
{
132119
name: "Valid Prow PR and commits as bot",
133-
prs: []clients.PullRequest{
134-
{
135-
Number: 1,
136-
MergedAt: time.Now(),
137-
Labels: []clients.Label{
138-
{
139-
Name: "lgtm",
140-
},
141-
},
142-
MergeCommit: clients.Commit{
143-
SHA: "sha",
144-
},
145-
},
146-
},
147120
commits: []clients.Commit{
148121
{
149122
SHA: "sha",
150123
Committer: clients.User{
151124
Login: "bot",
152125
},
126+
AssociatedMergeRequest: clients.PullRequest{
127+
Number: 1,
128+
MergedAt: time.Now(),
129+
Labels: []clients.Label{
130+
{
131+
Name: "lgtm",
132+
},
133+
},
134+
},
153135
},
154136
},
155-
156137
expected: checker.CheckResult{
157138
Score: 10,
158139
Pass: true,
159140
},
160141
},
161142
{
162143
name: "Valid PR's and commits with merged by someone else",
163-
prs: []clients.PullRequest{
164-
{
165-
Number: 1,
166-
Labels: []clients.Label{
167-
{
168-
Name: "lgtm",
169-
},
170-
},
171-
MergeCommit: clients.Commit{
172-
SHA: "sha",
173-
Committer: clients.User{
174-
Login: "bot",
175-
},
176-
},
177-
},
178-
},
179144
commits: []clients.Commit{
180145
{
181146
SHA: "sha",
182147
Committer: clients.User{
183148
Login: "bob",
184149
},
150+
AssociatedMergeRequest: clients.PullRequest{
151+
Number: 1,
152+
Labels: []clients.Label{
153+
{
154+
Name: "lgtm",
155+
},
156+
},
157+
},
185158
},
186159
},
187-
188160
expected: checker.CheckResult{
189161
Score: 0,
190162
},
191163
},
192164
{
193165
name: "2 PRs 2 review on GitHub",
194-
prs: []clients.PullRequest{
195-
{
196-
Number: 1,
197-
MergedAt: time.Now(),
198-
Reviews: []clients.Review{
199-
{
200-
State: "APPROVED",
201-
},
202-
},
203-
MergeCommit: clients.Commit{
204-
SHA: "sha",
205-
Committer: clients.User{
206-
Login: "bot",
207-
},
208-
},
209-
},
210-
},
211166
commits: []clients.Commit{
212167
{
213168
SHA: "sha",
214169
Committer: clients.User{
215170
Login: "bob",
216171
},
172+
AssociatedMergeRequest: clients.PullRequest{
173+
Number: 1,
174+
MergedAt: time.Now(),
175+
Reviews: []clients.Review{
176+
{
177+
State: "APPROVED",
178+
},
179+
},
180+
},
217181
},
218182
{
219183
SHA: "sha2",
@@ -222,7 +186,6 @@ func TestCodereview(t *testing.T) {
222186
},
223187
},
224188
},
225-
226189
expected: checker.CheckResult{
227190
Score: 5,
228191
},
@@ -235,18 +198,7 @@ func TestCodereview(t *testing.T) {
235198
t.Parallel()
236199
ctrl := gomock.NewController(t)
237200
mockRepo := mockrepo.NewMockRepoClient(ctrl)
238-
mockRepo.EXPECT().ListMergedPRs().DoAndReturn(func() ([]clients.PullRequest, error) {
239-
if tt.err != nil {
240-
return tt.prs, tt.err
241-
}
242-
return tt.prs, tt.err
243-
}).AnyTimes()
244-
mockRepo.EXPECT().ListCommits().DoAndReturn(func() ([]clients.Commit, error) {
245-
if tt.commiterr != nil {
246-
return tt.commits, tt.commiterr
247-
}
248-
return tt.commits, tt.err
249-
}).AnyTimes()
201+
mockRepo.EXPECT().ListCommits().Return(tt.commits, tt.err).AnyTimes()
250202

251203
req := checker.CheckRequest{
252204
RepoClient: mockRepo,

checks/evaluation/code_review.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ func getApprovedReviewSystem(c *checker.DefaultBranchCommit, dl checker.DetailLo
126126

127127
func isReviewedOnGitHub(c *checker.DefaultBranchCommit, dl checker.DetailLogger) bool {
128128
mr := c.MergeRequest
129-
if mr == nil {
129+
if mr == nil || mr.MergedAt.IsZero() {
130130
return false
131131
}
132132

@@ -163,7 +163,7 @@ func isReviewedOnProw(c *checker.DefaultBranchCommit, dl checker.DetailLogger) b
163163
return true
164164
}
165165

166-
if c.MergeRequest != nil {
166+
if c.MergeRequest != nil && !c.MergeRequest.MergedAt.IsZero() {
167167
for _, l := range c.MergeRequest.Labels {
168168
if l == "lgtm" || l == "approved" {
169169
dl.Debug3(&checker.LogMessage{

checks/maintained.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ func IsMaintained(c *checker.CheckRequest) checker.CheckResult {
5959
return checker.CreateRuntimeErrorResult(CheckMaintained, e)
6060
}
6161
commitsWithinThreshold := 0
62-
for _, commit := range commits {
63-
if commit.CommittedDate.After(threshold) {
62+
for i := range commits {
63+
if commits[i].CommittedDate.After(threshold) {
6464
commitsWithinThreshold++
6565
}
6666
}

checks/raw/code_review.go

Lines changed: 7 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -31,63 +31,21 @@ func CodeReview(c clients.RepoClient) (checker.CodeReviewData, error) {
3131
return checker.CodeReviewData{}, fmt.Errorf("%w", err)
3232
}
3333

34-
oc := make(map[string]checker.DefaultBranchCommit)
35-
for _, commit := range commits {
36-
com := commitRequest(commit)
37-
// Keep an index of commits by SHA.
38-
oc[commit.SHA] = com
39-
}
40-
41-
// Look at merge requests.
42-
mrs, err := c.ListMergedPRs()
43-
if err != nil {
44-
return checker.CodeReviewData{}, fmt.Errorf("%w", err)
45-
}
46-
47-
for i := range mrs {
48-
mr := mrs[i]
49-
50-
if mr.MergedAt.IsZero() {
51-
continue
52-
}
53-
54-
// If the merge request is not a recent commit, skip.
55-
com, exists := oc[mr.MergeCommit.SHA]
56-
57-
if exists {
58-
// Sanity checks the logins are the same.
59-
// TODO(#1543): re-enable this code.
60-
//nolint:gocritic
61-
/*if com.Committer.Login != mr.MergeCommit.Committer.Login {
62-
return checker.CodeReviewData{}, sce.WithMessage(sce.ErrScorecardInternal,
63-
fmt.Sprintf("commit login (%s) different from merge request commit login (%s)",
64-
com.Committer.Login, mr.MergeCommit.Committer.Login))
65-
}*/
66-
67-
// We have a recent merge request, update it.
68-
com.MergeRequest = mergeRequest(&mr)
69-
oc[com.SHA] = com
70-
}
71-
}
72-
73-
for _, v := range oc {
74-
results = append(results, v)
75-
}
76-
77-
if len(results) > 0 {
78-
return checker.CodeReviewData{DefaultBranchCommits: results}, nil
34+
for i := range commits {
35+
results = append(results, getRawDataFrom(&commits[i]))
7936
}
8037

8138
return checker.CodeReviewData{DefaultBranchCommits: results}, nil
8239
}
8340

84-
func commitRequest(c clients.Commit) checker.DefaultBranchCommit {
41+
func getRawDataFrom(c *clients.Commit) checker.DefaultBranchCommit {
8542
r := checker.DefaultBranchCommit{
8643
Committer: checker.User{
8744
Login: c.Committer.Login,
8845
},
8946
SHA: c.SHA,
9047
CommitMessage: c.Message,
48+
MergeRequest: mergeRequest(&c.AssociatedMergeRequest),
9149
}
9250

9351
return r
@@ -99,9 +57,9 @@ func mergeRequest(mr *clients.PullRequest) *checker.MergeRequest {
9957
Author: checker.User{
10058
Login: mr.Author.Login,
10159
},
102-
103-
Labels: labels(mr),
104-
Reviews: reviews(mr),
60+
MergedAt: mr.MergedAt,
61+
Labels: labels(mr),
62+
Reviews: reviews(mr),
10563
}
10664
return &r
10765
}

0 commit comments

Comments
 (0)