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/unarchive/tasks/test_symlink.yml

127 lines
3.2 KiB
YAML

- name: Create a destination dir
file:
path: "{{ remote_tmp_dir }}/test-unarchive-tar-gz"
state: directory
- name: Create a symlink to the destination dir
file:
path: "{{ remote_tmp_dir }}/link-to-unarchive-dir"
src: "{{ remote_tmp_dir }}/test-unarchive-tar-gz"
state: "link"
- name: test that unarchive works when dest is a symlink to a dir
unarchive:
src: "{{ remote_tmp_dir }}/test-unarchive.tar.gz"
dest: "{{ remote_tmp_dir }}/link-to-unarchive-dir"
mode: "u+rwX,go+rX"
remote_src: yes
register: unarchive_11
- name: Check that file is really there
stat:
path: "{{ remote_tmp_dir }}/test-unarchive-tar-gz/foo-unarchive.txt"
register: unarchive11_stat0
- name: Assert that unarchive when dest is a symlink to a dir worked
assert:
that:
- "unarchive_11.changed == true"
- "unarchive11_stat0.stat.exists == true"
- name: remove our tar.gz unarchive destination
file:
path: '{{ remote_tmp_dir }}/test-unarchive-tar-gz'
state: absent
- name: Create a file
file:
path: "{{ remote_tmp_dir }}/test-unarchive-tar-gz"
state: touch
- name: Create a symlink to the file
file:
src: "{{ remote_tmp_dir }}/test-unarchive-tar-gz"
path: "{{ remote_tmp_dir }}/link-to-unarchive-file"
state: "link"
- name: test that unarchive fails when dest is a link to a file
unarchive:
src: "{{ remote_tmp_dir }}/test-unarchive.tar.gz"
dest: "{{ remote_tmp_dir }}/link-to-unarchive-file"
mode: "u+rwX,go+rX"
remote_src: yes
ignore_errors: True
register: unarchive_12
- name: Assert that unarchive when dest is a file failed
assert:
that:
- "unarchive_12.failed == true"
- name: remove our tar.gz unarchive destination
file:
path: '{{ remote_tmp_dir }}/test-unarchive-tar-gz'
state: absent
- name: Create a destination dir
file:
path: "{{ remote_tmp_dir }}/test-symlink"
state: directory
- name: Create files
file:
path: "{{ remote_tmp_dir }}/test-symlink/{{ item }}"
state: touch
loop:
- file1
- file2
- name: Create a symlink to the file
file:
path: "{{ remote_tmp_dir }}/test-symlink/link1"
src: "{{ remote_tmp_dir }}/test-symlink/file1"
state: link
- name: Create archive of symlink
shell: tar czvf {{ remote_tmp_dir }}/link1.tar.gz link1 chdir={{ remote_tmp_dir }}/test-symlink
- name: Change target of symlink
file:
path: "{{ remote_tmp_dir }}/test-symlink/link1"
src: "{{ remote_tmp_dir }}/test-symlink/file2"
state: link
- name: Unarchive when symlink differs
unarchive:
src: "{{ remote_tmp_dir }}/link1.tar.gz"
dest: "{{ remote_tmp_dir }}/test-symlink"
remote_src: yes
register: unarchive_13
- name: Assert that unarchive was performed
assert:
that:
- unarchive_13.changed == true
- name: Unarchive when symlink is the same
unarchive:
src: "{{ remote_tmp_dir }}/link1.tar.gz"
dest: "{{ remote_tmp_dir }}/test-symlink"
remote_src: yes
register: unarchive_13
- name: Assert that unarchive was not performed
assert:
that:
- "unarchive_13.changed == false"
- name: Remove files
file:
path: "{{ remote_tmp_dir }}/test-symlink/{{ item }}"
state: absent
with_items:
- file1
- file2
- link1
- link1.tar.gz