Skip to content

Commit

Permalink
[test] Implement string "lambda x: condition(x)" as an expected value
Browse files Browse the repository at this point in the history
Semantics equivalent to `assert condition(got)`
  • Loading branch information
dirkf committed Oct 10, 2022
1 parent 82e4eca commit 2ced5a7
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion test/helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,12 @@ def expect_value(self, got, expected, field):
self.assertTrue(
contains_str in got,
'field %s (value: %r) should contain %r' % (field, got, contains_str))
elif isinstance(expected, compat_str) and re.match(r'^lambda \w+:', expected):
fn = eval(expected)
suite = expected.split(':', 1)[1].strip()
self.assertTrue(
fn(got),
'Expected field %s to meet condition %s, but value %r failed ' % (field, suite, got))
elif isinstance(expected, type):
self.assertTrue(
isinstance(got, expected),
Expand All @@ -137,7 +143,7 @@ def expect_value(self, got, expected, field):
elif isinstance(expected, list) and isinstance(got, list):
self.assertEqual(
len(expected), len(got),
'Expect a list of length %d, but got a list of length %d for field %s' % (
'Expected a list of length %d, but got a list of length %d for field %s' % (
len(expected), len(got), field))
for index, (item_got, item_expected) in enumerate(zip(got, expected)):
type_got = type(item_got)
Expand Down

0 comments on commit 2ced5a7

Please sign in to comment.