Skip to content

Commit fb63efc

Browse files
committed
Avoid crash around "DISMISSED" or "PENDING" reviewer states
1 parent 45dec1b commit fb63efc

File tree

3 files changed

+32
-3
lines changed

3 files changed

+32
-3
lines changed

command/pr.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -623,6 +623,8 @@ const (
623623
approvedReviewState = "APPROVED"
624624
changesRequestedReviewState = "CHANGES_REQUESTED"
625625
commentedReviewState = "COMMENTED"
626+
dismissedReviewState = "DISMISSED"
627+
pendingReviewState = "PENDING"
626628
)
627629

628630
type reviewerState struct {
@@ -648,8 +650,14 @@ func colorFuncForReviewerState(state string) func(string) string {
648650

649651
// formattedReviewerState formats a reviewerState with state color
650652
func formattedReviewerState(reviewer *reviewerState) string {
651-
stateColorFunc := colorFuncForReviewerState(reviewer.State)
652-
return fmt.Sprintf("%s (%s)", reviewer.Name, stateColorFunc(strings.ReplaceAll(strings.Title(strings.ToLower(reviewer.State)), "_", " ")))
653+
state := reviewer.State
654+
if state == dismissedReviewState {
655+
// Show "DISMISSED" review as "COMMENTED", since "dimissed" only makes
656+
// sense when displayed in an events timeline but not in the final tally.
657+
state = commentedReviewState
658+
}
659+
stateColorFunc := colorFuncForReviewerState(state)
660+
return fmt.Sprintf("%s (%s)", reviewer.Name, stateColorFunc(strings.ReplaceAll(strings.Title(strings.ToLower(state)), "_", " ")))
653661
}
654662

655663
// prReviewerList generates a reviewer list with their last state
@@ -705,6 +713,9 @@ func parseReviewers(pr api.PullRequest) []*reviewerState {
705713
// Convert map to slice for ease of sort
706714
result := make([]*reviewerState, 0, len(reviewerStates))
707715
for _, reviewer := range reviewerStates {
716+
if reviewer.State == pendingReviewState {
717+
continue
718+
}
708719
result = append(result, reviewer)
709720
}
710721

command/pr_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ func TestPRView_Preview(t *testing.T) {
477477
fixture: "../test/fixtures/prViewPreviewWithReviewersByNumber.json",
478478
expectedOutputs: []string{
479479
`Blueberries are from a fork`,
480-
`Reviewers: DEF \(Commented\), def \(Changes requested\), ghost \(Approved\), xyz \(Approved\), 123 \(Requested\), Team 1 \(Requested\), abc \(Requested\)\n`,
480+
`Reviewers: DEF \(Commented\), def \(Changes requested\), ghost \(Approved\), hubot \(Commented\), xyz \(Approved\), 123 \(Requested\), Team 1 \(Requested\), abc \(Requested\)\n`,
481481
`blueberries taste good`,
482482
`View this pull request on GitHub: https://github.com/OWNER/REPO/pull/12\n`,
483483
},

test/fixtures/prViewPreviewWithReviewersByNumber.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,24 @@
7070
"login": ""
7171
},
7272
"state": "APPROVED"
73+
},
74+
{
75+
"author": {
76+
"login": "hubot"
77+
},
78+
"state": "CHANGES_REQUESTED"
79+
},
80+
{
81+
"author": {
82+
"login": "hubot"
83+
},
84+
"state": "DISMISSED"
85+
},
86+
{
87+
"author": {
88+
"login": "monalisa"
89+
},
90+
"state": "PENDING"
7391
}
7492
]
7593
},

0 commit comments

Comments
 (0)