diff --git a/lib/workers/package/versions.js b/lib/workers/package/versions.js index 413ae1e450e5a4a56e3c0870725c6ac5dded0ecb..4ee23863881c1f34201b9e0919920153516515d1 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 997c2f2d817a6844d7f4f17c2d26830d64ba1f37..1bd86b1f0a160f33a71853d0e50106d06084187a 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 b6525ed0bae2f9081becb619fede71c06099be95..c883196065ec6397e2c1e6b8450979da9eec694d 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;