From d588e3782864b1cab2fe9f2452b848e8c7f609d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emin=20Berkay=20Da=C4=9Flar?= <77811404+eminberkayd@users.noreply.github.com> Date: Wed, 29 Jan 2025 19:22:04 +0300 Subject: [PATCH] fix(diff): fix prerelease to stable version diff logic (#755) Refactored version diff logic to handle transitions from prerelease versions to stable versions correctly for major/minor/patch version bumps. Closes #606 --------- Co-authored-by: berkay.daglar --- functions/diff.js | 17 +++++------------ test/functions/diff.js | 7 +++++++ 2 files changed, 12 insertions(+), 12 deletions(-) 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]