From d39f35c1d6838b871e00240ad62b747a0cd59090 Mon Sep 17 00:00:00 2001 From: Abhijeet Kasurde Date: Tue, 5 Mar 2019 11:12:17 +0530 Subject: [PATCH] assert: allow list of strings in msg or failed_msg (#50531) Added check for assert module for msg and failed_msg as a list or string types. Fixes: #48547 Signed-off-by: Abhijeet Kasurde --- .../fragments/48547-assert-incorrect_msg_type.yml | 2 ++ lib/ansible/plugins/action/assert.py | 14 ++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 changelogs/fragments/48547-assert-incorrect_msg_type.yml diff --git a/changelogs/fragments/48547-assert-incorrect_msg_type.yml b/changelogs/fragments/48547-assert-incorrect_msg_type.yml new file mode 100644 index 00000000000..f67331d8a1f --- /dev/null +++ b/changelogs/fragments/48547-assert-incorrect_msg_type.yml @@ -0,0 +1,2 @@ +minor_changes: +- Added check for assert module for msg and failed_msg as a list or string types. diff --git a/lib/ansible/plugins/action/assert.py b/lib/ansible/plugins/action/assert.py index 1190ec984a8..7721a6b47c2 100644 --- a/lib/ansible/plugins/action/assert.py +++ b/lib/ansible/plugins/action/assert.py @@ -46,14 +46,20 @@ class ActionModule(ActionBase): fail_msg = self._task.args.get('fail_msg', self._task.args.get('msg')) if fail_msg is None: fail_msg = 'Assertion failed' - elif not isinstance(fail_msg, string_types): - raise AnsibleError('Incorrect type for fail_msg or msg, expected string and got %s' % type(fail_msg)) + elif isinstance(fail_msg, list): + if not all(isinstance(x, string_types) for x in fail_msg): + raise AnsibleError('Type of one of the elements in fail_msg or msg list is not string type') + elif not isinstance(fail_msg, (string_types, list)): + raise AnsibleError('Incorrect type for fail_msg or msg, expected a string or list and got %s' % type(fail_msg)) success_msg = self._task.args.get('success_msg') if success_msg is None: success_msg = 'All assertions passed' - elif not isinstance(success_msg, string_types): - raise AnsibleError('Incorrect type for success_msg, expected string and got %s' % type(success_msg)) + elif isinstance(success_msg, list): + if not all(isinstance(x, string_types) for x in success_msg): + raise AnsibleError('Type of one of the elements in success_msg list is not string type') + elif not isinstance(success_msg, (string_types, list)): + raise AnsibleError('Incorrect type for success_msg, expected a string or list and got %s' % type(success_msg)) quiet = boolean(self._task.args.get('quiet', False), strict=False)