From cfe6a7b985125325605ef192b2de5fe1986ef569 Mon Sep 17 00:00:00 2001 From: "James E. Blair" Date: Wed, 4 Sep 2019 13:13:41 -0700 Subject: [PATCH] Fix "Set failed, unreachable, skipped statuses in json plugin" This change was ineffective because it was modifying the wrong data. Correct that and add a test. Change-Id: I26cfba0ff9a3eca05314e12f3f1d66b934c505b6 --- .../job-output/git/common-config/playbooks/job-output.yaml | 5 +++++ tests/unit/test_v3.py | 5 +++++ zuul/ansible/base/callback/zuul_json.py | 6 ++++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/tests/fixtures/config/job-output/git/common-config/playbooks/job-output.yaml b/tests/fixtures/config/job-output/git/common-config/playbooks/job-output.yaml index 332db87316..7e604c31c8 100644 --- a/tests/fixtures/config/job-output/git/common-config/playbooks/job-output.yaml +++ b/tests/fixtures/config/job-output/git/common-config/playbooks/job-output.yaml @@ -1,3 +1,8 @@ - hosts: all tasks: - shell: echo "Standard output test {{ zuul.executor.src_root }}" + - shell: echo "This should be skipped" + when: false + - fail: + msg: "This should fail" + ignore_errors: true diff --git a/tests/unit/test_v3.py b/tests/unit/test_v3.py index b56a4d589c..94e29d90d2 100644 --- a/tests/unit/test_v3.py +++ b/tests/unit/test_v3.py @@ -4911,6 +4911,7 @@ class TestJobOutput(AnsibleZuulTestCase): A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A') self.fake_gerrit.addEvent(A.getPatchsetCreatedEvent(1)) self.waitUntilSettled() + self.assertHistory([ dict(name='job-output', result='SUCCESS', changes='1,1'), ], ordered=False) @@ -4921,6 +4922,10 @@ class TestJobOutput(AnsibleZuulTestCase): self.assertEqual(token, j[0]['plays'][0]['tasks'][0] ['hosts']['localhost']['stdout']) + self.assertTrue(j[0]['plays'][0]['tasks'][1] + ['hosts']['localhost']['skipped']) + self.assertTrue(j[0]['plays'][0]['tasks'][2] + ['hosts']['localhost']['failed']) self.log.info(self._get_file(self.history[0], 'work/logs/job-output.txt')) diff --git a/zuul/ansible/base/callback/zuul_json.py b/zuul/ansible/base/callback/zuul_json.py index 4a2edcf6e6..c07c68f78b 100644 --- a/zuul/ansible/base/callback/zuul_json.py +++ b/zuul/ansible/base/callback/zuul_json.py @@ -158,11 +158,13 @@ class CallbackModule(CallbackBase): def v2_runner_on_failed(self, result, **kwargs): self.v2_runner_on_ok(result, **kwargs) - result._host.setdefault('failed', True) + self.results[-1]['tasks'][-1]['hosts'][result._host.name].\ + setdefault('failed', True) def v2_runner_on_skipped(self, result, **kwargs): self.v2_runner_on_ok(result, **kwargs) - result._host.setdefault('skipped', True) + self.results[-1]['tasks'][-1]['hosts'][result._host.name].\ + setdefault('skipped', True) def v2_playbook_on_stats(self, stats): """Display info about playbook statistics"""