diff --git a/functions/diff.js b/functions/diff.js index fc224e30..33171dc1 100644 --- a/functions/diff.js +++ b/functions/diff.js @@ -27,20 +27,13 @@ const diff = (version1, version2) => { return 'major' } - // Otherwise it can be determined by checking the high version - - if (highVersion.patch) { - // anything higher than a patch bump would result in the wrong version + // If the main part has no difference + if (lowVersion.compareMain(highVersion) === 0) { + if (lowVersion.minor && !lowVersion.patch) { + return 'minor' + } return 'patch' } - - if (highVersion.minor) { - // anything higher than a minor bump would result in the wrong version - return 'minor' - } - - // bumping major/minor/patch all have same result - return 'major' } // add the `pre` prefix if we are going to a prerelease version diff --git a/test/functions/diff.js b/test/functions/diff.js index 720e159b..80f5e3c3 100644 --- a/test/functions/diff.js +++ b/test/functions/diff.js @@ -34,6 +34,13 @@ test('diff versions test', (t) => { ['1.0.0-1', '2.0.0-1', 'premajor'], ['1.0.0-1', '1.1.0-1', 'preminor'], ['1.0.0-1', '1.0.1-1', 'prepatch'], + ['1.7.2-1', '1.8.1', 'minor'], + ['1.1.1-pre', '2.1.1-pre', 'premajor'], + ['1.1.1-pre', '2.1.1', 'major'], + ['1.2.3-1', '1.2.3', 'patch'], + ['1.4.0-1', '2.3.5', 'major'], + ['1.6.1-5', '1.7.2', 'minor'], + ['2.0.0-1', '2.1.1', 'major'], ].forEach((v) => { const version1 = v[0] const version2 = v[1]