Skip to content

Commit ac8113e

Browse files
committed
passes fsc at this point
1 parent 426d2b7 commit ac8113e

File tree

2 files changed

+41
-7
lines changed

2 files changed

+41
-7
lines changed

optimizely/helpers/condition.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,24 @@ def compare_user_version_with_target_version(self, index):
150150
target_version = self.condition_data[index][1]
151151
user_version = self.attributes.get(condition_name)
152152

153+
if not isinstance(target_version, string_types):
154+
self.logger.warning(audience_logs.UNKNOWN_CONDITION_VALUE.format(self._get_condition_json(index), ))
155+
return None
156+
157+
if not isinstance(user_version, string_types):
158+
self.logger.warning(
159+
audience_logs.UNEXPECTED_TYPE.format(self._get_condition_json(index), type(user_version), condition_name)
160+
)
161+
return None
162+
153163
target_version_parts = self.split_semantic_version(target_version)
164+
if target_version_parts is None:
165+
return None
166+
154167
user_version_parts = self.split_semantic_version(user_version)
168+
if user_version_parts is None:
169+
return None
170+
155171
user_version_parts_len = len(user_version_parts)
156172

157173
for (idx, _) in enumerate(target_version_parts):
@@ -403,6 +419,10 @@ def semver_equal_evaluator(self, index):
403419
None:
404420
- if the user version value is not string type or is null.
405421
"""
422+
result = self.compare_user_version_with_target_version(index)
423+
if result is None:
424+
return result
425+
406426
return self.compare_user_version_with_target_version(index) == 0
407427

408428
def semver_greater_than_evaluator(self, index):
@@ -418,6 +438,9 @@ def semver_greater_than_evaluator(self, index):
418438
None:
419439
- if the user version value is not string type or is null.
420440
"""
441+
result = self.compare_user_version_with_target_version(index)
442+
if result is None:
443+
return result
421444
return self.compare_user_version_with_target_version(index) > 0
422445

423446
def semver_less_than_evaluator(self, index):
@@ -433,6 +456,9 @@ def semver_less_than_evaluator(self, index):
433456
None:
434457
- if the user version value is not string type or is null.
435458
"""
459+
result = self.compare_user_version_with_target_version(index)
460+
if result is None:
461+
return result
436462
return self.compare_user_version_with_target_version(index) < 0
437463

438464
def semver_less_than_or_equal_evaluator(self, index):
@@ -448,6 +474,9 @@ def semver_less_than_or_equal_evaluator(self, index):
448474
None:
449475
- if the user version value is not string type or is null.
450476
"""
477+
result = self.compare_user_version_with_target_version(index)
478+
if result is None:
479+
return result
451480
return self.compare_user_version_with_target_version(index) <= 0
452481

453482
def semver_greater_than_or_equal_evaluator(self, index):
@@ -463,6 +492,9 @@ def semver_greater_than_or_equal_evaluator(self, index):
463492
None:
464493
- if the user version value is not string type or is null.
465494
"""
495+
result = self.compare_user_version_with_target_version(index)
496+
if result is None:
497+
return result
466498
return self.compare_user_version_with_target_version(index) >= 0
467499

468500
EVALUATORS_BY_MATCH_TYPE = {

tests/helpers_tests/test_condition.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2019,11 +2019,13 @@ def test_substring__condition_value_invalid(self):
20192019
).format(json.dumps(expected_condition_log))
20202020
)
20212021

2022-
@pytest.mark.parametrize("test_input,expected", [(i, None) for i in ["-", ".", "..", "+", "+test", " ", "2 .0. 0",
2023-
"2.", ".0.0", "1.2.2.2", "2.x", ",",
2024-
"+build-prerelese"]])
2025-
def test_invalid_semver__returns_null__when_semver_is_invalid(self, test_input, expected):
2026-
evaluator = condition_helper.CustomAttributeConditionEvaluator(
2027-
semver_less_than_or_equal_2_0_1_condition_list, {'Android': test_input}, self.mock_client_logger)
2022+
def test_invalid_semver__returns_None__when_semver_is_invalid(self):
2023+
invalid_test_cases = ["-", ".", "..", "+", "+test", " ", "2 .0. 0",
2024+
"2.", ".0.0", "1.2.2.2", "2.x", ",",
2025+
"+build-prerelese"]
2026+
2027+
for invalid_test_case in invalid_test_cases:
2028+
evaluator = condition_helper.CustomAttributeConditionEvaluator(
2029+
semver_less_than_or_equal_2_0_1_condition_list, {'Android': invalid_test_case}, self.mock_client_logger)
20282030

2029-
assert eval(evaluator.evaluate(0)) == expected
2031+
self.assertIsNone(evaluator.evaluate(0))

0 commit comments

Comments
 (0)