# test code for the template module # (c) 2014, Michael DeHaan # 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 . # DOS TEMPLATE - name: fill in a basic template (DOS) win_template: src: foo.j2 dest: '{{ win_output_dir }}/foo.dos.templated' register: template_result - name: verify that the file was marked as changed (DOS) assert: that: - 'template_result is changed' - name: fill in a basic template again (DOS) win_template: src: foo.j2 dest: '{{ win_output_dir }}/foo.dos.templated' register: template_result2 - name: verify that the template was not changed (DOS) assert: that: - 'template_result2 is not changed' # VERIFY DOS CONTENTS - name: copy known good into place (DOS) win_copy: src: foo.dos.txt dest: '{{ win_output_dir }}\\foo.dos.txt' - name: compare templated file to known good (DOS) raw: fc.exe {{ win_output_dir }}\\foo.dos.templated {{ win_output_dir }}\\foo.dos.txt register: diff_result - debug: var: diff_result - name: verify templated file matches known good (DOS) assert: that: - '"FC: no differences encountered" in diff_result.stdout' - "diff_result.rc == 0" # UNIX TEMPLATE - name: fill in a basic template (Unix) win_template: src: foo.j2 dest: '{{ win_output_dir }}/foo.unix.templated' newline_sequence: '\n' register: template_result - name: verify that the file was marked as changed (Unix) assert: that: - 'template_result is changed' - name: fill in a basic template again (Unix) win_template: src: foo.j2 dest: '{{ win_output_dir }}/foo.unix.templated' newline_sequence: '\n' register: template_result2 - name: verify that the template was not changed (Unix) assert: that: - 'template_result2 is not changed' # VERIFY UNIX CONTENTS - name: copy known good into place (Unix) win_copy: src: foo.unix.txt dest: '{{ win_output_dir }}\\foo.unix.txt' - name: compare templated file to known good (Unix) raw: fc.exe {{ win_output_dir }}\\foo.unix.templated {{ win_output_dir }}\\foo.unix.txt register: diff_result - debug: var: diff_result - name: verify templated file matches known good (Unix) assert: that: - '"FC: no differences encountered" in diff_result.stdout' # VERIFY DOS CONTENTS - name: copy known good into place (DOS) win_copy: src: foo.dos.txt dest: '{{ win_output_dir }}\\foo.dos.txt' - name: compare templated file to known good (DOS) raw: fc.exe {{ win_output_dir }}\\foo.dos.templated {{ win_output_dir }}\\foo.dos.txt register: diff_result - debug: var: diff_result - name: verify templated file matches known good (DOS) assert: that: - '"FC: no differences encountered" in diff_result.stdout' # VERIFY MODE # can't set file mode on windows so commenting this test out #- name: set file mode # win_file: path={{win_output_dir}}/foo.templated mode=0644 # register: file_result #- name: ensure file mode did not change # assert: # that: # - "file_result.changed != True" # commenting out all the following tests as expanduser and file modes not windows concepts. # VERIFY dest as a directory does not break file attributes # Note: expanduser is needed to go down the particular codepath that was broken before #- name: setup directory for test # win_file: state=directory dest={{win_output_dir | expanduser}}/template-dir mode=0755 owner=nobody group=root #- name: set file mode when the destination is a directory # win_template: src=foo.j2 dest={{win_output_dir | expanduser}}/template-dir/ mode=0600 owner=root group=root #- name: set file mode when the destination is a directory # win_template: src=foo.j2 dest={{win_output_dir | expanduser}}/template-dir/ mode=0600 owner=root group=root # register: file_result # #- name: check that the file has the correct attributes # win_stat: path={{win_output_dir | expanduser}}/template-dir/foo.j2 # register: file_attrs # #- assert: # that: # - "file_attrs.stat.uid == 0" # - "file_attrs.stat.pw_name == 'root'" # - "file_attrs.stat.mode == '0600'" # #- name: check that the containing directory did not change attributes # win_stat: path={{win_output_dir | expanduser}}/template-dir/ # register: dir_attrs # #- assert: # that: # - "dir_attrs.stat.uid != 0" # - "dir_attrs.stat.pw_name == 'nobody'" # - "dir_attrs.stat.mode == '0755'"