copy: Add testcase for recursive copy.

pull/4375/head
Paul Sokolovsky 11 years ago
parent 2e668f14f7
commit 3ad61ef310

@ -393,6 +393,23 @@ class TestPlaybook(unittest.TestCase):
assert utils.jsonify(expected, format=True) == utils.jsonify(actual,format=True)
def test_recursive_copy(self):
pb = 'test/playbook-recursive-copy.yml'
actual = self._run(pb)
expected = {
"localhost": {
"changed": 65,
"failures": 0,
"ok": 73,
"skipped": 0,
"unreachable": 0
}
}
assert utils.jsonify(expected, format=True) == utils.jsonify(actual,format=True)
def _compare_file_output(self, filename, expected_lines):
actual_lines = []
with open(filename) as f:

@ -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
Loading…
Cancel
Save