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