Skip to content

Commit cdb1abc

Browse files
author
Bilal Al
committed
polish
1 parent cc18c31 commit cdb1abc

File tree

2 files changed

+21
-9
lines changed

2 files changed

+21
-9
lines changed

splitio/models/grammar/matchers/semver.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ def _build(self, raw_matcher):
177177
:type raw_matcher: dict
178178
"""
179179
self._data = raw_matcher.get('stringMatcherData')
180-
self._semver = Semver(self._data)
180+
self._semver = Semver.build(self._data)
181181

182182
def _match(self, key, attributes=None, context=None):
183183
"""
@@ -193,15 +193,19 @@ def _match(self, key, attributes=None, context=None):
193193
:returns: Wheter the match is successful.
194194
:rtype: bool
195195
"""
196-
if self._data is None:
196+
if self._data is None or self._semver is None:
197197
_LOGGER.error("stringMatcherData is required for EQUAL_TO_SEMVER matcher type")
198-
return None
198+
return False
199199

200200
matching_data = Sanitizer.ensure_string(self._get_matcher_input(key, attributes))
201201
if matching_data is None:
202202
return False
203203

204-
return self._semver.version == Semver(matching_data).version
204+
matching_semver = Semver.build(matching_data)
205+
if matching_semver is None:
206+
return False
207+
208+
return self._semver.version == matching_semver.version
205209

206210
def __str__(self):
207211
"""Return string Representation."""
@@ -222,7 +226,7 @@ def _build(self, raw_matcher):
222226
:type raw_matcher: dict
223227
"""
224228
self._data = raw_matcher.get('stringMatcherData')
225-
self._semver = Semver(self._data)
229+
self._semver = Semver.build(self._data)
226230

227231
def _match(self, key, attributes=None, context=None):
228232
"""
@@ -238,15 +242,19 @@ def _match(self, key, attributes=None, context=None):
238242
:returns: Wheter the match is successful.
239243
:rtype: bool
240244
"""
241-
if self._data is None:
245+
if self._data is None or self._semver is None:
242246
_LOGGER.error("stringMatcherData is required for GREATER_THAN_OR_EQUAL_TO_SEMVER matcher type")
243-
return None
247+
return False
244248

245249
matching_data = Sanitizer.ensure_string(self._get_matcher_input(key, attributes))
246250
if matching_data is None:
247251
return False
248252

249-
return Semver(matching_data).compare(self._semver) in [0, 1]
253+
matching_semver = Semver.build(matching_data)
254+
if matching_semver is None:
255+
return False
256+
257+
return matching_semver.compare(self._semver) in [0, 1]
250258

251259
def __str__(self):
252260
"""Return string Representation."""

tests/models/grammar/test_matchers.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -909,10 +909,12 @@ def test_from_raw(self, mocker):
909909
def test_matcher_behaviour(self, mocker):
910910
"""Test if the matcher works properly."""
911911
parsed = matchers.from_raw(self.raw)
912-
assert parsed._match("2.1.8+rc")
912+
assert not parsed._match("2.1.8+rc")
913913
assert parsed._match("2.1.8")
914914
assert not parsed._match("2.1.5")
915915
assert not parsed._match("2.1.5-rc1")
916+
assert not parsed._match(None)
917+
assert not parsed._match("semver")
916918

917919
def test_to_json(self):
918920
"""Test that the object serializes to JSON properly."""
@@ -953,6 +955,8 @@ def test_matcher_behaviour(self, mocker):
953955
assert parsed._match("2.1.11")
954956
assert not parsed._match("2.1.5")
955957
assert not parsed._match("2.1.5-rc1")
958+
assert not parsed._match(None)
959+
assert not parsed._match("semver")
956960

957961
def test_to_json(self):
958962
"""Test that the object serializes to JSON properly."""

0 commit comments

Comments
 (0)