diff --git a/library/files/assemble b/library/files/assemble index d11276a4a5c..b36c6e29ffb 100644 --- a/library/files/assemble +++ b/library/files/assemble @@ -107,7 +107,7 @@ def assemble_from_fragments(src_path, delimiter=None, compiled_regexp=None): continue fragment = "%s/%s" % (src_path, f) if delimit_me and delimiter: - tmp.write(delimiter) + tmp.write("%s\n" % delimiter) if os.path.isfile(fragment): tmp.write(file(fragment).read()) delimit_me = True @@ -171,7 +171,7 @@ def main(): file_args = module.load_file_common_arguments(module.params) changed = module.set_file_attributes_if_different(file_args, changed) # Mission complete - module.exit_json(src=src, dest=dest, md5sum=destmd5, changed=changed, msg="OK") + module.exit_json(src=src, dest=dest, md5sum=pathmd5, changed=changed, msg="OK") # import module snippets from ansible.module_utils.basic import * diff --git a/test/integration/non_destructive.yml b/test/integration/non_destructive.yml index 0643a7be9d9..f8c6772ee9f 100644 --- a/test/integration/non_destructive.yml +++ b/test/integration/non_destructive.yml @@ -17,6 +17,7 @@ - { role: test_file, tags: test_file } - { role: test_fetch, tags: test_fetch } - { role: test_synchronize, tags: test_synchronize } + - { role: test_assemble, tags: test_assemble } - { role: test_subversion, tags: test_subversion } - { role: test_git, tags: test_git } - { role: test_hg, tags: test_hg } @@ -34,4 +35,4 @@ - { role: test_iterators, tags: test_iterators } - { role: test_command_shell, tags: test_command_shell } - { role: test_failed_when, tags: test_failed_when } - - { role: test_script, tags: test_script } \ No newline at end of file + - { role: test_script, tags: test_script } diff --git a/tests_new/integration/roles/test_assemble/files/fragment1 b/tests_new/integration/roles/test_assemble/files/fragment1 new file mode 100644 index 00000000000..a00d3ea04ab --- /dev/null +++ b/tests_new/integration/roles/test_assemble/files/fragment1 @@ -0,0 +1 @@ +this is fragment 1 diff --git a/tests_new/integration/roles/test_assemble/files/fragment2 b/tests_new/integration/roles/test_assemble/files/fragment2 new file mode 100644 index 00000000000..860f760388e --- /dev/null +++ b/tests_new/integration/roles/test_assemble/files/fragment2 @@ -0,0 +1 @@ +this is fragment 2 diff --git a/tests_new/integration/roles/test_assemble/files/fragment3 b/tests_new/integration/roles/test_assemble/files/fragment3 new file mode 100644 index 00000000000..df95b24bb6a --- /dev/null +++ b/tests_new/integration/roles/test_assemble/files/fragment3 @@ -0,0 +1 @@ +this is fragment 3 diff --git a/tests_new/integration/roles/test_assemble/files/fragment4 b/tests_new/integration/roles/test_assemble/files/fragment4 new file mode 100644 index 00000000000..c83252bb8ee --- /dev/null +++ b/tests_new/integration/roles/test_assemble/files/fragment4 @@ -0,0 +1 @@ +this is fragment 4 diff --git a/tests_new/integration/roles/test_assemble/files/fragment5 b/tests_new/integration/roles/test_assemble/files/fragment5 new file mode 100644 index 00000000000..8a527d15f75 --- /dev/null +++ b/tests_new/integration/roles/test_assemble/files/fragment5 @@ -0,0 +1 @@ +this is fragment 5 diff --git a/tests_new/integration/roles/test_assemble/meta/main.yml b/tests_new/integration/roles/test_assemble/meta/main.yml new file mode 100644 index 00000000000..a9d0b4681ef --- /dev/null +++ b/tests_new/integration/roles/test_assemble/meta/main.yml @@ -0,0 +1,20 @@ +# test code for the assemble module +# (c) 2014, James Cammarata + +# This file is part of Ansible +# +# Ansible is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Ansible is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Ansible. If not, see . + +dependencies: + - prepare_tests diff --git a/tests_new/integration/roles/test_assemble/tasks/main.yml b/tests_new/integration/roles/test_assemble/tasks/main.yml new file mode 100644 index 00000000000..8aba629319d --- /dev/null +++ b/tests_new/integration/roles/test_assemble/tasks/main.yml @@ -0,0 +1,71 @@ +# test code for the assemble module +# (c) 2014, James Cammarata + +# This file is part of Ansible +# +# Ansible is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Ansible is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Ansible. If not, see . + +- name: create a new directory for file source + file: dest="{{output_dir}}/src" state=directory + register: result + +- name: assert the directory was created + assert: + that: + - "result.state == 'directory'" + +- name: copy the files to a new directory + copy: src="./" dest="{{output_dir}}/src" + register: result + +- name: test assemble with all fragments + assemble: src="{{output_dir}}/src" dest="{{output_dir}}/assembled1" + register: result + +- name: assert the fragments were assembled + assert: + that: + - "result.state == 'file'" + - "result.md5sum == '96905702a2ece40de6bf3a94b5062513'" + +- name: test assemble with fragments matching a regex + assemble: src="{{output_dir}}/src" dest="{{output_dir}}/assembled2" regexp="^fragment[1-3]$" + register: result + +- name: assert the fragments were assembled with a regex + assert: + that: + - "result.state == 'file'" + - "result.md5sum == 'eb9e3486a9cd6943b5242e573b9b9349'" + +- name: test assemble with a delimiter + assemble: src="{{output_dir}}/src" dest="{{output_dir}}/assembled3" delimiter="#--- delimiter ---#" + register: result + +- name: assert the fragments were assembled with a delimiter + assert: + that: + - "result.state == 'file'" + - "result.md5sum == '4773eac67aba3f0be745876331c8a450'" + +- name: test assemble with remote_src=False + assemble: src="{{output_dir}}/src" dest="{{output_dir}}/assembled4" remote_src=False + register: result + +- name: assert the fragments were assembled without remote + assert: + that: + - "result.state == 'file'" + - "result.md5sum == '96905702a2ece40de6bf3a94b5062513'" +