diff --git a/changelogs/fragments/66617-version-unicode-fix.yml b/changelogs/fragments/66617-version-unicode-fix.yml new file mode 100644 index 00000000000..8e3fc51d311 --- /dev/null +++ b/changelogs/fragments/66617-version-unicode-fix.yml @@ -0,0 +1,2 @@ +bugfixes: + - Ensure that ``--version`` works with non-ascii ansible project paths (https://github.com/ansible/ansible/issues/66617) diff --git a/lib/ansible/config/manager.py b/lib/ansible/config/manager.py index 7bff979d651..18d2d11c955 100644 --- a/lib/ansible/config/manager.py +++ b/lib/ansible/config/manager.py @@ -231,7 +231,7 @@ def find_ini_config_file(warnings=None): if os.path.exists(cwd_cfg): warn_cmd_public = True else: - potential_paths.append(cwd_cfg) + potential_paths.append(to_text(cwd_cfg, errors='surrogate_or_strict')) except OSError: # If we can't access cwd, we'll simply skip it as a possible config source pass diff --git a/test/integration/targets/unicode/křížek-ansible-project/ansible.cfg b/test/integration/targets/unicode/křížek-ansible-project/ansible.cfg new file mode 100644 index 00000000000..6775889f1b0 --- /dev/null +++ b/test/integration/targets/unicode/křížek-ansible-project/ansible.cfg @@ -0,0 +1,2 @@ +[defaults] +library=~/.ansible/plugins/modules:/usr/share/ansible/plugins/modules:. diff --git a/test/integration/targets/unicode/runme.sh b/test/integration/targets/unicode/runme.sh index f95061dbce8..aa14783bc8f 100755 --- a/test/integration/targets/unicode/runme.sh +++ b/test/integration/targets/unicode/runme.sh @@ -5,3 +5,9 @@ set -eux ansible-playbook unicode.yml -i inventory -v -e 'extra_var=café' "$@" # Test the start-at-task flag #9571 ANSIBLE_HOST_PATTERN_MISMATCH=warning ansible-playbook unicode.yml -i inventory -v --start-at-task '*¶' -e 'start_at_task=True' "$@" + +# Test --version works with non-ascii ansible project paths #66617 +# Unset these so values from the project dir are used +unset ANSIBLE_CONFIG +unset ANSIBLE_LIBRARY +pushd křížek-ansible-project && ansible --version; popd