Skip to content

Commit 796cbe2

Browse files
fix: semver.diff prerelease to release recognition (#533)
Co-authored-by: deefactorial <dominique@blockchaingroup.io>
1 parent 3f222b1 commit 796cbe2

File tree

2 files changed

+32
-10
lines changed

2 files changed

+32
-10
lines changed

functions/diff.js

+21-5
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,27 @@ const diff = (version1, version2) => {
1010
const hasPre = v1.prerelease.length || v2.prerelease.length
1111
const prefix = hasPre ? 'pre' : ''
1212
const defaultResult = hasPre ? 'prerelease' : ''
13-
for (const key in v1) {
14-
if (key === 'major' || key === 'minor' || key === 'patch') {
15-
if (v1[key] !== v2[key]) {
16-
return prefix + key
17-
}
13+
14+
if (v1.major !== v2.major) {
15+
return prefix + 'major'
16+
}
17+
if (v1.minor !== v2.minor) {
18+
return prefix + 'minor'
19+
}
20+
21+
if (v1.patch !== v2.patch) {
22+
return prefix + 'patch'
23+
}
24+
25+
if (!v1.prerelease.length || !v2.prerelease.length) {
26+
if (v1.patch) {
27+
return 'patch'
28+
}
29+
if (v1.minor) {
30+
return 'minor'
31+
}
32+
if (v1.major) {
33+
return 'major'
1834
}
1935
}
2036
return defaultResult // may be undefined

test/functions/diff.js

+11-5
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,25 @@ const diff = require('../../functions/diff')
44
test('diff versions test', (t) => {
55
// [version1, version2, result]
66
// diff(version1, version2) -> result
7-
[['1.2.3', '0.2.3', 'major'],
7+
[
8+
['1.2.3', '0.2.3', 'major'],
9+
['0.2.3', '1.2.3', 'major'],
810
['1.4.5', '0.2.3', 'major'],
911
['1.2.3', '2.0.0-pre', 'premajor'],
12+
['2.0.0-pre', '1.2.3', 'premajor'],
1013
['1.2.3', '1.3.3', 'minor'],
1114
['1.0.1', '1.1.0-pre', 'preminor'],
1215
['1.2.3', '1.2.4', 'patch'],
1316
['1.2.3', '1.2.4-pre', 'prepatch'],
14-
['0.0.1', '0.0.1-pre', 'prerelease'],
15-
['0.0.1', '0.0.1-pre-2', 'prerelease'],
16-
['1.1.0', '1.1.0-pre', 'prerelease'],
17+
['0.0.1', '0.0.1-pre', 'patch'],
18+
['0.0.1', '0.0.1-pre-2', 'patch'],
19+
['1.1.0', '1.1.0-pre', 'minor'],
1720
['1.1.0-pre-1', '1.1.0-pre-2', 'prerelease'],
1821
['1.0.0', '1.0.0', null],
19-
22+
['0.0.2-1', '0.0.2', 'patch'],
23+
['0.1.0-1', '0.1.0', 'minor'],
24+
['1.0.0-1', '1.0.0', 'major'],
25+
['0.0.0-1', '0.0.0', 'prerelease'],
2026
].forEach((v) => {
2127
const version1 = v[0]
2228
const version2 = v[1]

0 commit comments

Comments
 (0)