|
|
|
# Verify copy module for small and large files, and inline content.
|
|
|
|
|
|
|
|
- name: integration/action/copy.yml
|
|
|
|
hosts: test-targets
|
|
|
|
vars:
|
|
|
|
sourced_files:
|
|
|
|
- src: /tmp/copy-tiny-file
|
|
|
|
dest: /tmp/copy-tiny-file.out
|
|
|
|
content: this is a tiny file.
|
|
|
|
expected_checksum: f29faa9a6f19a700a941bf2aa5b281643c4ec8a0
|
|
|
|
- src: /tmp/copy-large-file
|
|
|
|
dest: /tmp/copy-large-file.out
|
|
|
|
content: "{{ 'x' * 200000 }}"
|
|
|
|
expected_checksum: 62951f943c41cdd326e5ce2b53a779e7916a820d
|
|
|
|
|
|
|
|
inline_files:
|
|
|
|
- dest: /tmp/copy-tiny-inline-file.out
|
|
|
|
content: tiny inline content
|
|
|
|
expected_checksum: b26dd6444595e2bdb342aa0a91721b57478b5029
|
|
|
|
- dest: /tmp/copy-large-inline-file.out
|
|
|
|
content: |
|
|
|
|
{{ 'y' * 200000 }}
|
|
|
|
expected_checksum: d675f47e467eae19e49032a2cc39118e12a6ee72
|
|
|
|
|
|
|
|
files: "{{ sourced_files + inline_files }}"
|
|
|
|
tasks:
|
|
|
|
- name: Create sourced files
|
|
|
|
copy:
|
|
|
|
dest: "{{ item.src }}"
|
|
|
|
content: "{{ item.content }}"
|
|
|
|
mode: u=rw,go=r
|
|
|
|
loop: "{{ sourced_files }}"
|
|
|
|
loop_control:
|
|
|
|
label: "{{ item.src }}"
|
|
|
|
delegate_to: localhost
|
|
|
|
run_once: true
|
|
|
|
|
|
|
|
- name: Cleanup lingering destination files
|
|
|
|
file:
|
|
|
|
path: "{{ item.dest }}"
|
|
|
|
state: absent
|
|
|
|
loop: "{{ files }}"
|
|
|
|
loop_control:
|
|
|
|
label: "{{ item.dest }}"
|
|
|
|
|
|
|
|
- name: Copy sourced files
|
|
|
|
copy:
|
|
|
|
src: "{{ item.src }}"
|
|
|
|
dest: "{{ item.dest }}"
|
|
|
|
mode: u=rw,go=r
|
|
|
|
loop: "{{ sourced_files }}"
|
|
|
|
loop_control:
|
|
|
|
label: "{{ item.dest }}"
|
|
|
|
|
|
|
|
- name: Copy inline files
|
|
|
|
copy:
|
|
|
|
dest: "{{ item.dest }}"
|
|
|
|
content: "{{ item.content }}"
|
|
|
|
mode: u=rw,go=r
|
|
|
|
loop: "{{ inline_files }}"
|
|
|
|
loop_control:
|
|
|
|
label: "{{ item.dest }}"
|
|
|
|
|
|
|
|
# stat results
|
|
|
|
|
|
|
|
- name: Stat copied files
|
|
|
|
stat:
|
|
|
|
path: "{{ item.dest }}"
|
|
|
|
loop: "{{ files }}"
|
|
|
|
loop_control:
|
|
|
|
label: "{{ item.dest }}"
|
|
|
|
register: stat
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- item.stat.checksum == item.item.expected_checksum
|
|
|
|
quiet: true # Avoid spamming stdout with 400 kB of item.item.content
|
|
|
|
fail_msg: item={{ item }}
|
|
|
|
loop: "{{ stat.results }}"
|
|
|
|
loop_control:
|
|
|
|
label: "{{ item.stat.path }}"
|
|
|
|
|
|
|
|
- name: Cleanup destination files
|
|
|
|
file:
|
|
|
|
path: "{{ item.dest }}"
|
|
|
|
state: absent
|
|
|
|
loop: "{{ files }}"
|
|
|
|
loop_control:
|
|
|
|
label: "{{ item.dest }}"
|
|
|
|
tags:
|
|
|
|
- copy
|