summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/find
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-14 20:03:01 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-14 20:03:01 +0000
commita453ac31f3428614cceb99027f8efbdb9258a40b (patch)
treef61f87408f32a8511cbd91799f9cececb53e0374 /test/integration/targets/find
parentInitial commit. (diff)
downloadansible-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/aliases1
-rw-r--r--test/integration/targets/find/meta/main.yml2
-rw-r--r--test/integration/targets/find/tasks/main.yml163
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'