Skip to content

Commit 56a6fad

Browse files
author
Bilal Al
committed
polish
1 parent 7499a1e commit 56a6fad

File tree

2 files changed

+31
-13
lines changed

2 files changed

+31
-13
lines changed

splitio/models/grammar/matchers/semver.py

Lines changed: 24 additions & 12 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."""
@@ -267,7 +275,7 @@ def _build(self, raw_matcher):
267275
:type raw_matcher: dict
268276
"""
269277
self._data = raw_matcher.get('stringMatcherData')
270-
self._semver = Semver(self._data)
278+
self._semver = Semver.build(self._data)
271279

272280
def _match(self, key, attributes=None, context=None):
273281
"""
@@ -283,15 +291,19 @@ def _match(self, key, attributes=None, context=None):
283291
:returns: Wheter the match is successful.
284292
:rtype: bool
285293
"""
286-
if self._data is None:
294+
if self._data is None or self._semver is None:
287295
_LOGGER.error("stringMatcherData is required for LESS_THAN_OR_EQUAL_TO_SEMVER matcher type")
288-
return None
296+
return False
289297

290298
matching_data = Sanitizer.ensure_string(self._get_matcher_input(key, attributes))
291299
if matching_data is None:
292300
return False
293301

294-
return Semver(matching_data).compare(self._semver) in [0, -1]
302+
matching_semver = Semver.build(matching_data)
303+
if matching_semver is None:
304+
return False
305+
306+
return matching_semver.compare(self._semver) in [0, -1]
295307

296308
def __str__(self):
297309
"""Return string Representation."""

tests/models/grammar/test_matchers.py

Lines changed: 7 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."""
@@ -993,6 +997,8 @@ def test_matcher_behaviour(self, mocker):
993997
assert not parsed._match("2.1.11")
994998
assert parsed._match("2.1.5")
995999
assert parsed._match("2.1.5-rc1")
1000+
assert not parsed._match(None)
1001+
assert not parsed._match("semver")
9961002

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

0 commit comments

Comments
 (0)