From 3d84c22cf09a2938534f0b6d0a8a7f1d1244e56b Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@keylocation.sg>
Date: Mon, 16 Oct 2017 21:57:48 +0200
Subject: [PATCH] feat: skip regenerating lock file maintenance if branch
 exists (#956)

---
 lib/workers/branch/lock-files.js                    |  6 ++++++
 .../branch/__snapshots__/lock-files.spec.js.snap    |  7 +++++++
 test/workers/branch/lock-files.spec.js              | 13 ++++++++++++-
 3 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/lib/workers/branch/lock-files.js b/lib/workers/branch/lock-files.js
index 17c37b7f74..f57e7b6d3e 100644
--- a/lib/workers/branch/lock-files.js
+++ b/lib/workers/branch/lock-files.js
@@ -197,6 +197,12 @@ async function getUpdatedLockFiles(config) {
   let lockFileError = false;
   const updatedLockFiles = [];
   try {
+    if (
+      config.type === 'lockFileMaintenance' &&
+      (await config.api.branchExists(config.branchName))
+    ) {
+      return { lockFileError, updatedLockFiles };
+    }
     const dirs = module.exports.determineLockFileDirs(config);
     logger.debug({ dirs }, 'lock file dirs');
     await module.exports.writeExistingFiles(config);
diff --git a/test/workers/branch/__snapshots__/lock-files.spec.js.snap b/test/workers/branch/__snapshots__/lock-files.spec.js.snap
index 5a2a198df2..bfe66104c9 100644
--- a/test/workers/branch/__snapshots__/lock-files.spec.js.snap
+++ b/test/workers/branch/__snapshots__/lock-files.spec.js.snap
@@ -47,6 +47,13 @@ Object {
 }
 `;
 
+exports[`workers/branch/lock-files getUpdatedLockFiles returns no error and empty lockfiles if lock file maintenance exists 1`] = `
+Object {
+  "lockFileError": false,
+  "updatedLockFiles": Array [],
+}
+`;
+
 exports[`workers/branch/lock-files getUpdatedLockFiles returns no error and empty lockfiles if none updated 1`] = `
 Object {
   "lockFileError": false,
diff --git a/test/workers/branch/lock-files.spec.js b/test/workers/branch/lock-files.spec.js
index 8997f55462..333077a476 100644
--- a/test/workers/branch/lock-files.spec.js
+++ b/test/workers/branch/lock-files.spec.js
@@ -276,7 +276,10 @@ describe('workers/branch/lock-files', () => {
     beforeEach(() => {
       config = {
         ...defaultConfig,
-        api: { getFileContent: jest.fn(() => 'some lock file contents') },
+        api: {
+          branchExists: jest.fn(),
+          getFileContent: jest.fn(() => 'some lock file contents'),
+        },
         logger,
         tmpDir: { name: 'some-tmp-dir' },
       };
@@ -286,6 +289,14 @@ describe('workers/branch/lock-files', () => {
       yarn.generateLockFile.mockReturnValue('some lock file contents');
       lockFiles.determineLockFileDirs = jest.fn();
     });
+    it('returns no error and empty lockfiles if lock file maintenance exists', async () => {
+      config.type = 'lockFileMaintenance';
+      config.api.branchExists.mockReturnValueOnce(true);
+      const res = await getUpdatedLockFiles(config);
+      expect(res).toMatchSnapshot();
+      expect(res.lockFileError).toBe(false);
+      expect(res.updatedLockFiles).toHaveLength(0);
+    });
     it('returns no error and empty lockfiles if none updated', async () => {
       lockFiles.determineLockFileDirs.mockReturnValueOnce({
         packageLockFileDirs: [],
-- 
GitLab