1# test code for the template module
2# (c) 2015, Brian Coca <bcoca@ansible.com>
3
4# This file is part of Ansible
5#
6# Ansible is free software: you can redistribute it and/or modify
7# it under the terms of the GNU General Public License as published by
8# the Free Software Foundation, either version 3 of the License, or
9# (at your option) any later version.
10#
11# Ansible is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14# GNU General Public License for more details.
15#
16# You should have received a copy of the GNU General Public License
17# along with Ansible.  If not, see <http://www.gnu.org/licenses/>.
18
19- name: verify ansible_managed
20  template: src=foo.j2 dest={{output_dir}}/special_vars.yaml
21
22- name: read the file into facts
23  include_vars: "{{output_dir}}/special_vars.yaml"
24
25
26- name: verify all test vars are defined
27  assert:
28    that:
29        - 'item in hostvars[inventory_hostname].keys()'
30  with_items:
31    - test_template_host
32    - test_template_path
33    - test_template_mtime
34    - test_template_uid
35    - test_template_fullpath
36    - test_template_run_date
37    - test_ansible_managed
38
39- name: ensure that role_name exists in role_names, ansible_play_role_names, ansible_role_names, and not in ansible_dependent_role_names
40  assert:
41    that:
42      - "role_name in role_names"
43      - "role_name in ansible_play_role_names"
44      - "role_name in ansible_role_names"
45      - "role_name not in ansible_dependent_role_names"
46
47- name: ensure that our dependency (prepare_tests) exists in ansible_role_names and ansible_dependent_role_names, but not in role_names or ansible_play_role_names
48  assert:
49    that:
50      - "'prepare_tests' in ansible_role_names"
51      - "'prepare_tests' in ansible_dependent_role_names"
52      - "'prepare_tests' not in role_names"
53      - "'prepare_tests' not in ansible_play_role_names"
54
55- name: ensure that ansible_role_names is the sum of ansible_play_role_names and ansible_dependent_role_names
56  assert:
57    that:
58      - "(ansible_play_role_names + ansible_dependent_role_names)|unique|sort|list == ansible_role_names|sort|list"
59
60- name: check that ansible_parent_role_names is normally unset when not included/imported (before including other roles)
61  assert:
62    that:
63      - "ansible_parent_role_names is undefined"
64      - "ansible_parent_role_paths is undefined"
65
66- name: ansible_parent_role_names - test functionality by including another role
67  include_role:
68    name: include_parent_role_vars
69    tasks_from: included_by_other_role.yml
70
71- name: check that ansible_parent_role_names is normally unset when not included/imported (after including other role)
72  assert:
73    that:
74      - "ansible_parent_role_names is undefined"
75      - "ansible_parent_role_paths is undefined"
76
77- name: ansible_parent_role_names - test functionality by importing another role
78  import_role:
79    name: include_parent_role_vars
80    tasks_from: included_by_other_role.yml
81
82- name: check that ansible_parent_role_names is normally unset when not included/imported (after importing other role)
83  assert:
84    that:
85      - "ansible_parent_role_names is undefined"
86      - "ansible_parent_role_paths is undefined"
87
88- name: ansible_parent_role_names - test functionality by including another role
89  include_role:
90    name: include_parent_role_vars
91
92- name: check that ansible_parent_role_names is normally unset when not included/imported (after both import and inlcude)
93  assert:
94    that:
95      - "ansible_parent_role_names is undefined"
96      - "ansible_parent_role_paths is undefined"
97
98- name: ansible_parent_role_names - test functionality by importing another role
99  import_role:
100    name: include_parent_role_vars
101