diff --git a/lib/versioning/hashicorp/index.spec.ts b/lib/versioning/hashicorp/index.spec.ts index 7b4ea524b523561327f1c24ef5cea02b4ad7b03b..52aac2ef2d0fc3844aa4aacb26427e8285606a00 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 bef2ce223b93c9a248e967d7fb7f536d9db51ed0..ad1feef333baa0e12a6a82a59dc7728d684e4702 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)) {