From ac63a5097cd3bd9bab0cff6c9bad8c754e812dad Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Sun, 13 Jan 2019 10:00:31 +0100 Subject: [PATCH] fix(ruby): isValid for complex ranges --- lib/versioning/ruby/index.js | 16 ++++++++++------ test/versioning/ruby.spec.js | 4 ++++ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/lib/versioning/ruby/index.js b/lib/versioning/ruby/index.js index 310817d04d..3daecc2cce 100644 --- a/lib/versioning/ruby/index.js +++ b/lib/versioning/ruby/index.js @@ -32,13 +32,17 @@ const isSingleVersion = range => { const isStable = version => parseVersion(version).prerelease ? false : isVersion(version); -const isValid = range => { - const { version, operator } = parseRange(range); +const isValid = input => + input + .split(',') + .map(piece => piece.trim()) + .every(range => { + const { version, operator } = parseRange(range); - return operator - ? isVersion(version) && isValidOperator(operator) - : isVersion(version); -}; + return operator + ? isVersion(version) && isValidOperator(operator) + : isVersion(version); + }); const matches = (version, range) => satisfies(version, range); const maxSatisfyingVersion = (versions, range) => diff --git a/test/versioning/ruby.spec.js b/test/versioning/ruby.spec.js index 9d38a15e24..4998db47eb 100644 --- a/test/versioning/ruby.spec.js +++ b/test/versioning/ruby.spec.js @@ -297,6 +297,10 @@ describe('semverRuby', () => { expect(semverRuby.isValid('~> 1.2.0-alpha.1')).toBeTruthy(); }); + it('returns true when range is valid', () => { + expect(semverRuby.isValid('>= 3.0.5, < 3.2')).toBeTruthy(); + }); + it('returns false when version is invalid', () => { expect(semverRuby.isVersion()).toBeFalsy(); expect(semverRuby.isVersion('')).toBeFalsy(); -- GitLab