Fix fileglob parameter order bug (#72879)
This commit is contained in:
parent
e97f333532
commit
fe17cb6eba
4 changed files with 39 additions and 2 deletions
2
changelogs/fragments/72873-fix-fileglob-ordering.yml
Normal file
2
changelogs/fragments/72873-fix-fileglob-ordering.yml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
bugfixes:
|
||||||
|
- Fix fileglob bug where it could return different results for different order of parameters (https://github.com/ansible/ansible/issues/72873).
|
|
@ -76,7 +76,8 @@ class LookupModule(LookupBase):
|
||||||
for dwimmed_path in found_paths:
|
for dwimmed_path in found_paths:
|
||||||
if dwimmed_path:
|
if dwimmed_path:
|
||||||
globbed = glob.glob(to_bytes(os.path.join(dwimmed_path, term_file), errors='surrogate_or_strict'))
|
globbed = glob.glob(to_bytes(os.path.join(dwimmed_path, term_file), errors='surrogate_or_strict'))
|
||||||
ret.extend(to_text(g, errors='surrogate_or_strict') for g in globbed if os.path.isfile(g))
|
term_results = [to_text(g, errors='surrogate_or_strict') for g in globbed if os.path.isfile(g)]
|
||||||
if ret:
|
if term_results:
|
||||||
|
ret.extend(term_results)
|
||||||
break
|
break
|
||||||
return ret
|
return ret
|
||||||
|
|
31
test/integration/targets/lookup_fileglob/issue72873/test.yml
Normal file
31
test/integration/targets/lookup_fileglob/issue72873/test.yml
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
- hosts: localhost
|
||||||
|
connection: local
|
||||||
|
gather_facts: false
|
||||||
|
vars:
|
||||||
|
dir: files
|
||||||
|
tasks:
|
||||||
|
- file: path='{{ dir }}' state=directory
|
||||||
|
|
||||||
|
- file: path='setvars.bat' state=touch # in current directory!
|
||||||
|
|
||||||
|
- file: path='{{ dir }}/{{ item }}' state=touch
|
||||||
|
loop:
|
||||||
|
- json.c
|
||||||
|
- strlcpy.c
|
||||||
|
- base64.c
|
||||||
|
- json.h
|
||||||
|
- base64.h
|
||||||
|
- strlcpy.h
|
||||||
|
- jo.c
|
||||||
|
|
||||||
|
- name: Get working order results and sort them
|
||||||
|
set_fact:
|
||||||
|
working: '{{ query("fileglob", "setvars.bat", "{{ dir }}/*.[ch]") | sort }}'
|
||||||
|
|
||||||
|
- name: Get broken order results and sort them
|
||||||
|
set_fact:
|
||||||
|
broken: '{{ query("fileglob", "{{ dir }}/*.[ch]", "setvars.bat") | sort }}'
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- working == broken
|
|
@ -13,3 +13,6 @@ for seed in foo foo/bar foo/bar/baz
|
||||||
do
|
do
|
||||||
ansible-playbook non_existent/play.yml -e "seed='${seed}'" "$@"
|
ansible-playbook non_existent/play.yml -e "seed='${seed}'" "$@"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# test for issue 72873 fix
|
||||||
|
ansible-playbook issue72873/test.yml "$@"
|
||||||
|
|
Loading…
Reference in a new issue