diff --git a/lib/workers/repository/extract/file-match.spec.ts b/lib/workers/repository/extract/file-match.spec.ts
index 718ab8ecee2c286d3fe5de1c701e6844aa19a35e..d4d8424d687a587b03a60ab7f68310a1ddbdcb48 100644
--- a/lib/workers/repository/extract/file-match.spec.ts
+++ b/lib/workers/repository/extract/file-match.spec.ts
@@ -1,3 +1,4 @@
+import { RenovateConfig, platform } from '../../../../test/util';
 import * as fileMatch from './file-match';
 
 describe('workers/repository/extract/file-match', () => {
@@ -39,20 +40,23 @@ describe('workers/repository/extract/file-match', () => {
     });
   });
   describe('getMatchingFiles()', () => {
-    it('returns npm files', () => {
+    const config: RenovateConfig = {
+      includePaths: [],
+      ignoredPaths: [],
+      manager: 'npm',
+      fileMatch: ['(^|/)package.json$'],
+    };
+    it('returns npm files', async () => {
+      platform.getFileList.mockResolvedValue(fileList);
       fileList.push('Dockerfile');
-      const res = fileMatch.getMatchingFiles(fileList, 'npm', [
-        '(^|/)package.json$',
-      ]);
+      const res = await fileMatch.getMatchingFiles(config);
       expect(res).toMatchSnapshot();
       expect(res).toHaveLength(2);
     });
-    it('deduplicates', () => {
-      fileList.push('Dockerfile');
-      const res = fileMatch.getMatchingFiles(fileList, 'npm', [
-        '(^|/)package.json$',
-        'package.json',
-      ]);
+    it('deduplicates', async () => {
+      platform.getFileList.mockResolvedValue(fileList);
+      config.fileMatch.push('package.json');
+      const res = await fileMatch.getMatchingFiles(config);
       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 08bc468e948d7bba2c94fabfae360f950473c87c..04e6ee64f0726a54d0f396e80b5732caf51dd095 100644
--- a/lib/workers/repository/extract/file-match.ts
+++ b/lib/workers/repository/extract/file-match.ts
@@ -1,5 +1,7 @@
 import minimatch from 'minimatch';
+import { RenovateConfig } from '../../../config/common';
 import { logger } from '../../../logger';
+import { platform } from '../../../platform';
 
 export function getIncludedFiles(
   fileList: string[],
@@ -33,11 +35,26 @@ export function filterIgnoredFiles(
   );
 }
 
-export function getMatchingFiles(
-  fileList: string[],
-  manager: string,
-  fileMatch: string[]
+export function getFileList(): Promise<string[]> {
+  return platform.getFileList();
+}
+
+export function getFilteredFileList(
+  config: RenovateConfig,
+  fileList: string[]
 ): string[] {
+  const { includePaths, ignorePaths } = config;
+  let filteredList = getIncludedFiles(fileList, includePaths);
+  filteredList = filterIgnoredFiles(filteredList, ignorePaths);
+  return filteredList;
+}
+
+export async function getMatchingFiles(
+  config: RenovateConfig
+): Promise<string[]> {
+  const allFiles = await getFileList();
+  const fileList = getFilteredFileList(config, allFiles);
+  const { fileMatch, manager } = config;
   let matchedFiles = [];
   for (const match of fileMatch) {
     logger.debug(`Using file match: ${match} for manager ${manager}`);
diff --git a/lib/workers/repository/extract/manager-files.spec.ts b/lib/workers/repository/extract/manager-files.spec.ts
index d512eac0c20602d373ee695e516779222d8718f9..cec003431a6112c461552889781323a95467ac4f 100644
--- a/lib/workers/repository/extract/manager-files.spec.ts
+++ b/lib/workers/repository/extract/manager-files.spec.ts
@@ -33,13 +33,13 @@ describe('workers/repository/extract/manager-files', () => {
     });
     it('skips files if null content returned', async () => {
       const managerConfig = { manager: 'npm', enabled: true };
-      fileMatch.getMatchingFiles.mockReturnValue(['package.json']);
+      fileMatch.getMatchingFiles.mockResolvedValue(['package.json']);
       const res = await getManagerPackageFiles(managerConfig);
       expect(res).toHaveLength(0);
     });
     it('returns files with extractPackageFile', async () => {
       const managerConfig = { manager: 'html', enabled: true };
-      fileMatch.getMatchingFiles.mockReturnValue(['Dockerfile']);
+      fileMatch.getMatchingFiles.mockResolvedValue(['Dockerfile']);
       fs.readLocalFile.mockResolvedValueOnce('some content');
       html.extractPackageFile = jest.fn(() => ({
         deps: [{}, { replaceString: 'abc' }],
@@ -49,7 +49,7 @@ describe('workers/repository/extract/manager-files', () => {
     });
     it('returns files with extractAllPackageFiles', async () => {
       const managerConfig = { manager: 'npm', enabled: true };
-      fileMatch.getMatchingFiles.mockReturnValue(['package.json']);
+      fileMatch.getMatchingFiles.mockResolvedValue(['package.json']);
       fs.readLocalFile.mockResolvedValueOnce(
         '{"dependencies":{"chalk":"2.0.0"}}'
       );
diff --git a/lib/workers/repository/extract/manager-files.ts b/lib/workers/repository/extract/manager-files.ts
index 61ef25c097f24829c2b85e9a1a7e524cc304f41d..fb6260e18451e9372fbd4b27806885b4c4fb6391 100644
--- a/lib/workers/repository/extract/manager-files.ts
+++ b/lib/workers/repository/extract/manager-files.ts
@@ -7,27 +7,19 @@ import {
   get,
 } from '../../../manager';
 import { PackageFile } from '../../../manager/common';
-import { platform } from '../../../platform';
 import { readLocalFile } from '../../../util/fs';
-import {
-  filterIgnoredFiles,
-  getIncludedFiles,
-  getMatchingFiles,
-} from './file-match';
+import { getMatchingFiles } from './file-match';
 
 export async function getManagerPackageFiles(
   config: RenovateConfig
 ): Promise<PackageFile[]> {
-  const { manager, enabled, includePaths, ignorePaths } = config;
+  const { manager, enabled } = config;
   logger.trace(`getPackageFiles(${manager})`);
   if (!enabled) {
     logger.debug(`${manager} is disabled`);
     return [];
   }
-  let fileList = await platform.getFileList();
-  fileList = getIncludedFiles(fileList, includePaths);
-  fileList = filterIgnoredFiles(fileList, ignorePaths);
-  const matchedFiles = getMatchingFiles(fileList, manager, config.fileMatch);
+  const matchedFiles = await getMatchingFiles(config);
   // istanbul ignore else
   if (is.nonEmptyArray(matchedFiles)) {
     logger.debug(