diff --git a/lib/versioning/ruby/index.ts b/lib/versioning/ruby/index.ts index 49fc24fee781064552d39f2930bdd34a75f2c8ec..6778528869f2e74a980f753a6cddcf3d4f0a12bd 100644 --- a/lib/versioning/ruby/index.ts +++ b/lib/versioning/ruby/index.ts @@ -73,6 +73,9 @@ const getNewValue = ( toVersion: string ): string => { let result = null; + if (isVersion(currentValue)) { + return currentValue.startsWith('v') ? 'v' + toVersion : toVersion; + } switch (rangeStrategy) { case 'pin': result = pin({ to: vtrim(toVersion) }); @@ -87,11 +90,6 @@ const getNewValue = ( default: logger.warn(`Unsupported strategy ${rangeStrategy}`); } - - if (currentValue !== vtrim(currentValue) && isSingleVersion(result)) { - result = `v${result}`; - } - return result; }; diff --git a/lib/versioning/ruby/strategies/bump.ts b/lib/versioning/ruby/strategies/bump.ts index ec24cb3f01a4dcb65b4dda7581780454f95c72f5..acbac49726cdb1db765caa4e0764c73aa18faf2d 100644 --- a/lib/versioning/ruby/strategies/bump.ts +++ b/lib/versioning/ruby/strategies/bump.ts @@ -8,8 +8,6 @@ export default ({ range, to }: { range: string; to: string }): string => { const ranges = range.split(',').map(parseRange); const results = ranges.map(({ operator, version: ver, delimiter }) => { switch (operator) { - case null: - return to; case GT: return lte(to, ver) ? `${GT}${delimiter}${ver}` diff --git a/test/versioning/ruby.spec.ts b/test/versioning/ruby.spec.ts index e665f80eb58a02bb23024e74ea9059fa3b79e33b..d725c6af18daa44e4c8b9bea698ec131f5d92850 100644 --- a/test/versioning/ruby.spec.ts +++ b/test/versioning/ruby.spec.ts @@ -418,6 +418,14 @@ describe('semverRuby', () => { ) ).toEqual('~> 5.3.0, >= 5.3.1'); }); + it('handles change in precision', () => { + expect( + semverRuby.getNewValue('4.2.0', 'replace', '4.2.0', '4.2.5.1') + ).toEqual('4.2.5.1'); + expect( + semverRuby.getNewValue('4.2.5.1', 'replace', '4.2.5.1', '4.3.0') + ).toEqual('4.3.0'); + }); it('returns correct version for replace strategy', () => { [