diff --git a/internal/app/app.go b/internal/app/app.go index 76871e8..7856e02 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -315,9 +315,7 @@ func (a *App) addReviewStatusComment(allRequiredOwners codeowners.ReviewerGroups } if a.Conf.DetailedReviewers { - comment += "\n\n
Show detailed file reviewers\n" - comment += a.getFileOwnersMapToString(a.codeowners.FileRequired()) - comment += "
" + comment += fmt.Sprintf("\n\n
Show detailed file reviewers\n\n%s\n
", a.getFileOwnersMapToString(a.codeowners.FileRequired())) } fiveDaysAgo := time.Now().AddDate(0, 0, -5) @@ -461,7 +459,15 @@ func (a *App) printFileOwners(codeOwners codeowners.CodeOwners) { func (a *App) getFileOwnersMapToString(fileReviewers map[string]codeowners.ReviewerGroups) string { builder := strings.Builder{} - for file, reviewers := range fileReviewers { + + files := make([]string, 0, len(fileReviewers)) + for file := range fileReviewers { + files = append(files, file) + } + slices.Sort(files) + + for _, file := range files { + reviewers := fileReviewers[file] // builder.WriteString error return is always nil _, _ = fmt.Fprintf(&builder, "- %s: %+v\n", file, reviewers.Flatten()) } diff --git a/internal/app/app_test.go b/internal/app/app_test.go index ee312d9..603b187 100644 --- a/internal/app/app_test.go +++ b/internal/app/app_test.go @@ -1228,13 +1228,14 @@ func TestCommentDetailedReviewers(t *testing.T) { t.Errorf("unexpected error: %v", err) } - DetailedReviewersSnippet := "\n\n
Show detailed file reviewers\n" + + DetailedReviewersSnippet := "\n\n
Show detailed file reviewers\n\n" + "- file1.go: [@user1 @user2]\n" + - "- file2.go: [@user1]\n" + "- file2.go: [@user1]\n\n" containsDetailedReviewersSnippet := strings.Contains(mockGH.AddCommentInput, DetailedReviewersSnippet) if tc.detailedReviewers != containsDetailedReviewersSnippet { + t.Logf("AddCommentInput: %s", mockGH.AddCommentInput) t.Errorf("expected comment to include detailed owners to be %t, got %t ", tc.detailedReviewers, containsDetailedReviewersSnippet) }