From 15c7288ab9d943e90dda40ea20920674799d052b Mon Sep 17 00:00:00 2001 From: Marius Gedminas Date: Mon, 6 Mar 2017 18:29:20 +0200 Subject: [PATCH] Show diff when file: state=link changes the symlink target (#22243) * Show diff when file: state=link changes the symlink target * Integration test for symlink target change * Also check soft link idempotency --- lib/ansible/modules/files/file.py | 2 ++ test/integration/targets/file/tasks/main.yml | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/lib/ansible/modules/files/file.py b/lib/ansible/modules/files/file.py index 4ec22b5b7a..341728e631 100644 --- a/lib/ansible/modules/files/file.py +++ b/lib/ansible/modules/files/file.py @@ -392,6 +392,8 @@ def main(): elif prev_state == 'link': b_old_src = os.readlink(b_path) if b_old_src != b_src: + diff['before']['src'] = to_native(b_old_src, errors='strict') + diff['after']['src'] = src changed = True elif prev_state == 'hard': if not (state == 'hard' and os.stat(b_path).st_ino == os.stat(b_src).st_ino): diff --git a/test/integration/targets/file/tasks/main.yml b/test/integration/targets/file/tasks/main.yml index 91d6f8ed0d..14f99fdd11 100644 --- a/test/integration/targets/file/tasks/main.yml +++ b/test/integration/targets/file/tasks/main.yml @@ -97,6 +97,26 @@ that: - "file5_result.changed == true" +- name: change soft link to relative + file: src={{output_file|basename}} dest={{output_dir}}/soft.txt state=link + register: file5a_result + +- name: verify that the file was marked as changed + assert: + that: + - "file5a_result.changed == true" + - "file5a_result.diff.before.src == output_file|expanduser" + - "file5a_result.diff.after.src == output_file|basename" + +- name: soft link idempotency check + file: src={{output_file|basename}} dest={{output_dir}}/soft.txt state=link + register: file5b_result + +- name: verify that the file was not marked as changed + assert: + that: + - "file5b_result.changed == false" + - name: create hard link to file file: src={{output_file}} dest={{output_dir}}/hard.txt state=hard register: file6_result