diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-14 20:03:01 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-14 20:03:01 +0000 |
commit | a453ac31f3428614cceb99027f8efbdb9258a40b (patch) | |
tree | f61f87408f32a8511cbd91799f9cececb53e0374 /test/integration/targets/find | |
parent | Initial commit. (diff) | |
download | ansible-a453ac31f3428614cceb99027f8efbdb9258a40b.tar.xz ansible-a453ac31f3428614cceb99027f8efbdb9258a40b.zip |
Adding upstream version 2.10.7+merged+base+2.10.8+dfsg.upstream/2.10.7+merged+base+2.10.8+dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'test/integration/targets/find')
-rw-r--r-- | test/integration/targets/find/aliases | 1 | ||||
-rw-r--r-- | test/integration/targets/find/meta/main.yml | 2 | ||||
-rw-r--r-- | test/integration/targets/find/tasks/main.yml | 163 |
3 files changed, 166 insertions, 0 deletions
diff --git a/test/integration/targets/find/aliases b/test/integration/targets/find/aliases new file mode 100644 index 00000000..a6dafcf8 --- /dev/null +++ b/test/integration/targets/find/aliases @@ -0,0 +1 @@ +shippable/posix/group1 diff --git a/test/integration/targets/find/meta/main.yml b/test/integration/targets/find/meta/main.yml new file mode 100644 index 00000000..07faa217 --- /dev/null +++ b/test/integration/targets/find/meta/main.yml @@ -0,0 +1,2 @@ +dependencies: + - prepare_tests diff --git a/test/integration/targets/find/tasks/main.yml b/test/integration/targets/find/tasks/main.yml new file mode 100644 index 00000000..d38daf44 --- /dev/null +++ b/test/integration/targets/find/tasks/main.yml @@ -0,0 +1,163 @@ +# Test code for the find module. +# (c) 2017, James Tanner <tanner.jc@gmail.com> + +# This file is part of Ansible +# +# Ansible is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Ansible is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Ansible. If not, see <http://www.gnu.org/licenses/>. + +- set_fact: output_dir_test={{output_dir}}/test_find + +- name: make sure our testing sub-directory does not exist + file: path="{{ output_dir_test }}" state=absent + +- name: create our testing sub-directory + file: path="{{ output_dir_test }}" state=directory + +## +## find +## + +- name: make some directories + file: + path: "{{ output_dir_test }}/{{ item }}" + state: directory + with_items: + - a/b/c/d + - e/f/g/h + +- name: make some files + copy: + dest: "{{ output_dir_test }}/{{ item }}" + content: 'data' + with_items: + - a/1.txt + - a/b/2.jpg + - a/b/c/3 + - a/b/c/d/4.xml + - e/5.json + - e/f/6.swp + - e/f/g/7.img + - e/f/g/h/8.ogg + +- name: find the directories + find: + paths: "{{ output_dir_test }}" + file_type: directory + recurse: yes + register: find_test0 +- debug: var=find_test0 +- name: validate directory results + assert: + that: + - 'find_test0.changed is defined' + - 'find_test0.examined is defined' + - 'find_test0.files is defined' + - 'find_test0.matched is defined' + - 'find_test0.msg is defined' + - 'find_test0.matched == 8' + - 'find_test0.files | length == 8' + - 'find_test0.examined == 16' + +- name: find the xml and img files + find: + paths: "{{ output_dir_test }}" + file_type: file + patterns: "*.xml,*.img" + recurse: yes + register: find_test1 +- debug: var=find_test1 +- name: validate directory results + assert: + that: + - 'find_test1.matched == 2' + - 'find_test1.files | length == 2' + +- name: find the xml file + find: + paths: "{{ output_dir_test }}" + patterns: "*.xml" + recurse: yes + register: find_test2 +- debug: var=find_test2 +- name: validate gr_name and pw_name are defined + assert: + that: + - 'find_test2.matched == 1' + - 'find_test2.files[0].pw_name is defined' + - 'find_test2.files[0].gr_name is defined' + +- name: test number of examined directories/files + block: + - name: Get all files/directories in the path + find: + paths: "{{ output_dir_test }}" + recurse: yes + file_type: any + register: total_contents + + - assert: + that: + - total_contents.matched == 16 + - total_contents.examined == 16 + + - name: Get files and directories with depth + find: + paths: "{{ output_dir_test }}" + recurse: yes + file_type: any + depth: 2 + register: contents_with_depth + + - assert: + that: + - contents_with_depth.matched == 6 + # dir contents are considered until the depth exceeds the requested depth + # there are 6 files/directories in the requested depth and 4 that exceed it by 1 + - contents_with_depth.examined == 10 + + - name: Find files with depth + find: + paths: "{{ output_dir_test }}" + depth: 2 + recurse: yes + register: files_with_depth + + - assert: + that: + - files_with_depth.matched == 2 + # dir contents are considered until the depth exceeds the requested depth + # there are 6 files/directories in the requested depth and 4 that exceed it by 1 + - files_with_depth.examined == 10 + +- name: exclude with regex + find: + paths: "{{ output_dir_test }}" + recurse: yes + use_regex: true + exclude: .*\.ogg + register: find_test3 +# Note that currently sane ways of doing this with map() or +# selectattr() aren't available in centos6 era jinja2 ... +- set_fact: + find_test3_list: >- + [ {% for f in find_test3.files %} + {{ f.path }} + {% if not loop.last %},{% endif %} + {% endfor %} + ] +- debug: var=find_test3_list +- name: assert we skipped the ogg file + assert: + that: + - '"{{ output_dir_test }}/e/f/g/h/8.ogg" not in find_test3_list' |