Skip to content

Commit

Permalink
fix(diff): fix prerelease to stable version diff logic (#755)
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
eminberkayd and berkay.daglar authored Jan 29, 2025
1 parent 753e02b commit d588e37
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 12 deletions.
17 changes: 5 additions & 12 deletions functions/diff.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
7 changes: 7 additions & 0 deletions test/functions/diff.js
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down

0 comments on commit d588e37

Please sign in to comment.