From d22193f0c3581761d2df6a1aee01bc4e90e43330 Mon Sep 17 00:00:00 2001 From: Unknown Date: Tue, 14 Jul 2020 10:22:10 -0700 Subject: [PATCH] fix: semver.diff prerelease to release recognition --- functions/diff.js | 11 +++++++++++ test/functions/diff.js | 16 ++++++++++------ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/functions/diff.js b/functions/diff.js index 87200ef3..f4b42bfd 100644 --- a/functions/diff.js +++ b/functions/diff.js @@ -17,6 +17,17 @@ const diff = (version1, version2) => { } } } + if (v1['major'] === v2['major'] && + v1['minor'] === v2['minor'] && + v1['patch'] === v2['patch'] && !(v1.prerelease.length && v2.prerelease.length)) { + const releaseTypes = [] + for (const key in v1) { + if (key === 'major' || key === 'minor' || key === 'patch') { + if (v1[key]) releaseTypes.push(key); + } + } + return releaseTypes.pop(); + } return defaultResult // may be undefined } } diff --git a/test/functions/diff.js b/test/functions/diff.js index 14c62819..33d2e892 100644 --- a/test/functions/diff.js +++ b/test/functions/diff.js @@ -4,19 +4,23 @@ const diff = require('../../functions/diff') test('diff versions test', (t) => { // [version1, version2, result] // diff(version1, version2) -> result - [['1.2.3', '0.2.3', 'major'], + [ ['1.2.3', '0.2.3', 'major'], + ['0.2.3', '1.2.3', 'major'], ['1.4.5', '0.2.3', 'major'], ['1.2.3', '2.0.0-pre', 'premajor'], + ['2.0.0-pre', '1.2.3', 'premajor'], ['1.2.3', '1.3.3', 'minor'], ['1.0.1', '1.1.0-pre', 'preminor'], ['1.2.3', '1.2.4', 'patch'], ['1.2.3', '1.2.4-pre', 'prepatch'], - ['0.0.1', '0.0.1-pre', 'prerelease'], - ['0.0.1', '0.0.1-pre-2', 'prerelease'], - ['1.1.0', '1.1.0-pre', 'prerelease'], + ['0.0.1', '0.0.1-pre', 'patch'], + ['0.0.1', '0.0.1-pre-2', 'patch'], + ['1.1.0', '1.1.0-pre', 'minor'], ['1.1.0-pre-1', '1.1.0-pre-2', 'prerelease'], - ['1.0.0', '1.0.0', null] - + ['1.0.0', '1.0.0', null], + ['0.0.2-1', '0.0.2', 'patch'], + ['0.1.0-1', '0.1.0', 'minor'], + ['1.0.0-1', '1.0.0', 'major'] ].forEach((v) => { const version1 = v[0] const version2 = v[1]