mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
add jimi-c's unit test for squashed skip results, tweaked is_skipped() logic to pass
This commit is contained in:
parent
85868e07a9
commit
133395db30
2 changed files with 17 additions and 3 deletions
|
@ -40,11 +40,16 @@ class TaskResult:
|
||||||
return self._check_key('changed')
|
return self._check_key('changed')
|
||||||
|
|
||||||
def is_skipped(self):
|
def is_skipped(self):
|
||||||
|
# loop results
|
||||||
if 'results' in self._result and self._task.loop:
|
if 'results' in self._result and self._task.loop:
|
||||||
results = self._result['results']
|
results = self._result['results']
|
||||||
return results and all(isinstance(res, dict) and res.get('skipped', False) for res in results)
|
# Loop tasks are only considered skipped if all items were skipped.
|
||||||
else:
|
# some squashed results (eg, yum) are not dicts and can't be skipped individually
|
||||||
return self._result.get('skipped', False)
|
if results and all(isinstance(res, dict) and res.get('skipped', False) for res in results):
|
||||||
|
return True
|
||||||
|
|
||||||
|
# regular tasks and squashed non-dict results
|
||||||
|
return self._result.get('skipped', False)
|
||||||
|
|
||||||
def is_failed(self):
|
def is_failed(self):
|
||||||
if 'failed_when_result' in self._result or \
|
if 'failed_when_result' in self._result or \
|
||||||
|
|
|
@ -85,6 +85,15 @@ class TestTaskResult(unittest.TestCase):
|
||||||
tr = TaskResult(mock_host, mock_task, dict(results=[dict(skipped=True), dict(skipped=True), dict(skipped=True)]))
|
tr = TaskResult(mock_host, mock_task, dict(results=[dict(skipped=True), dict(skipped=True), dict(skipped=True)]))
|
||||||
self.assertTrue(tr.is_skipped())
|
self.assertTrue(tr.is_skipped())
|
||||||
|
|
||||||
|
# test with multiple squashed results (list of strings)
|
||||||
|
# first with the main result having skipped=False
|
||||||
|
mock_task.loop = 'foo'
|
||||||
|
tr = TaskResult(mock_host, mock_task, dict(results=["a", "b", "c"], skipped=False))
|
||||||
|
self.assertFalse(tr.is_skipped())
|
||||||
|
# then with the main result having skipped=True
|
||||||
|
tr = TaskResult(mock_host, mock_task, dict(results=["a", "b", "c"], skipped=True))
|
||||||
|
self.assertTrue(tr.is_skipped())
|
||||||
|
|
||||||
def test_task_result_is_unreachable(self):
|
def test_task_result_is_unreachable(self):
|
||||||
mock_host = MagicMock()
|
mock_host = MagicMock()
|
||||||
mock_task = MagicMock()
|
mock_task = MagicMock()
|
||||||
|
|
Loading…
Reference in a new issue