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