From dcdfc0d004939a8ab8b51f52afd788af1bb7bbf8 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@keylocation.sg>
Date: Fri, 3 Nov 2017 11:50:57 +0100
Subject: [PATCH] fix: refactor pin dependencies first using array.some (#1094)

---
 lib/workers/repository/index.js               | 21 +++-----
 .../__snapshots__/index.spec.js.snap          | 51 -------------------
 test/workers/repository/index.spec.js         | 31 -----------
 3 files changed, 7 insertions(+), 96 deletions(-)
 delete mode 100644 test/workers/repository/__snapshots__/index.spec.js.snap

diff --git a/lib/workers/repository/index.js b/lib/workers/repository/index.js
index f16d281a37..9de200ad23 100644
--- a/lib/workers/repository/index.js
+++ b/lib/workers/repository/index.js
@@ -13,20 +13,9 @@ const { checkMonorepos } = require('../../manager/npm/monorepos');
 const { ensureOnboardingPr } = require('./onboarding/pr');
 
 module.exports = {
-  pinDependenciesFirst,
   renovateRepository,
 };
 
-function pinDependenciesFirst(a, b) {
-  if (a.type === 'pin') {
-    return false;
-  }
-  if (b.type === 'pin') {
-    return true;
-  }
-  return a.branchName > b.branchName;
-}
-
 async function renovateRepository(repoConfig, token) {
   let config = { ...repoConfig };
   const { logger } = config;
@@ -115,16 +104,20 @@ async function renovateRepository(repoConfig, token) {
     const res = await upgrades.branchifyUpgrades(allUpgrades, logger);
     config.errors = config.errors.concat(res.errors);
     config.warnings = config.warnings.concat(res.warnings);
-    let branchUpgrades = res.upgrades.sort(pinDependenciesFirst);
+    let branchUpgrades = res.upgrades;
+    logger.info(
+      { branches: branchUpgrades.map(upg => upg.branchName) },
+      'branchUpgrades'
+    );
     logger.debug(`Updating ${branchUpgrades.length} branch(es)`);
     logger.trace({ config: branchUpgrades }, 'branchUpgrades');
     if (config.repoIsOnboarded) {
       logger.info(`Processing ${branchUpgrades.length} branch(es)`);
       const branchStartTime = process.hrtime();
       branchList = branchUpgrades.map(upgrade => upgrade.branchName);
-      if (branchUpgrades.length && branchUpgrades[0].isPin) {
+      if (branchUpgrades.some(upg => upg.isPin)) {
+        logger.info('Processing only pin branches first');
         branchUpgrades = branchUpgrades.filter(upg => upg.isPin);
-        logger.info(`Processing ${branchUpgrades.length} "pin" PRs first`);
       }
       for (const branchUpgrade of branchUpgrades) {
         const branchResult = await branchWorker.processBranch(
diff --git a/test/workers/repository/__snapshots__/index.spec.js.snap b/test/workers/repository/__snapshots__/index.spec.js.snap
deleted file mode 100644
index d73bfc6c3d..0000000000
--- a/test/workers/repository/__snapshots__/index.spec.js.snap
+++ /dev/null
@@ -1,51 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`workers/repository pinDependenciesFirst returns pin first 1`] = `
-Array [
-  Object {
-    "branchName": "d",
-    "type": "pin",
-  },
-  Object {
-    "branchName": "a",
-  },
-  Object {
-    "branchName": "b",
-  },
-  Object {
-    "branchName": "c",
-  },
-]
-`;
-
-exports[`workers/repository pinDependenciesFirst returns pin first 2`] = `
-Array [
-  Object {
-    "branchName": "d",
-    "type": "pin",
-  },
-  Object {
-    "branchName": "a",
-  },
-  Object {
-    "branchName": "b",
-  },
-  Object {
-    "branchName": "c",
-  },
-]
-`;
-
-exports[`workers/repository pinDependenciesFirst returns sorted if no pin 1`] = `
-Array [
-  Object {
-    "branchName": "a",
-  },
-  Object {
-    "branchName": "b",
-  },
-  Object {
-    "branchName": "c",
-  },
-]
-`;
diff --git a/test/workers/repository/index.spec.js b/test/workers/repository/index.spec.js
index bc0100dff6..2d612bf17f 100644
--- a/test/workers/repository/index.spec.js
+++ b/test/workers/repository/index.spec.js
@@ -12,37 +12,6 @@ const onboardingPr = require('../../../lib/workers/repository/onboarding/pr');
 jest.mock('../../../lib/workers/repository/onboarding/pr');
 
 describe('workers/repository', () => {
-  describe('pinDependenciesFirst', () => {
-    it('returns sorted if no pin', () => {
-      const arr = [
-        { branchName: 'a' },
-        { branchName: 'c' },
-        { branchName: 'b' },
-      ];
-      arr.sort(repositoryWorker.pinDependenciesFirst);
-      expect(arr).toMatchSnapshot();
-    });
-    it('returns pin first', () => {
-      const arr = [
-        { branchName: 'a' },
-        { branchName: 'c' },
-        { branchName: 'd', type: 'pin' },
-        { branchName: 'b' },
-      ];
-      arr.sort(repositoryWorker.pinDependenciesFirst);
-      expect(arr).toMatchSnapshot();
-    });
-    it('returns pin first', () => {
-      const arr = [
-        { branchName: 'd', type: 'pin' },
-        { branchName: 'a' },
-        { branchName: 'c' },
-        { branchName: 'b' },
-      ];
-      arr.sort(repositoryWorker.pinDependenciesFirst);
-      expect(arr).toMatchSnapshot();
-    });
-  });
   describe('renovateRepository', () => {
     let config;
     beforeEach(() => {
-- 
GitLab