From 950ab74758a6014639236612594118b2b6f4751e Mon Sep 17 00:00:00 2001 From: Matt Martz Date: Thu, 25 Feb 2021 11:03:03 -0600 Subject: [PATCH] Normalize ConfigParser between Python2 and Python3 (#73715) * Normalize config parser between py2 and py3 * Add tests and changelog * Use different config entry, since we supply certain env vars --- changelogs/fragments/73709-normalize-configparser.yml | 3 +++ lib/ansible/config/manager.py | 5 ++++- test/integration/targets/config/inline_comment_ansible.cfg | 2 ++ test/integration/targets/config/runme.sh | 3 +++ 4 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 changelogs/fragments/73709-normalize-configparser.yml create mode 100644 test/integration/targets/config/inline_comment_ansible.cfg diff --git a/changelogs/fragments/73709-normalize-configparser.yml b/changelogs/fragments/73709-normalize-configparser.yml new file mode 100644 index 00000000000..24b6d322d25 --- /dev/null +++ b/changelogs/fragments/73709-normalize-configparser.yml @@ -0,0 +1,3 @@ +bugfixes: +- ConfigManager - Normalize ConfigParser between Python2 and Python3 to for handling comments + (https://github.com/ansible/ansible/issues/73709) diff --git a/lib/ansible/config/manager.py b/lib/ansible/config/manager.py index fbc3bcde604..e9a206d9bc6 100644 --- a/lib/ansible/config/manager.py +++ b/lib/ansible/config/manager.py @@ -329,7 +329,10 @@ class ConfigManager(object): ftype = get_config_type(cfile) if cfile is not None: if ftype == 'ini': - self._parsers[cfile] = configparser.ConfigParser() + kwargs = {} + if PY3: + kwargs['inline_comment_prefixes'] = (';',) + self._parsers[cfile] = configparser.ConfigParser(**kwargs) with open(to_bytes(cfile), 'rb') as f: try: cfg_text = to_text(f.read(), errors='surrogate_or_strict') diff --git a/test/integration/targets/config/inline_comment_ansible.cfg b/test/integration/targets/config/inline_comment_ansible.cfg new file mode 100644 index 00000000000..01a95c4419a --- /dev/null +++ b/test/integration/targets/config/inline_comment_ansible.cfg @@ -0,0 +1,2 @@ +[defaults] +cowsay_enabled_stencils = ansibull ; BOOM diff --git a/test/integration/targets/config/runme.sh b/test/integration/targets/config/runme.sh index 73c3778b47a..ea3989b88bc 100755 --- a/test/integration/targets/config/runme.sh +++ b/test/integration/targets/config/runme.sh @@ -15,3 +15,6 @@ ANSIBLE_REMOTE_TMP="$HOME/.ansible/directory_with_no_space" ansible -m ping tes ANSIBLE_REMOTE_TMP="$HOME/.ansible/directory with space" ansible -m ping testhost -i ../../inventory "$@" ANSIBLE_CONFIG=nonexistent.cfg ansible-config dump --only-changed -v | grep 'No config file found; using defaults' + +# https://github.com/ansible/ansible/pull/73715 +ANSIBLE_CONFIG=inline_comment_ansible.cfg ansible-config dump --only-changed | grep "'ansibull'"