diff --git a/lib/versioning/hex/index.spec.ts b/lib/versioning/hex/index.spec.ts index 03b77d3c66e14a960fb7a6d753f6bfb614702ec8..b6579867251fba2a8a295cf463327bbdba318909 100644 --- a/lib/versioning/hex/index.spec.ts +++ b/lib/versioning/hex/index.spec.ts @@ -128,7 +128,15 @@ describe('lib/versioning/hex', () => { fromVersion: '1.2.3', toVersion: '2.0.7', }) - ).toEqual('~> 2'); + ).toEqual('~> 2.0'); + expect( + hexScheme.getNewValue({ + currentValue: '~> 1.2', + rangeStrategy: 'bump', + fromVersion: '1.2.3', + toVersion: '1.3.1', + }) + ).toEqual('~> 1.3'); expect( hexScheme.getNewValue({ currentValue: '~> 1.2.0', diff --git a/lib/versioning/hex/index.ts b/lib/versioning/hex/index.ts index c1a6d61263dde243169a9e725711f99f942c0693..b5219e6318901d05bdc43f62633efc364c154064 100644 --- a/lib/versioning/hex/index.ts +++ b/lib/versioning/hex/index.ts @@ -69,10 +69,16 @@ const getNewValue = ({ toVersion, }); newSemver = npm2hex(newSemver); - if (/~>\s*(\d+\.\d+)$/.test(currentValue)) { + if (/~>\s*(\d+\.\d+\.\d+)$/.test(currentValue)) { newSemver = newSemver.replace( - /\^\s*(\d+\.\d+(\.\d)?)/, - (_str, p1: string) => `~> ${p1.slice(0, -2)}` + /[\^~]\s*(\d+\.\d+\.\d+)/, + (_str, p1: string) => `~> ${p1}` + ); + } else if (/~>\s*(\d+\.\d+)$/.test(currentValue)) { + newSemver = newSemver.replace( + /\^\s*(\d+\.\d+)/, + (_str, p1: string) => + `~> ${rangeStrategy !== 'bump' ? p1.slice(0, -2) : p1}` ); } else { newSemver = newSemver.replace(/~\s*(\d+\.\d+\.\d)/, '~> $1');