From bc684c7b292c0c7faab99b0e7d3b8d22fef5435f Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Tue, 27 Feb 2018 14:50:09 +0100 Subject: [PATCH] fix: implicit patch-only upgrade MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use type ‘patch’ only when patch automerge is true AND minor automerge is not true. --- lib/workers/package/versions.js | 7 ++++-- .../__snapshots__/versions.spec.js.snap | 25 +++++++++++++++++++ test/workers/package/versions.spec.js | 16 +++++++++++- 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/lib/workers/package/versions.js b/lib/workers/package/versions.js index 413ae1e450..4ee2386388 100644 --- a/lib/workers/package/versions.js +++ b/lib/workers/package/versions.js @@ -108,13 +108,16 @@ function determineUpgrades(npmDep, config) { // Group by major versions const newVersionMajor = semver.major(newVersion); const newVersionMinor = semver.minor(newVersion); - const hasPatchAutomerge = config.patch && config.patch.automerge === true; + const hasPatchOnlyAutomerge = + config.patch && + config.patch.automerge === true && + (config.minor && config.minor.automerge !== true); let type; if (newVersionMajor > semver.major(changeLogFromVersion)) { type = 'major'; } else if ( newVersionMinor === semver.minor(changeLogFromVersion) && - (config.separatePatchReleases || hasPatchAutomerge) + (config.separatePatchReleases || hasPatchOnlyAutomerge) ) { // Only use patch if configured to type = 'patch'; diff --git a/test/workers/package/__snapshots__/versions.spec.js.snap b/test/workers/package/__snapshots__/versions.spec.js.snap index 997c2f2d81..1bd86b1f0a 100644 --- a/test/workers/package/__snapshots__/versions.spec.js.snap +++ b/test/workers/package/__snapshots__/versions.spec.js.snap @@ -158,6 +158,31 @@ Array [ ] `; +exports[`workers/package/versions .determineUpgrades(npmDep, config) returns minor update if automerging both patch and minor 1`] = ` +Array [ + Object { + "changeLogFromVersion": "0.9.0", + "changeLogToVersion": "0.9.7", + "isMinor": true, + "newVersion": "0.9.7", + "newVersionMajor": 0, + "newVersionMinor": 9, + "type": "minor", + "unpublishable": false, + }, + Object { + "changeLogFromVersion": "0.9.0", + "changeLogToVersion": "1.4.1", + "isMajor": true, + "newVersion": "1.4.1", + "newVersionMajor": 1, + "newVersionMinor": 4, + "type": "major", + "unpublishable": false, + }, +] +`; + exports[`workers/package/versions .determineUpgrades(npmDep, config) returns minor update if separate patches not configured 1`] = ` Array [ Object { diff --git a/test/workers/package/versions.spec.js b/test/workers/package/versions.spec.js index b6525ed0ba..c883196065 100644 --- a/test/workers/package/versions.spec.js +++ b/test/workers/package/versions.spec.js @@ -69,7 +69,21 @@ describe('workers/package/versions', () => { automerge: true, }; config.currentVersion = '0.9.0'; - expect(versions.determineUpgrades(qJson, config)).toMatchSnapshot(); + const res = versions.determineUpgrades(qJson, config); + expect(res).toMatchSnapshot(); + expect(res[0].type).toEqual('patch'); + }); + it('returns minor update if automerging both patch and minor', () => { + config.patch = { + automerge: true, + }; + config.minor = { + automerge: true, + }; + config.currentVersion = '0.9.0'; + const res = versions.determineUpgrades(qJson, config); + expect(res).toMatchSnapshot(); + expect(res[0].type).toEqual('minor'); }); it('returns patch update if separatePatchReleases', () => { config.separatePatchReleases = true; -- GitLab