From 34c8ebe4861a6e1c92a4491212eff0cc22506ff5 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Sun, 13 Jan 2019 11:06:28 +0100 Subject: [PATCH] fix(ruby): replace complex ranges --- lib/versioning/ruby/strategies/replace.js | 14 ++++++++++++-- test/versioning/ruby.spec.js | 7 +++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/lib/versioning/ruby/strategies/replace.js b/lib/versioning/ruby/strategies/replace.js index 02bffe5664..091013e396 100644 --- a/lib/versioning/ruby/strategies/replace.js +++ b/lib/versioning/ruby/strategies/replace.js @@ -1,5 +1,15 @@ const { satisfies } = require('@snyk/ruby-semver'); const bump = require('./bump'); -module.exports = ({ to, range }) => - satisfies(to, range) ? range : bump({ to, range }); +module.exports = ({ to, range }) => { + if (satisfies(to, range)) { + return range; + } + const lastPart = range + .split(',') + .map(part => part.trim()) + .pop(); + const newLastPart = bump({ to, range: lastPart }); + // TODO: match precision + return range.replace(lastPart, newLastPart); +}; diff --git a/test/versioning/ruby.spec.js b/test/versioning/ruby.spec.js index 4998db47eb..bf227b9f3e 100644 --- a/test/versioning/ruby.spec.js +++ b/test/versioning/ruby.spec.js @@ -408,6 +408,13 @@ describe('semverRuby', () => { ['~> 1.2.0', '~> 1.0.3', 'replace', '1.0.0', '1.2.3'], ['~> 1.0.3', '~> 1.0.3', 'replace', '1.0.0', '1.0.4'], ['~> 4.7, >= 4.7.4', '~> 4.7, >= 4.7.4', 'replace', '1.0.0', '4.7.9'], + [ + '>= 2.0.0, <= 2.20.0', + '>= 2.0.0, <= 2.15', + 'replace', + '2.15.0', + '2.20.0', + ], ].forEach(([expected, ...params]) => { expect(semverRuby.getNewValue(...params)).toEqual(expected); }); -- GitLab