From 575116a584b5bb2fcfa3270611677f37d18295a8 Mon Sep 17 00:00:00 2001 From: Abhijeet Kasurde Date: Tue, 12 Nov 2019 16:48:46 +0530 Subject: [PATCH] doc: Handle exception in parsing parameter description (#60933) Fixes: #60587 Signed-off-by: Abhijeet Kasurde --- changelogs/fragments/60587-doc_parsing.yml | 2 ++ lib/ansible/cli/doc.py | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 changelogs/fragments/60587-doc_parsing.yml diff --git a/changelogs/fragments/60587-doc_parsing.yml b/changelogs/fragments/60587-doc_parsing.yml new file mode 100644 index 00000000000..1c2a039712c --- /dev/null +++ b/changelogs/fragments/60587-doc_parsing.yml @@ -0,0 +1,2 @@ +bugfixes: + - Handle exception encountered while parsing the argument description in module when invoked via ansible-doc command (https://github.com/ansible/ansible/issues/60587). diff --git a/lib/ansible/cli/doc.py b/lib/ansible/cli/doc.py index f7878ff4e92..12bb590fb4c 100644 --- a/lib/ansible/cli/doc.py +++ b/lib/ansible/cli/doc.py @@ -507,9 +507,13 @@ class DocCLI(CLI): text.append("%s %s" % (opt_leadin, o)) if isinstance(opt['description'], list): - for entry in opt['description']: + for entry_idx, entry in enumerate(opt['description'], 1): + if not isinstance(entry, string_types): + raise AnsibleError("Expected string in description of %s at index %s, got %s" % (o, entry_idx, type(entry))) text.append(textwrap.fill(DocCLI.tty_ify(entry), limit, initial_indent=opt_indent, subsequent_indent=opt_indent)) else: + if not isinstance(opt['description'], string_types): + raise AnsibleError("Expected string in description of %s, got %s" % (o, type(opt['description']))) text.append(textwrap.fill(DocCLI.tty_ify(opt['description']), limit, initial_indent=opt_indent, subsequent_indent=opt_indent)) del opt['description']