From edacf84f47b5e70411b567dec017a40fea2d5881 Mon Sep 17 00:00:00 2001
From: Erin <contact@erin.id.au>
Date: Tue, 22 Aug 2023 15:59:46 +1000
Subject: [PATCH] feat(codeowners): ignore inline comments in a CODEOWNERS file
 (#23996)

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
---
 lib/workers/repository/update/pr/code-owners.spec.ts | 4 ++--
 lib/workers/repository/update/pr/code-owners.ts      | 7 +++++--
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/lib/workers/repository/update/pr/code-owners.spec.ts b/lib/workers/repository/update/pr/code-owners.spec.ts
index 5e5874c964..9b57c3fa17 100644
--- a/lib/workers/repository/update/pr/code-owners.spec.ts
+++ b/lib/workers/repository/update/pr/code-owners.spec.ts
@@ -219,9 +219,9 @@ describe('workers/repository/update/pr/code-owners', () => {
         [
           '# comment line',
           '    \t    ',
-          '   * @jimmy     ',
+          '   * @jimmy     # inline comment     ',
           '        # comment line with leading whitespace',
-          ' package.json @john @maria  ',
+          ' package.json @john @maria#inline comment without leading whitespace  ',
         ].join('\n')
       );
       git.getBranchFiles.mockResolvedValueOnce(['package.json']);
diff --git a/lib/workers/repository/update/pr/code-owners.ts b/lib/workers/repository/update/pr/code-owners.ts
index 59d6d643c4..93886333f4 100644
--- a/lib/workers/repository/update/pr/code-owners.ts
+++ b/lib/workers/repository/update/pr/code-owners.ts
@@ -1,3 +1,4 @@
+import is from '@sindresorhus/is';
 import ignore from 'ignore';
 import { logger } from '../../../../logger';
 import type { Pr } from '../../../../modules/platform';
@@ -102,9 +103,11 @@ export async function codeOwnersForPr(pr: Pr): Promise<string[]> {
     // Convert CODEOWNERS file into list of matching rules
     const fileOwnerRules = codeOwnersFile
       .split(newlineRegex)
-      // Remove empty and commented lines
+      // Remove comments
+      .map((line) => line.split('#')[0])
+      // Remove empty lines
       .map((line) => line.trim())
-      .filter((line) => line && !line.startsWith('#'))
+      .filter(is.nonEmptyString)
       // Extract pattern & usernames
       .map(extractOwnersFromLine);
 
-- 
GitLab