From 4b2eaf54ec85ca6e7e9326b9bdc7b3b97fc2d044 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Mon, 31 Aug 2020 20:01:41 +0200 Subject: [PATCH] refactor: initRepo cache (#7146) --- .../init/__snapshots__/index.spec.ts.snap | 2 -- lib/workers/repository/init/config.ts | 28 ++++++++++++++- lib/workers/repository/init/index.spec.ts | 11 +----- lib/workers/repository/init/index.ts | 35 +++---------------- 4 files changed, 32 insertions(+), 44 deletions(-) diff --git a/lib/workers/repository/init/__snapshots__/index.spec.ts.snap b/lib/workers/repository/init/__snapshots__/index.spec.ts.snap index dc10f9b921..639a7839bf 100644 --- a/lib/workers/repository/init/__snapshots__/index.spec.ts.snap +++ b/lib/workers/repository/init/__snapshots__/index.spec.ts.snap @@ -1,5 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`workers/repository/init initRepo runs 1`] = `Object {}`; - -exports[`workers/repository/init initRepo uses cache 1`] = `Object {}`; diff --git a/lib/workers/repository/init/config.ts b/lib/workers/repository/init/config.ts index acfe655386..087fde4127 100644 --- a/lib/workers/repository/init/config.ts +++ b/lib/workers/repository/init/config.ts @@ -12,10 +12,17 @@ import * as npmApi from '../../../datasource/npm'; import { logger } from '../../../logger'; import { getCache } from '../../../util/cache/repository'; import { readLocalFile } from '../../../util/fs'; -import { getFileList } from '../../../util/git'; +import { + checkoutBranch, + getBranchCommit, + getFileList, +} from '../../../util/git'; import * as hostRules from '../../../util/host-rules'; +import { checkOnboardingBranch } from '../onboarding/branch'; +import { getResolvedConfig, setResolvedConfig } from './cache'; import { RepoConfig } from './common'; import { flattenPackageRules } from './flatten'; +import { detectSemanticCommits } from './semantic'; export async function detectRepoFileConfig(): Promise<RepoConfig> { const fileList = await getFileList(); @@ -198,3 +205,22 @@ export async function mergeRenovateConfig( } return returnConfig; } + +// istanbul ignore next +export async function getRepoConfig( + config_: RenovateConfig +): Promise<RenovateConfig> { + let config = { ...config_ }; + config.defaultBranchSha = getBranchCommit(config.defaultBranch); + const resolvedConfig = getResolvedConfig(config.defaultBranchSha); + if (resolvedConfig) { + return resolvedConfig; + } + config.baseBranch = config.defaultBranch; + config.baseBranchSha = await checkoutBranch(config.baseBranch); + config.semanticCommits = await detectSemanticCommits(config); + config = await checkOnboardingBranch(config); + config = await mergeRenovateConfig(config); + setResolvedConfig(config); + return config; +} diff --git a/lib/workers/repository/init/index.spec.ts b/lib/workers/repository/init/index.spec.ts index bf863ecd3c..6554432451 100644 --- a/lib/workers/repository/init/index.spec.ts +++ b/lib/workers/repository/init/index.spec.ts @@ -1,7 +1,6 @@ import { mocked } from '../../../../test/util'; import * as _onboarding from '../onboarding/branch'; import * as _apis from './apis'; -import * as _cache from './cache'; import * as _config from './config'; import { initRepo } from '.'; @@ -11,10 +10,8 @@ jest.mock('../configured'); jest.mock('../init/apis'); jest.mock('../init/config'); jest.mock('../init/semantic'); -jest.mock('./cache'); const apis = mocked(_apis); -const cache = mocked(_cache); const config = mocked(_config); const onboarding = mocked(_onboarding); @@ -23,16 +20,10 @@ describe('workers/repository/init', () => { it('runs', async () => { apis.initApis.mockResolvedValue({} as never); onboarding.checkOnboardingBranch.mockResolvedValueOnce({}); + config.getRepoConfig.mockResolvedValueOnce({}); config.mergeRenovateConfig.mockResolvedValueOnce({}); const renovateConfig = await initRepo({}); expect(renovateConfig).toMatchSnapshot(); }); - it('uses cache', async () => { - apis.initApis.mockResolvedValue({} as never); - onboarding.checkOnboardingBranch.mockResolvedValueOnce({}); - cache.getResolvedConfig.mockResolvedValueOnce({} as never); - const renovateConfig = await initRepo({}); - expect(renovateConfig).toMatchSnapshot(); - }); }); }); diff --git a/lib/workers/repository/init/index.ts b/lib/workers/repository/init/index.ts index 1911a2a35d..f8290e01fe 100644 --- a/lib/workers/repository/init/index.ts +++ b/lib/workers/repository/init/index.ts @@ -1,51 +1,24 @@ import { RenovateConfig } from '../../../config'; import { logger } from '../../../logger'; import { clone } from '../../../util/clone'; -import { - checkoutBranch, - getBranchCommit, - setBranchPrefix, -} from '../../../util/git'; +import { setBranchPrefix } from '../../../util/git'; import { checkIfConfigured } from '../configured'; -import { checkOnboardingBranch } from '../onboarding/branch'; import { initApis } from './apis'; -import { - getResolvedConfig, - initializeCaches, - setResolvedConfig, -} from './cache'; -import { mergeRenovateConfig } from './config'; -import { detectSemanticCommits } from './semantic'; +import { initializeCaches } from './cache'; +import { getRepoConfig } from './config'; import { detectVulnerabilityAlerts } from './vulnerability'; function initializeConfig(config: RenovateConfig): RenovateConfig { return { ...clone(config), errors: [], warnings: [], branchList: [] }; } -async function getRepoConfig(config_: RenovateConfig): Promise<RenovateConfig> { - let config = { ...config_ }; - config.baseBranch = config.defaultBranch; - config.baseBranchSha = await checkoutBranch(config.baseBranch); - config.semanticCommits = await detectSemanticCommits(config); - config = await checkOnboardingBranch(config); - config = await mergeRenovateConfig(config); - return config; -} - export async function initRepo( config_: RenovateConfig ): Promise<RenovateConfig> { let config: RenovateConfig = initializeConfig(config_); await initializeCaches(config); config = await initApis(config); - config.defaultBranchSha = getBranchCommit(config.defaultBranch); - const resolvedConfig = getResolvedConfig(config.defaultBranchSha); - if (resolvedConfig) { - config = resolvedConfig; - } else { - config = await getRepoConfig(config); - setResolvedConfig(config); - } + config = await getRepoConfig(config); checkIfConfigured(config); await setBranchPrefix(config.branchPrefix); config = await detectVulnerabilityAlerts(config); -- GitLab