summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/incidental_synchronize/tasks/main.yml
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/incidental_synchronize/tasks/main.yml
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/incidental_synchronize/tasks/main.yml')
-rw-r--r--test/integration/targets/incidental_synchronize/tasks/main.yml273
1 files changed, 273 insertions, 0 deletions
diff --git a/test/integration/targets/incidental_synchronize/tasks/main.yml b/test/integration/targets/incidental_synchronize/tasks/main.yml
new file mode 100644
index 00000000..80e052a6
--- /dev/null
+++ b/test/integration/targets/incidental_synchronize/tasks/main.yml
@@ -0,0 +1,273 @@
+# test code for the synchronize module
+# (c) 2014, 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/>.
+
+- name: install rsync
+ package:
+ name: rsync
+ when: ansible_distribution != "MacOSX"
+
+- name: cleanup old files
+ shell: rm -rf {{output_dir}}/*
+
+- name: create test new files
+ copy: dest={{output_dir}}/{{item}} mode=0644 content="hello world"
+ with_items:
+ - foo.txt
+ - bar.txt
+
+- name: synchronize file to new filename
+ synchronize: src={{output_dir}}/foo.txt dest={{output_dir}}/foo.result
+ register: sync_result
+
+- assert:
+ that:
+ - "'changed' in sync_result"
+ - "sync_result.changed == true"
+ - "'cmd' in sync_result"
+ - "'rsync' in sync_result.cmd"
+ - "'msg' in sync_result"
+ - "sync_result.msg.startswith('>f+')"
+ - "sync_result.msg.endswith('+ foo.txt\n')"
+
+- name: test that the file was really copied over
+ stat:
+ path: "{{ output_dir }}/foo.result"
+ register: stat_result
+
+- assert:
+ that:
+ - "stat_result.stat.exists == True"
+ - "stat_result.stat.checksum == '2aae6c35c94fcfb415dbe95f408b9ce91ee846ed'"
+
+- name: test that the file is not copied a second time
+ synchronize: src={{output_dir}}/foo.txt dest={{output_dir}}/foo.result
+ register: sync_result
+
+- assert:
+ that:
+ - "sync_result.changed == False"
+
+- name: Cleanup
+ file:
+ state: absent
+ path: "{{output_dir}}/{{item}}"
+ with_items:
+ - foo.result
+ - bar.result
+
+- name: Synchronize using the mode=push param
+ synchronize:
+ src: "{{output_dir}}/foo.txt"
+ dest: "{{output_dir}}/foo.result"
+ mode: push
+ register: sync_result
+
+- assert:
+ that:
+ - "'changed' in sync_result"
+ - "sync_result.changed == true"
+ - "'cmd' in sync_result"
+ - "'rsync' in sync_result.cmd"
+ - "'msg' in sync_result"
+ - "sync_result.msg.startswith('>f+')"
+ - "sync_result.msg.endswith('+ foo.txt\n')"
+
+- name: test that the file was really copied over
+ stat:
+ path: "{{ output_dir }}/foo.result"
+ register: stat_result
+
+- assert:
+ that:
+ - "stat_result.stat.exists == True"
+ - "stat_result.stat.checksum == '2aae6c35c94fcfb415dbe95f408b9ce91ee846ed'"
+
+- name: test that the file is not copied a second time
+ synchronize:
+ src: "{{output_dir}}/foo.txt"
+ dest: "{{output_dir}}/foo.result"
+ mode: push
+ register: sync_result
+
+- assert:
+ that:
+ - "sync_result.changed == False"
+
+- name: Cleanup
+ file:
+ state: absent
+ path: "{{output_dir}}/{{item}}"
+ with_items:
+ - foo.result
+ - bar.result
+
+- name: Synchronize using the mode=pull param
+ synchronize:
+ src: "{{output_dir}}/foo.txt"
+ dest: "{{output_dir}}/foo.result"
+ mode: pull
+ register: sync_result
+
+- assert:
+ that:
+ - "'changed' in sync_result"
+ - "sync_result.changed == true"
+ - "'cmd' in sync_result"
+ - "'rsync' in sync_result.cmd"
+ - "'msg' in sync_result"
+ - "sync_result.msg.startswith('>f+')"
+ - "sync_result.msg.endswith('+ foo.txt\n')"
+
+- name: test that the file was really copied over
+ stat:
+ path: "{{ output_dir }}/foo.result"
+ register: stat_result
+
+- assert:
+ that:
+ - "stat_result.stat.exists == True"
+ - "stat_result.stat.checksum == '2aae6c35c94fcfb415dbe95f408b9ce91ee846ed'"
+
+- name: test that the file is not copied a second time
+ synchronize:
+ src: "{{output_dir}}/foo.txt"
+ dest: "{{output_dir}}/foo.result"
+ mode: pull
+ register: sync_result
+
+- assert:
+ that:
+ - "sync_result.changed == False"
+
+- name: Cleanup
+ file:
+ state: absent
+ path: "{{output_dir}}/{{item}}"
+ with_items:
+ - foo.result
+ - bar.result
+
+- name: synchronize files using with_items (issue#5965)
+ synchronize: src={{output_dir}}/{{item}} dest={{output_dir}}/{{item}}.result
+ with_items:
+ - foo.txt
+ - bar.txt
+ register: sync_result
+
+- assert:
+ that:
+ - "sync_result.changed"
+ - "sync_result.msg == 'All items completed'"
+ - "'results' in sync_result"
+ - "sync_result.results|length == 2"
+ - "sync_result.results[0].msg.endswith('+ foo.txt\n')"
+ - "sync_result.results[1].msg.endswith('+ bar.txt\n')"
+
+- name: Cleanup
+ file:
+ state: absent
+ path: "{{output_dir}}/{{item}}.result"
+ with_items:
+ - foo.txt
+ - bar.txt
+
+- name: synchronize files using rsync_path (issue#7182)
+ synchronize: src={{output_dir}}/foo.txt dest={{output_dir}}/foo.rsync_path rsync_path="sudo rsync"
+ register: sync_result
+
+- assert:
+ that:
+ - "'changed' in sync_result"
+ - "sync_result.changed == true"
+ - "'cmd' in sync_result"
+ - "'rsync' in sync_result.cmd"
+ - "'rsync_path' in sync_result.cmd"
+ - "'msg' in sync_result"
+ - "sync_result.msg.startswith('>f+')"
+ - "sync_result.msg.endswith('+ foo.txt\n')"
+
+- name: Cleanup
+ file:
+ state: absent
+ path: "{{output_dir}}/{{item}}"
+ with_items:
+ - foo.rsync_path
+
+- name: add subdirectories for link-dest test
+ file:
+ path: "{{output_dir}}/{{item}}/"
+ state: directory
+ mode: 0755
+ with_items:
+ - directory_a
+ - directory_b
+
+- name: copy foo.txt into the first directory
+ synchronize:
+ src: "{{output_dir}}/foo.txt"
+ dest: "{{output_dir}}/{{item}}/foo.txt"
+ with_items:
+ - directory_a
+
+- name: synchronize files using link_dest
+ synchronize:
+ src: "{{output_dir}}/directory_a/foo.txt"
+ dest: "{{output_dir}}/directory_b/foo.txt"
+ link_dest:
+ - "{{output_dir}}/directory_a"
+ register: sync_result
+
+- name: get stat information for directory_a
+ stat:
+ path: "{{ output_dir }}/directory_a/foo.txt"
+ register: stat_result_a
+
+- name: get stat information for directory_b
+ stat:
+ path: "{{ output_dir }}/directory_b/foo.txt"
+ register: stat_result_b
+
+- assert:
+ that:
+ - "'changed' in sync_result"
+ - "sync_result.changed == true"
+ - "stat_result_a.stat.inode == stat_result_b.stat.inode"
+
+- name: synchronize files using link_dest that would be recursive
+ synchronize:
+ src: "{{output_dir}}/foo.txt"
+ dest: "{{output_dir}}/foo.result"
+ link_dest:
+ - "{{output_dir}}"
+ register: sync_result
+ ignore_errors: yes
+
+- assert:
+ that:
+ - sync_result is not changed
+ - sync_result is failed
+
+- name: Cleanup
+ file:
+ state: absent
+ path: "{{output_dir}}/{{item}}"
+ with_items:
+ - "directory_b/foo.txt"
+ - "directory_a/foo.txt"
+ - "directory_a"
+ - "directory_b"