From 2f631022b3019cbbac3d2c33de8bcc2fccaffff4 Mon Sep 17 00:00:00 2001 From: Sergio Zharinov Date: Tue, 22 Sep 2020 12:39:40 +0300 Subject: [PATCH 1/2] refactor(workers): Extract 'getFileList' call outside of loop --- lib/workers/repository/extract/file-match.spec.ts | 12 +++++------- lib/workers/repository/extract/file-match.ts | 9 ++++----- lib/workers/repository/extract/index.ts | 9 ++++++--- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/lib/workers/repository/extract/file-match.spec.ts b/lib/workers/repository/extract/file-match.spec.ts index cef8ce0b55f616..f9b100a59d6193 100644 --- a/lib/workers/repository/extract/file-match.spec.ts +++ b/lib/workers/repository/extract/file-match.spec.ts @@ -1,4 +1,4 @@ -import { RenovateConfig, git } from '../../../../test/util'; +import { RenovateConfig } from '../../../../test/util'; import * as fileMatch from './file-match'; jest.mock('../../../util/git'); @@ -48,17 +48,15 @@ describe('workers/repository/extract/file-match', () => { manager: 'npm', fileMatch: ['(^|/)package.json$'], }; - it('returns npm files', async () => { - git.getFileList.mockResolvedValue(fileList); + it('returns npm files', () => { fileList.push('Dockerfile'); - const res = await fileMatch.getMatchingFiles(config); + const res = fileMatch.getMatchingFiles(config, fileList); expect(res).toMatchSnapshot(); expect(res).toHaveLength(2); }); - it('deduplicates', async () => { - git.getFileList.mockResolvedValue(fileList); + it('deduplicates', () => { config.fileMatch.push('package.json'); - const res = await fileMatch.getMatchingFiles(config); + const res = fileMatch.getMatchingFiles(config, fileList); expect(res).toMatchSnapshot(); expect(res).toHaveLength(2); }); diff --git a/lib/workers/repository/extract/file-match.ts b/lib/workers/repository/extract/file-match.ts index 0c4f1234cc35d2..823910edea85ca 100644 --- a/lib/workers/repository/extract/file-match.ts +++ b/lib/workers/repository/extract/file-match.ts @@ -1,7 +1,6 @@ import minimatch from 'minimatch'; import { RenovateConfig } from '../../../config/common'; import { logger } from '../../../logger'; -import { getFileList } from '../../../util/git'; import { regEx } from '../../../util/regex'; export function getIncludedFiles( @@ -46,10 +45,10 @@ export function getFilteredFileList( return filteredList; } -export async function getMatchingFiles( - config: RenovateConfig -): Promise { - const allFiles = await getFileList(); +export function getMatchingFiles( + config: RenovateConfig, + allFiles: string[] +): string[] { const fileList = getFilteredFileList(config, allFiles); const { fileMatch, manager } = config; let matchedFiles: string[] = []; diff --git a/lib/workers/repository/extract/index.ts b/lib/workers/repository/extract/index.ts index 91302fd00b0170..b094b007083052 100644 --- a/lib/workers/repository/extract/index.ts +++ b/lib/workers/repository/extract/index.ts @@ -7,6 +7,7 @@ import { import { logger } from '../../../logger'; import { getManagerList } from '../../../manager'; import { PackageFile } from '../../../manager/common'; +import { getFileList } from '../../../util/git'; import { getMatchingFiles } from './file-match'; import { getManagerPackageFiles } from './manager-files'; @@ -21,6 +22,7 @@ export async function extractAllDependencies( ); } const extractList: RenovateConfig[] = []; + const fileList = await getFileList(); for (const manager of managerList) { const managerConfig = getManagerConfig(config, manager); managerConfig.manager = manager; @@ -30,15 +32,16 @@ export async function extractAllDependencies( managerConfig, regexManager ); - regexManagerConfig.fileList = await getMatchingFiles( - regexManagerConfig + regexManagerConfig.fileList = getMatchingFiles( + regexManagerConfig, + fileList ); if (regexManagerConfig.fileList.length) { extractList.push(regexManagerConfig); } } } else { - managerConfig.fileList = await getMatchingFiles(managerConfig); + managerConfig.fileList = getMatchingFiles(managerConfig, fileList); if (managerConfig.fileList.length) { extractList.push(managerConfig); } From c76953e5588336bdae2ef53e9a722f27e379210c Mon Sep 17 00:00:00 2001 From: Sergio Zharinov Date: Tue, 22 Sep 2020 12:45:22 +0300 Subject: [PATCH 2/2] Fix mocks --- lib/workers/repository/extract/manager-files.spec.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/workers/repository/extract/manager-files.spec.ts b/lib/workers/repository/extract/manager-files.spec.ts index 85e4814cb2a7b9..8a5e8402819f7b 100644 --- a/lib/workers/repository/extract/manager-files.spec.ts +++ b/lib/workers/repository/extract/manager-files.spec.ts @@ -31,7 +31,7 @@ describe('workers/repository/extract/manager-files', () => { }); it('skips files if null content returned', async () => { const managerConfig = { manager: 'npm', enabled: true }; - fileMatch.getMatchingFiles.mockResolvedValue(['package.json']); + fileMatch.getMatchingFiles.mockReturnValue(['package.json']); const res = await getManagerPackageFiles(managerConfig); expect(res).toHaveLength(0); }); @@ -41,7 +41,7 @@ describe('workers/repository/extract/manager-files', () => { enabled: true, fileList: ['Dockerfile'], }; - fileMatch.getMatchingFiles.mockResolvedValue(['Dockerfile']); + fileMatch.getMatchingFiles.mockReturnValue(['Dockerfile']); fs.readLocalFile.mockResolvedValueOnce('some content'); html.extractPackageFile = jest.fn(() => ({ deps: [{}, { replaceString: 'abc' }], @@ -55,7 +55,7 @@ describe('workers/repository/extract/manager-files', () => { enabled: true, fileList: ['package.json'], }; - fileMatch.getMatchingFiles.mockResolvedValue(['package.json']); + fileMatch.getMatchingFiles.mockReturnValue(['package.json']); fs.readLocalFile.mockResolvedValueOnce( '{"dependencies":{"chalk":"2.0.0"}}' );