From fa6e23f41498927a0ec5b1bcbee79d558f88198d Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Sun, 22 Jul 2018 09:34:11 +0200 Subject: [PATCH] fix: deduplicate file matches Closes #2299 --- lib/workers/repository/extract/file-match.js | 4 ++++ .../extract/__snapshots__/file-match.spec.js.snap | 7 +++++++ test/workers/repository/extract/file-match.spec.js | 9 +++++++++ 3 files changed, 20 insertions(+) diff --git a/lib/workers/repository/extract/file-match.js b/lib/workers/repository/extract/file-match.js index 1b9540bcc7..34f8a17baf 100644 --- a/lib/workers/repository/extract/file-match.js +++ b/lib/workers/repository/extract/file-match.js @@ -37,5 +37,9 @@ function getMatchingFiles(fileList, manager, fileMatch) { fileList.filter(file => file.match(new RegExp(match))) ); } + // filter out duplicates + matchedFiles = matchedFiles.filter( + (item, pos) => matchedFiles.indexOf(item) === pos + ); return matchedFiles; } diff --git a/test/workers/repository/extract/__snapshots__/file-match.spec.js.snap b/test/workers/repository/extract/__snapshots__/file-match.spec.js.snap index 9abbb3dc65..c29ace47ac 100644 --- a/test/workers/repository/extract/__snapshots__/file-match.spec.js.snap +++ b/test/workers/repository/extract/__snapshots__/file-match.spec.js.snap @@ -24,6 +24,13 @@ Array [ ] `; +exports[`workers/repository/extract/file-match getMatchingFiles() deduplicates 1`] = ` +Array [ + "package.json", + "frontend/package.json", +] +`; + exports[`workers/repository/extract/file-match getMatchingFiles() returns npm files 1`] = ` Array [ "package.json", diff --git a/test/workers/repository/extract/file-match.spec.js b/test/workers/repository/extract/file-match.spec.js index 8a1ace1510..65822da662 100644 --- a/test/workers/repository/extract/file-match.spec.js +++ b/test/workers/repository/extract/file-match.spec.js @@ -47,5 +47,14 @@ describe('workers/repository/extract/file-match', () => { expect(res).toMatchSnapshot(); expect(res).toHaveLength(2); }); + it('deduplicates', () => { + fileList.push('Dockerfile'); + const res = fileMatch.getMatchingFiles(fileList, 'npm', [ + '(^|/)package.json$', + 'package.json', + ]); + expect(res).toMatchSnapshot(); + expect(res).toHaveLength(2); + }); }); }); -- GitLab