From 83bf1629494efa651f3bf0180c539691fa850c36 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Mon, 2 Jul 2018 07:43:21 +0200 Subject: [PATCH] fix: automerge only if every upgrade in branch is automerge MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When generating a branch’s config, iterate through all upgrades and set automerge=true for the branch only if all upgrades have automerge=true. Similarly, set canBeUnpublished=true if ANY upgrade can be unPublished. Closes #1999 --- lib/workers/branch/status-checks.js | 7 ++----- lib/workers/repository/updates/generate.js | 9 +++++++-- test/workers/branch/status-checks.spec.js | 11 ++--------- test/workers/repository/updates/generate.spec.js | 6 ++++++ 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/lib/workers/branch/status-checks.js b/lib/workers/branch/status-checks.js index d5d931a1b0..4e0a7316d7 100644 --- a/lib/workers/branch/status-checks.js +++ b/lib/workers/branch/status-checks.js @@ -6,17 +6,14 @@ async function setUnpublishable(config) { if (!config.unpublishSafe) { return; } - const canBeUnpublished = config.upgrades.some( - upgrade => upgrade.canBeUnpublished - ); const context = 'renovate/unpublish-safe'; const existingState = await platform.getBranchStatusCheck( config.branchName, context ); // Set canBeUnpublished status check - const state = canBeUnpublished ? 'pending' : 'success'; - const description = canBeUnpublished + const state = config.canBeUnpublished ? 'pending' : 'success'; + const description = config.canBeUnpublished ? 'Packages < 24 hours old can be unpublished' : 'Packages cannot be unpublished'; // Check if state needs setting diff --git a/lib/workers/repository/updates/generate.js b/lib/workers/repository/updates/generate.js index 7e0b073c50..b37ab0d161 100644 --- a/lib/workers/repository/updates/generate.js +++ b/lib/workers/repository/updates/generate.js @@ -6,7 +6,7 @@ const { DateTime } = require('luxon'); function generateBranchConfig(branchUpgrades) { logger.debug(`generateBranchConfig(${branchUpgrades.length})`); logger.trace({ config: branchUpgrades }); - const config = { + let config = { upgrades: [], }; const hasGroupName = branchUpgrades[0].groupName !== null; @@ -136,7 +136,12 @@ function generateBranchConfig(branchUpgrades) { config.hasTypes = true; } // Now assign first upgrade's config as branch config - return { ...config, ...config.upgrades[0], releaseTimestamp }; + config = { ...config, ...config.upgrades[0], releaseTimestamp }; + config.canBeUnpublished = config.upgrades.some( + upgrade => upgrade.canBeUnpublished + ); + config.automerge = config.upgrades.every(upgrade => upgrade.automerge); + return config; } module.exports = { diff --git a/test/workers/branch/status-checks.spec.js b/test/workers/branch/status-checks.spec.js index 28c1d21432..f2926d73e8 100644 --- a/test/workers/branch/status-checks.spec.js +++ b/test/workers/branch/status-checks.spec.js @@ -9,7 +9,6 @@ describe('workers/branch/status-checks', () => { beforeEach(() => { config = { ...defaultConfig, - upgrades: [], }; }); afterEach(() => { @@ -26,21 +25,15 @@ describe('workers/branch/status-checks', () => { expect(platform.setBranchStatus.mock.calls.length).toBe(1); }); it('finds canBeUnpublished false and sets status', async () => { + config.canBeUnpublished = true; config.unpublishSafe = true; - config.upgrades = [ - { canBeUnpublished: true }, - { canBeUnpublished: false }, - ]; await setUnpublishable(config); expect(platform.getBranchStatusCheck.mock.calls.length).toBe(1); expect(platform.setBranchStatus.mock.calls.length).toBe(1); }); it('finds canBeUnpublished false and skips status', async () => { config.unpublishSafe = true; - config.upgrades = [ - { canBeUnpublished: false }, - { canBeUnpublished: false }, - ]; + config.canBeUnpublished = false; platform.getBranchStatusCheck.mockReturnValueOnce('success'); await setUnpublishable(config); expect(platform.getBranchStatusCheck.mock.calls.length).toBe(1); diff --git a/test/workers/repository/updates/generate.spec.js b/test/workers/repository/updates/generate.spec.js index 3145e22bf9..4ddd203157 100644 --- a/test/workers/repository/updates/generate.spec.js +++ b/test/workers/repository/updates/generate.spec.js @@ -93,6 +93,8 @@ describe('workers/repository/updates/generate', () => { foo: 2, }, releaseTimestamp: '2017-02-07T20:01:41+00:00', + canBeUnpublished: false, + automerge: true, }, { depName: 'some-other-dep', @@ -108,12 +110,16 @@ describe('workers/repository/updates/generate', () => { foo: 2, }, releaseTimestamp: '2017-02-06T20:01:41+00:00', + canBeUnpublished: true, + automerge: false, }, ]; const res = generateBranchConfig(branch); expect(res.foo).toBe(2); expect(res.groupName).toBeDefined(); expect(res.releaseTimestamp).toEqual('2017-02-07T20:01:41+00:00'); + expect(res.canBeUnpublished).toBe(true); + expect(res.automerge).toBe(false); }); it('groups multiple upgrades different version', () => { const branch = [ -- GitLab