From c313415c9b00b78979e8e0630b3c7e08d1c0a744 Mon Sep 17 00:00:00 2001 From: BakerNet Date: Thu, 3 Jul 2025 12:00:45 -0700 Subject: [PATCH 1/6] Fix formatting of detailed reviewers list --- internal/app/app.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/app/app.go b/internal/app/app.go index 76871e8..44af2fd 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -315,9 +315,9 @@ func (a *App) addReviewStatusComment(allRequiredOwners codeowners.ReviewerGroups } if a.Conf.DetailedReviewers { - comment += "\n\n
Show detailed file reviewers\n" + comment += "\n\n
Show detailed file reviewers\n\n" comment += a.getFileOwnersMapToString(a.codeowners.FileRequired()) - comment += "
" + comment += "\n
" } fiveDaysAgo := time.Now().AddDate(0, 0, -5) From 8734cacd2619bf8fa606a156a786fbf9defc34a0 Mon Sep 17 00:00:00 2001 From: BakerNet Date: Thu, 3 Jul 2025 12:06:31 -0700 Subject: [PATCH 2/6] Fix test --- internal/app/app_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/app/app_test.go b/internal/app/app_test.go index ee312d9..347dd57 100644 --- a/internal/app/app_test.go +++ b/internal/app/app_test.go @@ -1228,9 +1228,9 @@ 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) From 2e83c41c25df4b146962aac4b4b86c14597f5712 Mon Sep 17 00:00:00 2001 From: BakerNet Date: Thu, 3 Jul 2025 12:08:05 -0700 Subject: [PATCH 3/6] Gemini review --- internal/app/app.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/internal/app/app.go b/internal/app/app.go index 44af2fd..d47b0ff 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\n" - comment += a.getFileOwnersMapToString(a.codeowners.FileRequired()) - comment += "\n
" + 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) From 7d990f335c325967d3a2b605065d70961c00d919 Mon Sep 17 00:00:00 2001 From: BakerNet Date: Thu, 3 Jul 2025 12:09:13 -0700 Subject: [PATCH 4/6] Covbadge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 365f830..268b7f1 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Code Ownership & Review Assignment Tool - GitHub CODEOWNERS but better [![Go Report Card](https://goreportcard.com/badge/github.com/multimediallc/codeowners-plus)](https://goreportcard.com/report/github.com/multimediallc/codeowners-plus?kill_cache=1) [![Tests](https://github.com/multimediallc/codeowners-plus/actions/workflows/go.yml/badge.svg)](https://github.com/multimediallc/codeowners-plus/actions/workflows/go.yml) -![Coverage](https://img.shields.io/badge/Coverage-81.7%25-brightgreen) +![Coverage](https://img.shields.io/badge/Coverage-81.6%25-brightgreen) [![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE_OF_CONDUCT.md) From add535296e724184eaeae9f5740066dea89efac0 Mon Sep 17 00:00:00 2001 From: BakerNet Date: Thu, 3 Jul 2025 12:43:41 -0700 Subject: [PATCH 5/6] Fix flaky test and guarantee output order --- internal/app/app.go | 10 +++++++++- internal/app/app_test.go | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/internal/app/app.go b/internal/app/app.go index d47b0ff..7856e02 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -459,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 347dd57..603b187 100644 --- a/internal/app/app_test.go +++ b/internal/app/app_test.go @@ -1235,6 +1235,7 @@ func TestCommentDetailedReviewers(t *testing.T) { 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) } From 2a475d95dab9db474873b2ad39f303ac599e5030 Mon Sep 17 00:00:00 2001 From: BakerNet Date: Thu, 3 Jul 2025 12:45:41 -0700 Subject: [PATCH 6/6] Covbadge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 268b7f1..365f830 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Code Ownership & Review Assignment Tool - GitHub CODEOWNERS but better [![Go Report Card](https://goreportcard.com/badge/github.com/multimediallc/codeowners-plus)](https://goreportcard.com/report/github.com/multimediallc/codeowners-plus?kill_cache=1) [![Tests](https://github.com/multimediallc/codeowners-plus/actions/workflows/go.yml/badge.svg)](https://github.com/multimediallc/codeowners-plus/actions/workflows/go.yml) -![Coverage](https://img.shields.io/badge/Coverage-81.6%25-brightgreen) +![Coverage](https://img.shields.io/badge/Coverage-81.7%25-brightgreen) [![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE_OF_CONDUCT.md)