diff --git a/functions/diff.js b/functions/diff.js index 651a3018..ce9004bd 100644 --- a/functions/diff.js +++ b/functions/diff.js @@ -10,11 +10,27 @@ const diff = (version1, version2) => { const hasPre = v1.prerelease.length || v2.prerelease.length const prefix = hasPre ? 'pre' : '' const defaultResult = hasPre ? 'prerelease' : '' - for (const key in v1) { - if (key === 'major' || key === 'minor' || key === 'patch') { - if (v1[key] !== v2[key]) { - return prefix + key - } + + if (v1.major !== v2.major) { + return prefix + 'major' + } + if (v1.minor !== v2.minor) { + return prefix + 'minor' + } + + if (v1.patch !== v2.patch) { + return prefix + 'patch' + } + + if (!v1.prerelease.length || !v2.prerelease.length) { + if (v1.patch) { + return 'patch' + } + if (v1.minor) { + return 'minor' + } + if (v1.major) { + return 'major' } } return defaultResult // may be undefined diff --git a/test/functions/diff.js b/test/functions/diff.js index 2369c98f..11663c95 100644 --- a/test/functions/diff.js +++ b/test/functions/diff.js @@ -4,19 +4,25 @@ 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], - + ['0.0.2-1', '0.0.2', 'patch'], + ['0.1.0-1', '0.1.0', 'minor'], + ['1.0.0-1', '1.0.0', 'major'], + ['0.0.0-1', '0.0.0', 'prerelease'], ].forEach((v) => { const version1 = v[0] const version2 = v[1]