Source code for coalib.testing.BaseTestHelper
from coala_utils.Comparable import Comparable
def _assert_comparable_equal(observed_result, expected_result):
"""
Compares individual fields of the result objects using
`__compare_fields__` of `coala_utils.Comparable` class
and yields messages in case of an attribute mismatch.
"""
if not len(observed_result) == len(expected_result):
assert observed_result == expected_result, '%s != %s' % (
observed_result, expected_result)
messages = ''
for observed, expected in zip(observed_result, expected_result):
if (isinstance(observed, Comparable) and
isinstance(expected, Comparable)) and (type(observed) is
type(expected)):
for attribute in type(observed).__compare_fields__:
try:
assert getattr(observed, attribute) == getattr(
expected, attribute), (
'{} mismatch: {}, {} != {}, {}'.format(
attribute,
observed.origin, observed.message,
expected.origin, expected.message))
except AssertionError as ex:
messages += (str(ex) + '\n\n')
else:
assert observed_result == expected_result, '%s != %s' % (
observed_result, expected_result)
if messages:
raise AssertionError(messages)
[docs]class BaseTestHelper:
"""
This is a base class for all Bears' tests of coala's testing API.
"""
[docs] def assert_result_equal(self,
observed_result,
expected_result):
"""
Asserts that an observed result from a bear is exactly same
as the expected result from the bear.
:param observed_result: The observed result from a bear
:param expected_result: The expected result from a bear
"""
return _assert_comparable_equal(observed_result, expected_result)