tests: import assert_equal action.
parent
630c058a89
commit
91c9aff9ff
@ -0,0 +1,61 @@
|
||||
#
|
||||
# Print data structure diff on assertion failure.
|
||||
#
|
||||
# assert_equal: left=some.result right={1:2}
|
||||
#
|
||||
|
||||
__metaclass__ = type
|
||||
|
||||
import unittest2
|
||||
|
||||
from ansible.errors import AnsibleError
|
||||
from ansible.plugins.action import ActionBase
|
||||
from ansible.module_utils.six import string_types
|
||||
|
||||
|
||||
class TestCase(unittest2.TestCase):
|
||||
def runTest(self):
|
||||
pass
|
||||
|
||||
|
||||
def text_diff(a, b):
|
||||
tc = TestCase()
|
||||
tc.maxDiff = None
|
||||
try:
|
||||
tc.assertEqual(a, b)
|
||||
return None
|
||||
except AssertionError as e:
|
||||
return str(e)
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
''' Fail with custom message '''
|
||||
|
||||
TRANSFERS_FILES = False
|
||||
_VALID_ARGS = frozenset(('left', 'right'))
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
result = super(ActionModule, self).run(tmp, task_vars or {})
|
||||
|
||||
left = self._templar.template(
|
||||
self._task.args['left'],
|
||||
convert_bare=True,
|
||||
bare_deprecated=False,
|
||||
)
|
||||
right = self._templar.template(self._task.args['right'],
|
||||
convert_bare=True,
|
||||
bare_deprecated=False,
|
||||
)
|
||||
|
||||
diff = text_diff(left, right)
|
||||
if diff is None:
|
||||
return {
|
||||
'changed': False
|
||||
}
|
||||
|
||||
return {
|
||||
'changed': False,
|
||||
'failed': True,
|
||||
'msg': diff,
|
||||
'_ansible_verbose_always': True,
|
||||
}
|
Loading…
Reference in New Issue