node-semver icon indicating copy to clipboard operation
node-semver copied to clipboard

[BUG] semver.diff returns incorrect responses

Open deefactorial opened this issue 5 years ago • 0 comments

What / Why

const semver = require('semver');

let releaseArray = ['prepatch', 'prerelease', 'patch', 'preminor', 'prerelease', 'minor', 'premajor', 'prerelease', 'major'];
let v = '0.0.1';

releaseArray.forEach((release) => {
    let bump = semver.inc(v, release)
    let diff = semver.diff(v, bump)

    console.log(`before: '${v}'`, `after: '${bump}'`, `release type: '${release}'`, `diff response: '${diff}'`, `is diff response equal? '${release === diff}'`);
    v = bump;
});

console log output: (with spaces added for readability)

before: '0.0.1'    after: '0.0.2-0'     release type: 'prepatch'   diff response: 'prepatch'   is diff response equal? 'true'
before: '0.0.2-0'  after: '0.0.2-1'     release type: 'prerelease' diff response: 'prerelease' is diff response equal? 'true'
before: '0.0.2-1'  after: '0.0.2'       release type: 'patch'      diff response: 'prerelease' is diff response equal? 'false'
before: '0.0.2'    after: '0.1.0-0'     release type: 'preminor'   diff response: 'preminor'   is diff response equal? 'true'
before: '0.1.0-0'  after: '0.1.0-1'     release type: 'prerelease' diff response: 'prerelease' is diff response equal? 'true'
before: '0.1.0-1'  after: '0.1.0'       release type: 'minor'      diff response: 'prerelease' is diff response equal? 'false'
before: '0.1.0'    after: '1.0.0-0'     release type: 'premajor'   diff response: 'premajor'   is diff response equal? 'true'
before: '1.0.0-0'  after: '1.0.0-1'     release type: 'prerelease' diff response: 'prerelease' is diff response equal? 'true'
before: '1.0.0-1'  after: '1.0.0'       release type: 'major'      diff response: 'prerelease' is diff response equal? 'false'

When

When I do go from a prerelease to a release (patch, minor, or major) semver.diff returns incorrect responses.

Where

semver.diff

How

semver.diff('0.0.2-1', '0.0.2')

Current Behavior

semver.diff('0.0.2-1', '0.0.2') === 'prerelease' semver.diff('0.1.0-1', '0.1.0') === 'prerelease' semver.diff('1.0.0-1', '1.0.0') === 'prerelease'

Steps to Reproduce

semver.diff('0.0.2-1', '0.0.2')

Expected Behavior

semver.diff('0.0.2-1', '0.0.2') === 'patch' semver.diff('0.1.0-1', '0.1.0') === 'minor' semver.diff('1.0.0-1', '1.0.0') === 'major'

Who

@deefactorial

References

#288

deefactorial avatar Jul 13 '20 23:07 deefactorial