From 572661b90b0ebd71ee9412a17a61db00181be05e Mon Sep 17 00:00:00 2001 From: Matthias Kurz Date: Thu, 25 Mar 2021 10:48:54 +0100 Subject: [PATCH] Add $NEXT_{PATCH,MINOR,MAJOR}_VERSION_{PATCH,MINOR,MAJOR} variables --- lib/versions.js | 9 +++++ test/versions.test.js | 92 +++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 97 insertions(+), 4 deletions(-) diff --git a/lib/versions.js b/lib/versions.js index 157551fd53..97a1826397 100644 --- a/lib/versions.js +++ b/lib/versions.js @@ -21,8 +21,17 @@ const splitSemVer = (input, versionKey = 'version') => { const getTemplatableVersion = (input) => { const templatableVersion = { $NEXT_MAJOR_VERSION: splitSemVer({ ...input, inc: 'major' }), + $NEXT_MAJOR_VERSION_MAJOR: splitSemVer({ ...input, inc: 'major', template: '$MAJOR' }), + $NEXT_MAJOR_VERSION_MINOR: splitSemVer({ ...input, inc: 'major', template: '$MINOR' }), + $NEXT_MAJOR_VERSION_PATCH: splitSemVer({ ...input, inc: 'major', template: '$PATCH' }), $NEXT_MINOR_VERSION: splitSemVer({ ...input, inc: 'minor' }), + $NEXT_MINOR_VERSION_MAJOR: splitSemVer({ ...input, inc: 'minor', template: '$MAJOR' }), + $NEXT_MINOR_VERSION_MINOR: splitSemVer({ ...input, inc: 'minor', template: '$MINOR' }), + $NEXT_MINOR_VERSION_PATCH: splitSemVer({ ...input, inc: 'minor', template: '$PATCH' }), $NEXT_PATCH_VERSION: splitSemVer({ ...input, inc: 'patch' }), + $NEXT_PATCH_VERSION_MAJOR: splitSemVer({ ...input, inc: 'patch', template: '$MAJOR' }), + $NEXT_PATCH_VERSION_MINOR: splitSemVer({ ...input, inc: 'patch', template: '$MINOR' }), + $NEXT_PATCH_VERSION_PATCH: splitSemVer({ ...input, inc: 'patch', template: '$PATCH' }), $INPUT_VERSION: splitSemVer(input, 'inputVersion'), $RESOLVED_VERSION: splitSemVer({ ...input, diff --git a/test/versions.test.js b/test/versions.test.js index c7a18b2af1..ff5b3b7500 100644 --- a/test/versions.test.js +++ b/test/versions.test.js @@ -6,44 +6,128 @@ describe('versions', () => { const versionInfo = getVersionInfo({ tag_name: 'v10.0.3', name: 'Some release', - }) + }, "$MAJOR.$MINOR.$PATCH") expect(versionInfo.$NEXT_MAJOR_VERSION.version).toEqual('11.0.0') + expect(versionInfo.$NEXT_MAJOR_VERSION.template).toEqual('$MAJOR.$MINOR.$PATCH') + expect(versionInfo.$NEXT_MAJOR_VERSION_MAJOR.version).toEqual('11.0.0') + expect(versionInfo.$NEXT_MAJOR_VERSION_MAJOR.template).toEqual('$MAJOR') + expect(versionInfo.$NEXT_MAJOR_VERSION_MINOR.version).toEqual('11.0.0') + expect(versionInfo.$NEXT_MAJOR_VERSION_MINOR.template).toEqual('$MINOR') + expect(versionInfo.$NEXT_MAJOR_VERSION_PATCH.version).toEqual('11.0.0') + expect(versionInfo.$NEXT_MAJOR_VERSION_PATCH.template).toEqual('$PATCH') expect(versionInfo.$NEXT_MINOR_VERSION.version).toEqual('10.1.0') + expect(versionInfo.$NEXT_MINOR_VERSION.template).toEqual('$MAJOR.$MINOR.$PATCH') + expect(versionInfo.$NEXT_MINOR_VERSION_MAJOR.version).toEqual('10.1.0') + expect(versionInfo.$NEXT_MINOR_VERSION_MAJOR.template).toEqual('$MAJOR') + expect(versionInfo.$NEXT_MINOR_VERSION_MINOR.version).toEqual('10.1.0') + expect(versionInfo.$NEXT_MINOR_VERSION_MINOR.template).toEqual('$MINOR') + expect(versionInfo.$NEXT_MINOR_VERSION_PATCH.version).toEqual('10.1.0') + expect(versionInfo.$NEXT_MINOR_VERSION_PATCH.template).toEqual('$PATCH') expect(versionInfo.$NEXT_PATCH_VERSION.version).toEqual('10.0.4') + expect(versionInfo.$NEXT_PATCH_VERSION.template).toEqual('$MAJOR.$MINOR.$PATCH') + expect(versionInfo.$NEXT_PATCH_VERSION_MAJOR.version).toEqual('10.0.4') + expect(versionInfo.$NEXT_PATCH_VERSION_MAJOR.template).toEqual('$MAJOR') + expect(versionInfo.$NEXT_PATCH_VERSION_MINOR.version).toEqual('10.0.4') + expect(versionInfo.$NEXT_PATCH_VERSION_MINOR.template).toEqual('$MINOR') + expect(versionInfo.$NEXT_PATCH_VERSION_PATCH.version).toEqual('10.0.4') + expect(versionInfo.$NEXT_PATCH_VERSION_PATCH.template).toEqual('$PATCH') }) it('extracts a version-like string from the last release name if the tag isnt a version', () => { const versionInfo = getVersionInfo({ tag_name: 'notaproperversion', name: '10.0.3', - }) + }, "$MAJOR.$MINOR.$PATCH") expect(versionInfo.$NEXT_MAJOR_VERSION.version).toEqual('11.0.0') + expect(versionInfo.$NEXT_MAJOR_VERSION.template).toEqual('$MAJOR.$MINOR.$PATCH') + expect(versionInfo.$NEXT_MAJOR_VERSION_MAJOR.version).toEqual('11.0.0') + expect(versionInfo.$NEXT_MAJOR_VERSION_MAJOR.template).toEqual('$MAJOR') + expect(versionInfo.$NEXT_MAJOR_VERSION_MINOR.version).toEqual('11.0.0') + expect(versionInfo.$NEXT_MAJOR_VERSION_MINOR.template).toEqual('$MINOR') + expect(versionInfo.$NEXT_MAJOR_VERSION_PATCH.version).toEqual('11.0.0') + expect(versionInfo.$NEXT_MAJOR_VERSION_PATCH.template).toEqual('$PATCH') expect(versionInfo.$NEXT_MINOR_VERSION.version).toEqual('10.1.0') + expect(versionInfo.$NEXT_MINOR_VERSION.template).toEqual('$MAJOR.$MINOR.$PATCH') + expect(versionInfo.$NEXT_MINOR_VERSION_MAJOR.version).toEqual('10.1.0') + expect(versionInfo.$NEXT_MINOR_VERSION_MAJOR.template).toEqual('$MAJOR') + expect(versionInfo.$NEXT_MINOR_VERSION_MINOR.version).toEqual('10.1.0') + expect(versionInfo.$NEXT_MINOR_VERSION_MINOR.template).toEqual('$MINOR') + expect(versionInfo.$NEXT_MINOR_VERSION_PATCH.version).toEqual('10.1.0') + expect(versionInfo.$NEXT_MINOR_VERSION_PATCH.template).toEqual('$PATCH') expect(versionInfo.$NEXT_PATCH_VERSION.version).toEqual('10.0.4') + expect(versionInfo.$NEXT_PATCH_VERSION.template).toEqual('$MAJOR.$MINOR.$PATCH') + expect(versionInfo.$NEXT_PATCH_VERSION_MAJOR.version).toEqual('10.0.4') + expect(versionInfo.$NEXT_PATCH_VERSION_MAJOR.template).toEqual('$MAJOR') + expect(versionInfo.$NEXT_PATCH_VERSION_MINOR.version).toEqual('10.0.4') + expect(versionInfo.$NEXT_PATCH_VERSION_MINOR.template).toEqual('$MINOR') + expect(versionInfo.$NEXT_PATCH_VERSION_PATCH.version).toEqual('10.0.4') + expect(versionInfo.$NEXT_PATCH_VERSION_PATCH.template).toEqual('$PATCH') }) it('preferences tags over release names', () => { const versionInfo = getVersionInfo({ tag_name: '10.0.3', name: '8.1.0', - }) + }, "$MAJOR.$MINOR.$PATCH") expect(versionInfo.$NEXT_MAJOR_VERSION.version).toEqual('11.0.0') + expect(versionInfo.$NEXT_MAJOR_VERSION.template).toEqual('$MAJOR.$MINOR.$PATCH') + expect(versionInfo.$NEXT_MAJOR_VERSION_MAJOR.version).toEqual('11.0.0') + expect(versionInfo.$NEXT_MAJOR_VERSION_MAJOR.template).toEqual('$MAJOR') + expect(versionInfo.$NEXT_MAJOR_VERSION_MINOR.version).toEqual('11.0.0') + expect(versionInfo.$NEXT_MAJOR_VERSION_MINOR.template).toEqual('$MINOR') + expect(versionInfo.$NEXT_MAJOR_VERSION_PATCH.version).toEqual('11.0.0') + expect(versionInfo.$NEXT_MAJOR_VERSION_PATCH.template).toEqual('$PATCH') expect(versionInfo.$NEXT_MINOR_VERSION.version).toEqual('10.1.0') + expect(versionInfo.$NEXT_MINOR_VERSION.template).toEqual('$MAJOR.$MINOR.$PATCH') + expect(versionInfo.$NEXT_MINOR_VERSION_MAJOR.version).toEqual('10.1.0') + expect(versionInfo.$NEXT_MINOR_VERSION_MAJOR.template).toEqual('$MAJOR') + expect(versionInfo.$NEXT_MINOR_VERSION_MINOR.version).toEqual('10.1.0') + expect(versionInfo.$NEXT_MINOR_VERSION_MINOR.template).toEqual('$MINOR') + expect(versionInfo.$NEXT_MINOR_VERSION_PATCH.version).toEqual('10.1.0') + expect(versionInfo.$NEXT_MINOR_VERSION_PATCH.template).toEqual('$PATCH') expect(versionInfo.$NEXT_PATCH_VERSION.version).toEqual('10.0.4') + expect(versionInfo.$NEXT_PATCH_VERSION.template).toEqual('$MAJOR.$MINOR.$PATCH') + expect(versionInfo.$NEXT_PATCH_VERSION_MAJOR.version).toEqual('10.0.4') + expect(versionInfo.$NEXT_PATCH_VERSION_MAJOR.template).toEqual('$MAJOR') + expect(versionInfo.$NEXT_PATCH_VERSION_MINOR.version).toEqual('10.0.4') + expect(versionInfo.$NEXT_PATCH_VERSION_MINOR.template).toEqual('$MINOR') + expect(versionInfo.$NEXT_PATCH_VERSION_PATCH.version).toEqual('10.0.4') + expect(versionInfo.$NEXT_PATCH_VERSION_PATCH.template).toEqual('$PATCH') }) it('handles alpha/beta releases', () => { const versionInfo = getVersionInfo({ tag_name: 'v10.0.3-alpha', name: 'Some release', - }) + }, "$MAJOR.$MINOR.$PATCH") expect(versionInfo.$NEXT_MAJOR_VERSION.version).toEqual('11.0.0') + expect(versionInfo.$NEXT_MAJOR_VERSION.template).toEqual('$MAJOR.$MINOR.$PATCH') + expect(versionInfo.$NEXT_MAJOR_VERSION_MAJOR.version).toEqual('11.0.0') + expect(versionInfo.$NEXT_MAJOR_VERSION_MAJOR.template).toEqual('$MAJOR') + expect(versionInfo.$NEXT_MAJOR_VERSION_MINOR.version).toEqual('11.0.0') + expect(versionInfo.$NEXT_MAJOR_VERSION_MINOR.template).toEqual('$MINOR') + expect(versionInfo.$NEXT_MAJOR_VERSION_PATCH.version).toEqual('11.0.0') + expect(versionInfo.$NEXT_MAJOR_VERSION_PATCH.template).toEqual('$PATCH') expect(versionInfo.$NEXT_MINOR_VERSION.version).toEqual('10.1.0') + expect(versionInfo.$NEXT_MINOR_VERSION.template).toEqual('$MAJOR.$MINOR.$PATCH') + expect(versionInfo.$NEXT_MINOR_VERSION_MAJOR.version).toEqual('10.1.0') + expect(versionInfo.$NEXT_MINOR_VERSION_MAJOR.template).toEqual('$MAJOR') + expect(versionInfo.$NEXT_MINOR_VERSION_MINOR.version).toEqual('10.1.0') + expect(versionInfo.$NEXT_MINOR_VERSION_MINOR.template).toEqual('$MINOR') + expect(versionInfo.$NEXT_MINOR_VERSION_PATCH.version).toEqual('10.1.0') + expect(versionInfo.$NEXT_MINOR_VERSION_PATCH.template).toEqual('$PATCH') expect(versionInfo.$NEXT_PATCH_VERSION.version).toEqual('10.0.4') + expect(versionInfo.$NEXT_PATCH_VERSION.template).toEqual('$MAJOR.$MINOR.$PATCH') + expect(versionInfo.$NEXT_PATCH_VERSION_MAJOR.version).toEqual('10.0.4') + expect(versionInfo.$NEXT_PATCH_VERSION_MAJOR.template).toEqual('$MAJOR') + expect(versionInfo.$NEXT_PATCH_VERSION_MINOR.version).toEqual('10.0.4') + expect(versionInfo.$NEXT_PATCH_VERSION_MINOR.template).toEqual('$MINOR') + expect(versionInfo.$NEXT_PATCH_VERSION_PATCH.version).toEqual('10.0.4') + expect(versionInfo.$NEXT_PATCH_VERSION_PATCH.template).toEqual('$PATCH') }) it('returns undefined if no version was found in tag or name', () => {