- 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 # TODO: This is a legitimate bug #- 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