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\nShow detailed file reviewers
\n"
- comment += a.getFileOwnersMapToString(a.codeowners.FileRequired())
- comment += " "
+ comment += fmt.Sprintf("\n\nShow 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\nShow detailed file reviewers
\n" +
+ DetailedReviewersSnippet := "\n\nShow 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)
}