You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansible/test/integration/targets/copy/tasks/check_mode.yml

164 lines
5.2 KiB
YAML

- block:
- name: check_mode - Create another clean copy of 'subdir' not messed with by previous tests (check_mode)
copy:
src: subdir
dest: 'checkmode_subdir/'
directory_mode: 0700
local_follow: False
check_mode: true
register: check_mode_subdir_first
- name: check_mode - Stat the new dir to make sure it really doesn't exist
stat:
path: 'checkmode_subdir/'
register: check_mode_subdir_first_stat
- name: check_mode - Actually do it
copy:
src: subdir
dest: 'checkmode_subdir/'
directory_mode: 0700
local_follow: False
register: check_mode_subdir_real
- name: check_mode - Stat the new dir to make sure it really exists
stat:
path: 'checkmode_subdir/'
register: check_mode_subdir_real_stat
# Quick sanity before we move on
- assert:
that:
- check_mode_subdir_first is changed
- not check_mode_subdir_first_stat.stat.exists
- check_mode_subdir_real is changed
- check_mode_subdir_real_stat.stat.exists
# Do some finagling here. First, use check_mode to ensure it never gets
# created. Then actualy create it, and use check_mode to ensure that doing
# the same copy gets marked as no change.
#
# This same pattern repeats for several other src/dest combinations.
- name: check_mode - Ensure dest with trailing / never gets created but would be without check_mode
copy:
remote_src: true
src: 'checkmode_subdir/'
dest: 'destdir_should_never_exist_because_of_check_mode/'
follow: true
check_mode: true
register: check_mode_trailing_slash_first
- name: check_mode - Stat the new dir to make sure it really doesn't exist
stat:
path: 'destdir_should_never_exist_because_of_check_mode/'
register: check_mode_trailing_slash_first_stat
- name: check_mode - Create the above copy for real now (without check_mode)
copy:
remote_src: true
src: 'checkmode_subdir/'
dest: 'destdir_should_never_exist_because_of_check_mode/'
register: check_mode_trailing_slash_real
- name: check_mode - Stat the new dir to make sure it really exists
stat:
path: 'destdir_should_never_exist_because_of_check_mode/'
register: check_mode_trailing_slash_real_stat
- name: check_mode - Do the same copy yet again (with check_mode this time) to ensure it's marked unchanged
copy:
remote_src: true
src: 'checkmode_subdir/'
dest: 'destdir_should_never_exist_because_of_check_mode/'
check_mode: true
register: check_mode_trailing_slash_second
# Repeat the same basic pattern here.
- name: check_mode - Do another basic copy (with check_mode)
copy:
src: foo.txt
dest: "{{ remote_dir }}/foo-check_mode.txt"
mode: 0444
check_mode: true
register: check_mode_foo_first
- name: check_mode - Stat the new file to make sure it really doesn't exist
stat:
path: "{{ remote_dir }}/foo-check_mode.txt"
register: check_mode_foo_first_stat
- name: check_mode - Do the same basic copy (without check_mode)
copy:
src: foo.txt
dest: "{{ remote_dir }}/foo-check_mode.txt"
mode: 0444
register: check_mode_foo_real
- name: check_mode - Stat the new file to make sure it really exists
stat:
path: "{{ remote_dir }}/foo-check_mode.txt"
register: check_mode_foo_real_stat
- name: check_mode - And again (with check_mode)
copy:
src: foo.txt
dest: "{{ remote_dir }}/foo-check_mode.txt"
mode: 0444
register: check_mode_foo_second
- assert:
that:
- check_mode_subdir_first is changed
- check_mode_trailing_slash_first is changed
- not check_mode_trailing_slash_first_stat.stat.exists
- check_mode_trailing_slash_real is changed
- check_mode_trailing_slash_real_stat.stat.exists
- check_mode_trailing_slash_second is not changed
- check_mode_foo_first is changed
- not check_mode_foo_first_stat.stat.exists
- check_mode_foo_real is changed
- check_mode_foo_real_stat.stat.exists
- check_mode_foo_second is not changed
- name: check_mode - Do a basic copy to setup next test (without check mode)
copy:
src: foo.txt
dest: "{{ remote_dir }}/foo-check_mode.txt"
mode: 0444
- name: check_mode - Copy the same src with a different mode (check mode)
copy:
src: foo.txt
dest: "{{ remote_dir }}/foo-check_mode.txt"
mode: 0666
check_mode: True
register: check_mode_file_attribute
- name: stat the file to make sure the mode was not updated in check mode
stat:
path: "{{ remote_dir }}/foo-check_mode.txt"
register: check_mode_file_attribute_stat
- name: check_mode - Copy the same src with a different mode (without check mode)
copy:
src: foo.txt
dest: "{{ remote_dir }}/foo-check_mode.txt"
mode: 0666
register: real_file_attribute
- name: stat the file to make sure the mode was updated without check mode
stat:
path: "{{ remote_dir }}/foo-check_mode.txt"
register: real_file_attribute_stat
- assert:
that:
- check_mode_file_attribute is changed
- real_file_attribute is changed
- "check_mode_file_attribute_stat.stat.mode == '0444'"
- "real_file_attribute_stat.stat.mode == '0666'"