From df2f451e37ba6da868c5cbd9452bb60b99abfd9e Mon Sep 17 00:00:00 2001 From: Sebastian Poxhofer <secustor@users.noreply.github.com> Date: Mon, 19 Apr 2021 21:43:13 +0200 Subject: [PATCH] fix(terraform): handle greater than with full version (#9632) --- lib/versioning/hashicorp/index.spec.ts | 24 ++++++++++++++++++++++++ lib/versioning/hashicorp/index.ts | 12 ++++++++---- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/lib/versioning/hashicorp/index.spec.ts b/lib/versioning/hashicorp/index.spec.ts index 7b4ea524b5..52aac2ef2d 100644 --- a/lib/versioning/hashicorp/index.spec.ts +++ b/lib/versioning/hashicorp/index.spec.ts @@ -67,6 +67,30 @@ describe('semver.getNewValue()', () => { newVersion: '2.0.7', }) ).toEqual('~> 2.0.0'); + expect( + semver.getNewValue({ + currentValue: '~> 0.14.0', + rangeStrategy: 'replace', + currentVersion: '0.14.1', + newVersion: '0.15.0', + }) + ).toEqual('~> 0.15.0'); + expect( + semver.getNewValue({ + currentValue: '~> 0.14.0', + rangeStrategy: 'replace', + currentVersion: '0.14.1', + newVersion: '0.15.1', + }) + ).toEqual('~> 0.15.0'); + expect( + semver.getNewValue({ + currentValue: '~> 0.14.6', + rangeStrategy: 'replace', + currentVersion: '0.14.6', + newVersion: '0.15.0', + }) + ).toEqual('~> 0.15.0'); }); it('handles comma dividers', () => { expect( diff --git a/lib/versioning/hashicorp/index.ts b/lib/versioning/hashicorp/index.ts index bef2ce223b..ad1feef333 100644 --- a/lib/versioning/hashicorp/index.ts +++ b/lib/versioning/hashicorp/index.ts @@ -36,10 +36,14 @@ function getNewValue({ newVersion, }: NewValueConfig): string { if (/~>\s*0\.\d+/.test(currentValue) && npm.getMajor(newVersion) === 0) { - return currentValue.replace( - /(~>\s*0\.).*$/, - `$1${npm.getMinor(newVersion)}` - ); + const testFullVersion = /(~>\s*0\.)(\d+)\.\d$/; + let replaceValue = ''; + if (testFullVersion.test(currentValue)) { + replaceValue = `$1${npm.getMinor(newVersion)}.0`; + } else { + replaceValue = `$1${npm.getMinor(newVersion)}$3`; + } + return currentValue.replace(/(~>\s*0\.)(\d+)(.*)$/, replaceValue); } // handle special ~> 1.2 case if (/(~>\s*)\d+\.\d+$/.test(currentValue)) { -- GitLab