diff --git a/lib/versioning/hex/index.spec.ts b/lib/versioning/hex/index.spec.ts index 08eb4b20f30d0694671c48e0bc209f6013298cd7..64514e6027c9440d4f322f4fe15ac5af10999df3 100644 --- a/lib/versioning/hex/index.spec.ts +++ b/lib/versioning/hex/index.spec.ts @@ -215,4 +215,14 @@ describe('lib/versioning/hex', () => { }) ).toEqual('== 2.0.7'); }); + it('handles short range replace', () => { + expect( + hexScheme.getNewValue({ + currentValue: '~> 0.4', + rangeStrategy: 'replace', + currentVersion: '0.4.2', + newVersion: '0.6.0', + }) + ).toEqual('~> 0.6'); + }); }); diff --git a/lib/versioning/hex/index.ts b/lib/versioning/hex/index.ts index 9482680515e7cec9d308386a5b205051128c751c..10e475f605c33a452cddaea20aecadf9d77ffbd8 100644 --- a/lib/versioning/hex/index.ts +++ b/lib/versioning/hex/index.ts @@ -76,9 +76,8 @@ const getNewValue = ({ ); } else if (/~>\s*(\d+\.\d+)$/.test(currentValue)) { newSemver = newSemver.replace( - /\^\s*(\d+\.\d+)/, - (_str, p1: string) => - `~> ${rangeStrategy === 'bump' ? p1 : p1.slice(0, -2)}` + /\^\s*(\d+\.\d+)(\.\d+)?/, + (_str, p1: string) => `~> ${p1}` ); } else { newSemver = newSemver.replace(/~\s*(\d+\.\d+\.\d)/, '~> $1');