From c4f22fa389c769bf5f82b76bed19688f94fd9183 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Sat, 10 Apr 2021 18:30:29 +0200
Subject: [PATCH] fix(hex): short range replace (#9488)

---
 lib/versioning/hex/index.spec.ts | 10 ++++++++++
 lib/versioning/hex/index.ts      |  5 ++---
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/lib/versioning/hex/index.spec.ts b/lib/versioning/hex/index.spec.ts
index 08eb4b20f3..64514e6027 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 9482680515..10e475f605 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');
-- 
GitLab