mirror of https://github.com/ansible/ansible.git
Merge pull request #4375 from pfalcon/ansible
copy: Implement recursive copying if src is a directory.pull/4925/head
commit
33242cacf3
@ -0,0 +1,133 @@
|
|||||||
|
---
|
||||||
|
# To run me manually, use: -i "localhost,"
|
||||||
|
- hosts: localhost
|
||||||
|
connection: local
|
||||||
|
gather_facts: no
|
||||||
|
vars:
|
||||||
|
- testdir: /tmp/ansible-rcopy
|
||||||
|
- filesdir: test_recursive_copy/files
|
||||||
|
tasks:
|
||||||
|
|
||||||
|
#
|
||||||
|
# First, regression tests for single-file behavior
|
||||||
|
#
|
||||||
|
|
||||||
|
- name: "src single file, dest file"
|
||||||
|
command: rm -rf {{testdir}}
|
||||||
|
- file: state=directory dest={{testdir}}
|
||||||
|
- copy: src={{filesdir}}/subdir/subdir2/subdir3/test1 dest={{testdir}}/file1
|
||||||
|
register: res
|
||||||
|
- command: test -f {{testdir}}/file1
|
||||||
|
- command: test "{{res.changed}}" == "True"
|
||||||
|
- copy: src={{filesdir}}/subdir/subdir2/subdir3/test1 dest={{testdir}}/file1
|
||||||
|
register: res
|
||||||
|
- command: test "{{res.changed}}" == "False"
|
||||||
|
|
||||||
|
- name: "src single file, dest dir w/trailing slash"
|
||||||
|
command: rm -rf {{testdir}}
|
||||||
|
- file: state=directory dest={{testdir}}
|
||||||
|
- copy: src={{filesdir}}/subdir/subdir2/subdir3/test1 dest={{testdir}}/
|
||||||
|
register: res
|
||||||
|
- command: test -f {{testdir}}/test1
|
||||||
|
- command: test "{{res.changed}}" == "True"
|
||||||
|
- copy: src={{filesdir}}/subdir/subdir2/subdir3/test1 dest={{testdir}}/
|
||||||
|
register: res
|
||||||
|
- command: test "{{res.changed}}" == "False"
|
||||||
|
|
||||||
|
- name: "src single file, dest dir wo/trailing slash - doesn't behave in sane way"
|
||||||
|
command: rm -rf {{testdir}}
|
||||||
|
- file: state=directory dest={{testdir}}
|
||||||
|
- copy: src={{filesdir}}/subdir/subdir2/subdir3/test1 dest={{testdir}}
|
||||||
|
register: res
|
||||||
|
- shell: test -f {{testdir}}/test1
|
||||||
|
- command: test "{{res.changed}}" == "True"
|
||||||
|
- copy: src={{filesdir}}/subdir/subdir2/subdir3/test1 dest={{testdir}}
|
||||||
|
register: res
|
||||||
|
- command: test "{{res.changed}}" == "False"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Now, test recursive behavior
|
||||||
|
#
|
||||||
|
|
||||||
|
- name: "src dir w/trailing slash, dest w/trailing slash"
|
||||||
|
command: rm -rf {{testdir}}
|
||||||
|
- file: state=directory dest={{testdir}}
|
||||||
|
- copy: src={{filesdir}}/subdir/ dest={{testdir}}/
|
||||||
|
register: res
|
||||||
|
- command: test -d {{testdir}}/subdir2
|
||||||
|
- command: test -d {{testdir}}/subdir2/subdir3
|
||||||
|
- command: test -d {{testdir}}/subdir2/subdir3
|
||||||
|
- command: test -f {{testdir}}/subdir2/subdir3/test1
|
||||||
|
- command: test -f {{testdir}}/subdir2/subdir3/test2
|
||||||
|
- command: test "{{res.changed}}" == "True"
|
||||||
|
- copy: src={{filesdir}}/subdir/ dest={{testdir}}/
|
||||||
|
register: res
|
||||||
|
- command: test "{{res.changed}}" == "False"
|
||||||
|
|
||||||
|
# Expecting the same behavior
|
||||||
|
- name: "src dir w/trailing slash, dest wo/trailing slash"
|
||||||
|
command: rm -rf {{testdir}}
|
||||||
|
- file: state=directory dest={{testdir}}
|
||||||
|
- copy: src={{filesdir}}/subdir/ dest={{testdir}}
|
||||||
|
register: res
|
||||||
|
- command: test -d {{testdir}}/subdir2
|
||||||
|
- command: test -d {{testdir}}/subdir2/subdir3
|
||||||
|
- command: test -d {{testdir}}/subdir2/subdir3
|
||||||
|
- command: test -f {{testdir}}/subdir2/subdir3/test1
|
||||||
|
- command: test -f {{testdir}}/subdir2/subdir3/test2
|
||||||
|
- command: test "{{res.changed}}" == "True"
|
||||||
|
- copy: src={{filesdir}}/subdir/ dest={{testdir}}
|
||||||
|
register: res
|
||||||
|
- command: test "{{res.changed}}" == "False"
|
||||||
|
|
||||||
|
- name: "src dir wo/trailing slash, dest w/trailing slash"
|
||||||
|
command: rm -rf {{testdir}}
|
||||||
|
- file: state=directory dest={{testdir}}
|
||||||
|
- copy: src={{filesdir}}/subdir dest={{testdir}}/
|
||||||
|
register: res
|
||||||
|
- command: test -d {{testdir}}/subdir/subdir2
|
||||||
|
- command: test -d {{testdir}}/subdir/subdir2/subdir3
|
||||||
|
- command: test -d {{testdir}}/subdir/subdir2/subdir3
|
||||||
|
- command: test -f {{testdir}}/subdir/subdir2/subdir3/test1
|
||||||
|
- command: test -f {{testdir}}/subdir/subdir2/subdir3/test2
|
||||||
|
- command: test "{{res.changed}}" == "True"
|
||||||
|
- copy: src={{filesdir}}/subdir dest={{testdir}}/
|
||||||
|
register: res
|
||||||
|
- command: test "{{res.changed}}" == "False"
|
||||||
|
|
||||||
|
# Expecting the same behavior
|
||||||
|
- name: "src dir wo/trailing slash, dest wo/trailing slash"
|
||||||
|
command: rm -rf {{testdir}}
|
||||||
|
- file: state=directory dest={{testdir}}
|
||||||
|
- copy: src={{filesdir}}/subdir dest={{testdir}}
|
||||||
|
register: res
|
||||||
|
- command: test -d {{testdir}}/subdir/subdir2
|
||||||
|
- command: test -d {{testdir}}/subdir/subdir2/subdir3
|
||||||
|
- command: test -d {{testdir}}/subdir/subdir2/subdir3
|
||||||
|
- command: test -f {{testdir}}/subdir/subdir2/subdir3/test1
|
||||||
|
- command: test -f {{testdir}}/subdir/subdir2/subdir3/test2
|
||||||
|
- command: test "{{res.changed}}" == "True"
|
||||||
|
- copy: src={{filesdir}}/subdir dest={{testdir}}
|
||||||
|
register: res
|
||||||
|
- command: test "{{res.changed}}" == "False"
|
||||||
|
|
||||||
|
|
||||||
|
- name: "Verifying notify handling for recursive files"
|
||||||
|
command: rm -rf {{testdir}}
|
||||||
|
- file: state=directory dest={{testdir}}
|
||||||
|
- copy: src={{filesdir}}/subdir dest={{testdir}}
|
||||||
|
notify:
|
||||||
|
- files changed
|
||||||
|
- meta: flush_handlers
|
||||||
|
- command: test -f {{testdir}}/notify_fired
|
||||||
|
|
||||||
|
- command: rm {{testdir}}/notify_fired
|
||||||
|
- copy: src={{filesdir}}/subdir dest={{testdir}}
|
||||||
|
notify:
|
||||||
|
- files changed
|
||||||
|
- meta: flush_handlers
|
||||||
|
- command: test ! -f {{testdir}}/notify_fired
|
||||||
|
|
||||||
|
handlers:
|
||||||
|
- name: files changed
|
||||||
|
command: touch {{testdir}}/notify_fired
|
@ -0,0 +1,2 @@
|
|||||||
|
test1
|
||||||
|
|
@ -0,0 +1,2 @@
|
|||||||
|
test2
|
||||||
|
|
Loading…
Reference in New Issue