Fix fileglob parameter order bug (#72879)

This commit is contained in:
David Shrewsbury 2020-12-08 10:31:34 -05:00 committed by GitHub
parent e97f333532
commit fe17cb6eba
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 39 additions and 2 deletions

View 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).

View file

@ -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

View 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

View file

@ -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 "$@"