Skip to content

Commit 6a4fd89

Browse files
dominique-blockchainwraithgar
authored andcommitted
fix: semver.diff prerelease to release recognition
1 parent da08e01 commit 6a4fd89

File tree

2 files changed

+32
-9
lines changed

2 files changed

+32
-9
lines changed

Diff for: 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

Diff for: test/functions/diff.js

+11-4
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,25 @@ test('diff versions test', (t) => {
55
// [version1, version2, result]
66
// diff(version1, version2) -> result
77
[['1.2.3', '0.2.3', 'major'],
8+
['0.2.3', '1.2.3', 'major'],
89
['1.4.5', '0.2.3', 'major'],
910
['1.2.3', '2.0.0-pre', 'premajor'],
11+
['2.0.0-pre', '1.2.3', 'premajor'],
1012
['1.2.3', '1.3.3', 'minor'],
1113
['1.0.1', '1.1.0-pre', 'preminor'],
1214
['1.2.3', '1.2.4', 'patch'],
1315
['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'],
16+
['0.0.1', '0.0.1-pre', 'patch'],
17+
['0.0.1', '0.0.1-pre-2', 'patch'],
18+
['1.1.0', '1.1.0-pre', 'minor'],
1719
['1.1.0-pre-1', '1.1.0-pre-2', 'prerelease'],
1820
['1.0.0', '1.0.0', null],
19-
21+
['1.0.0', '1.0.0', null],
22+
['1.0.0', '1.0.0', null],
23+
['0.0.2-1', '0.0.2', 'patch'],
24+
['0.1.0-1', '0.1.0', 'minor'],
25+
['1.0.0-1', '1.0.0', 'major'],
26+
['0.0.0-1', '0.0.0', 'prerelease'],
2027
].forEach((v) => {
2128
const version1 = v[0]
2229
const version2 = v[1]

0 commit comments

Comments
 (0)