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:
|
||||
if dwimmed_path:
|
||||
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))
|
||||
if ret:
|
||||
term_results = [to_text(g, errors='surrogate_or_strict') for g in globbed if os.path.isfile(g)]
|
||||
if term_results:
|
||||
ret.extend(term_results)
|
||||
break
|
||||
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
|
||||
ansible-playbook non_existent/play.yml -e "seed='${seed}'" "$@"
|
||||
done
|
||||
|
||||
# test for issue 72873 fix
|
||||
ansible-playbook issue72873/test.yml "$@"
|
||||
|
|
Loading…
Reference in a new issue