Make builtin.file modification times support check_mode (#76973)

* Make builtin.file modification times support check_mode
* Add integration test
pull/76991/head
Stephen Ryan 4 years ago committed by GitHub
parent 0d40423f1c
commit 522f9d1050
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,2 @@
bugfixes:
- ansible.builtin.file modification_time supports check_mode

@ -469,7 +469,8 @@ def update_timestamp_for_file(path, mtime, atime, diff=None):
set_time = (atime, mtime)
os.utime(b_path, set_time)
if not module.check_mode:
os.utime(b_path, set_time)
if diff is not None:
if 'before' not in diff:

@ -52,6 +52,8 @@
- name: Test _diff_peek
import_tasks: diff_peek.yml
- name: Test modification time
import_tasks: modification_time.yml
# These tests need to be organized by state parameter into separate files later

@ -0,0 +1,70 @@
# file module tests for dealing with modification_time
- name: Initialize the test output dir
import_tasks: initialize.yml
- name: Setup the modification time for the tests
set_fact:
modification_timestamp: "202202081414.00"
- name: Get stat info for the file
stat:
path: "{{ output_file }}"
register: initial_file_stat
- name: Set a modification time in check_mode
ansible.builtin.file:
path: "{{ output_file }}"
modification_time: "{{ modification_timestamp }}"
modification_time_format: "%Y%m%d%H%M.%S"
check_mode: true
register: file_change_check_mode
- name: Re-stat the file
stat:
path: "{{ output_file }}"
register: check_mode_stat
- name: Confirm check_mode did not change the file
assert:
that:
- initial_file_stat.stat.mtime == check_mode_stat.stat.mtime
# Ensure the changed flag was set
- file_change_check_mode.changed
# Ensure the diff is present
# Note: file diff always contains the path
- file_change_check_mode.diff.after | length > 1
- name: Set a modification time for real
ansible.builtin.file:
path: "{{ output_file }}"
modification_time: "{{ modification_timestamp }}"
modification_time_format: "%Y%m%d%H%M.%S"
register: file_change_no_check_mode
- name: Stat of the file after the change
stat:
path: "{{ output_file }}"
register: change_stat
- name: Confirm the modification time changed
assert:
that:
- initial_file_stat.stat.mtime != change_stat.stat.mtime
- file_change_no_check_mode.changed
# Note: file diff always contains the path
- file_change_no_check_mode.diff.after | length > 1
- name: Set a modification time a second time to confirm no changes or diffs
ansible.builtin.file:
path: "{{ output_file }}"
modification_time: "{{ modification_timestamp }}"
modification_time_format: "%Y%m%d%H%M.%S"
register: file_change_no_check_mode_second
- name: Confirm no changes made registered
assert:
that:
- not file_change_no_check_mode_second.changed
# Note: file diff always contains the path
- file_change_no_check_mode_second.diff.after | length == 1
Loading…
Cancel
Save