summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/includes
diff options
context:
space:
mode:
Diffstat (limited to 'test/integration/targets/includes')
-rw-r--r--test/integration/targets/includes/aliases2
-rw-r--r--test/integration/targets/includes/include_on_playbook_should_fail.yml1
-rw-r--r--test/integration/targets/includes/includes_loop_rescue.yml29
-rw-r--r--test/integration/targets/includes/inherit_notify.yml18
-rw-r--r--test/integration/targets/includes/roles/test_includes/handlers/main.yml1
-rw-r--r--test/integration/targets/includes/roles/test_includes/handlers/more_handlers.yml12
-rw-r--r--test/integration/targets/includes/roles/test_includes/tasks/branch_toplevel.yml11
-rw-r--r--test/integration/targets/includes/roles/test_includes/tasks/empty.yml0
-rw-r--r--test/integration/targets/includes/roles/test_includes/tasks/included_task1.yml9
-rw-r--r--test/integration/targets/includes/roles/test_includes/tasks/leaf_sublevel.yml2
-rw-r--r--test/integration/targets/includes/roles/test_includes/tasks/main.yml114
-rw-r--r--test/integration/targets/includes/roles/test_includes/tasks/not_a_role_task.yml4
-rw-r--r--test/integration/targets/includes/roles/test_includes_free/tasks/inner.yml2
-rw-r--r--test/integration/targets/includes/roles/test_includes_free/tasks/inner_fqcn.yml2
-rw-r--r--test/integration/targets/includes/roles/test_includes_free/tasks/main.yml9
-rw-r--r--test/integration/targets/includes/roles/test_includes_host_pinned/tasks/inner.yml2
-rw-r--r--test/integration/targets/includes/roles/test_includes_host_pinned/tasks/main.yml6
-rwxr-xr-xtest/integration/targets/includes/runme.sh16
-rw-r--r--test/integration/targets/includes/tasks/trigger_change.yml2
-rw-r--r--test/integration/targets/includes/test_include_free.yml10
-rw-r--r--test/integration/targets/includes/test_include_host_pinned.yml9
-rw-r--r--test/integration/targets/includes/test_includes.yml10
-rw-r--r--test/integration/targets/includes/test_includes2.yml22
-rw-r--r--test/integration/targets/includes/test_includes3.yml6
-rw-r--r--test/integration/targets/includes/test_includes4.yml2
25 files changed, 301 insertions, 0 deletions
diff --git a/test/integration/targets/includes/aliases b/test/integration/targets/includes/aliases
new file mode 100644
index 0000000..1d28bdb
--- /dev/null
+++ b/test/integration/targets/includes/aliases
@@ -0,0 +1,2 @@
+shippable/posix/group5
+context/controller
diff --git a/test/integration/targets/includes/include_on_playbook_should_fail.yml b/test/integration/targets/includes/include_on_playbook_should_fail.yml
new file mode 100644
index 0000000..953459d
--- /dev/null
+++ b/test/integration/targets/includes/include_on_playbook_should_fail.yml
@@ -0,0 +1 @@
+- include: test_includes3.yml
diff --git a/test/integration/targets/includes/includes_loop_rescue.yml b/test/integration/targets/includes/includes_loop_rescue.yml
new file mode 100644
index 0000000..af2743a
--- /dev/null
+++ b/test/integration/targets/includes/includes_loop_rescue.yml
@@ -0,0 +1,29 @@
+- name: "Test rescue/always sections with includes in a loop, strategy={{ strategy }}"
+ hosts: localhost
+ gather_facts: false
+ strategy: "{{ strategy }}"
+ tasks:
+ - block:
+ - include_role:
+ name: "{{ item }}"
+ loop:
+ - a
+ - b
+ rescue:
+ - debug:
+ msg: rescue include_role in a loop
+ always:
+ - debug:
+ msg: always include_role in a loop
+
+ - block:
+ - include_tasks: "{{ item }}"
+ loop:
+ - a
+ - b
+ rescue:
+ - debug:
+ msg: rescue include_tasks in a loop
+ always:
+ - debug:
+ msg: always include_tasks in a loop
diff --git a/test/integration/targets/includes/inherit_notify.yml b/test/integration/targets/includes/inherit_notify.yml
new file mode 100644
index 0000000..f868be1
--- /dev/null
+++ b/test/integration/targets/includes/inherit_notify.yml
@@ -0,0 +1,18 @@
+- hosts: localhost
+ gather_facts: false
+ pre_tasks:
+ - include_tasks:
+ file: tasks/trigger_change.yml
+ apply:
+ notify: hello
+
+ handlers:
+ - name: hello
+ set_fact: hello=world
+
+ tasks:
+ - name: ensure handler ran
+ assert:
+ that:
+ - hello is defined
+ - "hello == 'world'"
diff --git a/test/integration/targets/includes/roles/test_includes/handlers/main.yml b/test/integration/targets/includes/roles/test_includes/handlers/main.yml
new file mode 100644
index 0000000..7d3e625
--- /dev/null
+++ b/test/integration/targets/includes/roles/test_includes/handlers/main.yml
@@ -0,0 +1 @@
+- include: more_handlers.yml
diff --git a/test/integration/targets/includes/roles/test_includes/handlers/more_handlers.yml b/test/integration/targets/includes/roles/test_includes/handlers/more_handlers.yml
new file mode 100644
index 0000000..c85d53c
--- /dev/null
+++ b/test/integration/targets/includes/roles/test_includes/handlers/more_handlers.yml
@@ -0,0 +1,12 @@
+- name: included_handler
+ set_fact:
+ ca: 4001
+ cb: 4002
+ cc: 4003
+
+- name: verify_handler
+ assert:
+ that:
+ - "ca == 4001"
+ - "cb == 4002"
+ - "cc == 4003"
diff --git a/test/integration/targets/includes/roles/test_includes/tasks/branch_toplevel.yml b/test/integration/targets/includes/roles/test_includes/tasks/branch_toplevel.yml
new file mode 100644
index 0000000..30cd6f2
--- /dev/null
+++ b/test/integration/targets/includes/roles/test_includes/tasks/branch_toplevel.yml
@@ -0,0 +1,11 @@
+# 'canary2' used instead of 'canary', otherwise a "recursive loop detected in
+# template string" occurs when both includes use static=yes
+- import_tasks: leaf_sublevel.yml
+ vars:
+ canary2: '{{ canary }}'
+ when: 'nested_include_static|bool' # value for 'static' can not be a variable, hence use 'when'
+
+- include_tasks: leaf_sublevel.yml
+ vars:
+ canary2: '{{ canary }}'
+ when: 'not nested_include_static|bool'
diff --git a/test/integration/targets/includes/roles/test_includes/tasks/empty.yml b/test/integration/targets/includes/roles/test_includes/tasks/empty.yml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/integration/targets/includes/roles/test_includes/tasks/empty.yml
diff --git a/test/integration/targets/includes/roles/test_includes/tasks/included_task1.yml b/test/integration/targets/includes/roles/test_includes/tasks/included_task1.yml
new file mode 100644
index 0000000..6f4c048
--- /dev/null
+++ b/test/integration/targets/includes/roles/test_includes/tasks/included_task1.yml
@@ -0,0 +1,9 @@
+- set_fact:
+ ca: "{{ a }}"
+- debug: var=ca
+- set_fact:
+ cb: "{{b}}"
+- debug: var=cb
+- set_fact:
+ cc: "{{ c }}"
+- debug: var=cc
diff --git a/test/integration/targets/includes/roles/test_includes/tasks/leaf_sublevel.yml b/test/integration/targets/includes/roles/test_includes/tasks/leaf_sublevel.yml
new file mode 100644
index 0000000..0663201
--- /dev/null
+++ b/test/integration/targets/includes/roles/test_includes/tasks/leaf_sublevel.yml
@@ -0,0 +1,2 @@
+- set_fact:
+ canary_fact: '{{ canary2 }}'
diff --git a/test/integration/targets/includes/roles/test_includes/tasks/main.yml b/test/integration/targets/includes/roles/test_includes/tasks/main.yml
new file mode 100644
index 0000000..83ca468
--- /dev/null
+++ b/test/integration/targets/includes/roles/test_includes/tasks/main.yml
@@ -0,0 +1,114 @@
+# test code for the ping module
+# (c) 2014, James Cammarata <jcammarata@ansible.com>
+
+# 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 <http://www.gnu.org/licenses/>.
+
+
+- include: included_task1.yml a=1 b=2 c=3
+
+- name: verify non-variable include params
+ assert:
+ that:
+ - "ca == '1'"
+ - "cb == '2'"
+ - "cc == '3'"
+
+- set_fact:
+ a: 101
+ b: 102
+ c: 103
+
+- include: included_task1.yml a={{a}} b={{b}} c=103
+
+- name: verify variable include params
+ assert:
+ that:
+ - "ca == 101"
+ - "cb == 102"
+ - "cc == 103"
+
+# Test that strings are not turned into numbers
+- set_fact:
+ a: "101"
+ b: "102"
+ c: "103"
+
+- include: included_task1.yml a={{a}} b={{b}} c=103
+
+- name: verify variable include params
+ assert:
+ that:
+ - "ca == '101'"
+ - "cb == '102'"
+ - "cc == '103'"
+
+# now try long form includes
+
+- include: included_task1.yml
+ vars:
+ a: 201
+ b: 202
+ c: 203
+
+- debug: var=a
+- debug: var=b
+- debug: var=c
+
+- name: verify long-form include params
+ assert:
+ that:
+ - "ca == 201"
+ - "cb == 202"
+ - "cc == 203"
+
+- name: test handlers with includes
+ shell: echo 1
+ notify:
+ # both these via a handler include
+ - included_handler
+ - verify_handler
+
+- include_tasks: branch_toplevel.yml
+ vars:
+ canary: value1
+ nested_include_static: 'no'
+- assert:
+ that:
+ - 'canary_fact == "value1"'
+
+- include_tasks: branch_toplevel.yml
+ vars:
+ canary: value2
+ nested_include_static: 'yes'
+- assert:
+ that:
+ - 'canary_fact == "value2"'
+
+- import_tasks: branch_toplevel.yml
+ vars:
+ canary: value3
+ nested_include_static: 'no'
+- assert:
+ that:
+ - 'canary_fact == "value3"'
+
+- import_tasks: branch_toplevel.yml
+ vars:
+ canary: value4
+ nested_include_static: 'yes'
+- assert:
+ that:
+ - 'canary_fact == "value4"'
diff --git a/test/integration/targets/includes/roles/test_includes/tasks/not_a_role_task.yml b/test/integration/targets/includes/roles/test_includes/tasks/not_a_role_task.yml
new file mode 100644
index 0000000..862b051
--- /dev/null
+++ b/test/integration/targets/includes/roles/test_includes/tasks/not_a_role_task.yml
@@ -0,0 +1,4 @@
+- set_fact:
+ ca: 33000
+ cb: 33001
+ cc: 33002
diff --git a/test/integration/targets/includes/roles/test_includes_free/tasks/inner.yml b/test/integration/targets/includes/roles/test_includes_free/tasks/inner.yml
new file mode 100644
index 0000000..d9c32f4
--- /dev/null
+++ b/test/integration/targets/includes/roles/test_includes_free/tasks/inner.yml
@@ -0,0 +1,2 @@
+- set_fact:
+ inner: "reached"
diff --git a/test/integration/targets/includes/roles/test_includes_free/tasks/inner_fqcn.yml b/test/integration/targets/includes/roles/test_includes_free/tasks/inner_fqcn.yml
new file mode 100644
index 0000000..5b4ce04
--- /dev/null
+++ b/test/integration/targets/includes/roles/test_includes_free/tasks/inner_fqcn.yml
@@ -0,0 +1,2 @@
+- set_fact:
+ inner_fqcn: "reached"
diff --git a/test/integration/targets/includes/roles/test_includes_free/tasks/main.yml b/test/integration/targets/includes/roles/test_includes_free/tasks/main.yml
new file mode 100644
index 0000000..5ae7882
--- /dev/null
+++ b/test/integration/targets/includes/roles/test_includes_free/tasks/main.yml
@@ -0,0 +1,9 @@
+- name: this needs to be here
+ debug:
+ msg: "hello"
+- include: inner.yml
+ with_items:
+ - '1'
+- ansible.builtin.include: inner_fqcn.yml
+ with_items:
+ - '1'
diff --git a/test/integration/targets/includes/roles/test_includes_host_pinned/tasks/inner.yml b/test/integration/targets/includes/roles/test_includes_host_pinned/tasks/inner.yml
new file mode 100644
index 0000000..fa4ec93
--- /dev/null
+++ b/test/integration/targets/includes/roles/test_includes_host_pinned/tasks/inner.yml
@@ -0,0 +1,2 @@
+- set_fact:
+ inner_host_pinned: "reached"
diff --git a/test/integration/targets/includes/roles/test_includes_host_pinned/tasks/main.yml b/test/integration/targets/includes/roles/test_includes_host_pinned/tasks/main.yml
new file mode 100644
index 0000000..7bc19fa
--- /dev/null
+++ b/test/integration/targets/includes/roles/test_includes_host_pinned/tasks/main.yml
@@ -0,0 +1,6 @@
+- name: this needs to be here
+ debug:
+ msg: "hello"
+- include: inner.yml
+ with_items:
+ - '1'
diff --git a/test/integration/targets/includes/runme.sh b/test/integration/targets/includes/runme.sh
new file mode 100755
index 0000000..e619fea
--- /dev/null
+++ b/test/integration/targets/includes/runme.sh
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+
+set -eux
+
+ansible-playbook test_includes.yml -i ../../inventory "$@"
+
+ansible-playbook inherit_notify.yml "$@"
+
+echo "EXPECTED ERROR: Ensure we fail if using 'include' to include a playbook."
+set +e
+result="$(ansible-playbook -i ../../inventory include_on_playbook_should_fail.yml -v "$@" 2>&1)"
+set -e
+grep -q "ERROR! 'include' is not a valid attribute for a Play" <<< "$result"
+
+ansible-playbook includes_loop_rescue.yml --extra-vars strategy=linear "$@"
+ansible-playbook includes_loop_rescue.yml --extra-vars strategy=free "$@"
diff --git a/test/integration/targets/includes/tasks/trigger_change.yml b/test/integration/targets/includes/tasks/trigger_change.yml
new file mode 100644
index 0000000..6ee4551
--- /dev/null
+++ b/test/integration/targets/includes/tasks/trigger_change.yml
@@ -0,0 +1,2 @@
+- debug: msg="I trigger changed!"
+ changed_when: true
diff --git a/test/integration/targets/includes/test_include_free.yml b/test/integration/targets/includes/test_include_free.yml
new file mode 100644
index 0000000..dedad73
--- /dev/null
+++ b/test/integration/targets/includes/test_include_free.yml
@@ -0,0 +1,10 @@
+- hosts: testhost
+ gather_facts: no
+ strategy: free
+ roles:
+ - test_includes_free
+ tasks:
+ - assert:
+ that:
+ - "inner == 'reached'"
+ - "inner_fqcn == 'reached'"
diff --git a/test/integration/targets/includes/test_include_host_pinned.yml b/test/integration/targets/includes/test_include_host_pinned.yml
new file mode 100644
index 0000000..6ff92c6
--- /dev/null
+++ b/test/integration/targets/includes/test_include_host_pinned.yml
@@ -0,0 +1,9 @@
+- hosts: testhost
+ gather_facts: no
+ strategy: host_pinned
+ roles:
+ - test_includes_host_pinned
+ tasks:
+ - assert:
+ that:
+ - "inner_host_pinned == 'reached'"
diff --git a/test/integration/targets/includes/test_includes.yml b/test/integration/targets/includes/test_includes.yml
new file mode 100644
index 0000000..80b009c
--- /dev/null
+++ b/test/integration/targets/includes/test_includes.yml
@@ -0,0 +1,10 @@
+- import_playbook: test_includes2.yml
+ vars:
+ parameter1: asdf
+ parameter2: jkl
+
+- import_playbook: test_includes3.yml
+
+- import_playbook: test_include_free.yml
+
+- import_playbook: test_include_host_pinned.yml
diff --git a/test/integration/targets/includes/test_includes2.yml b/test/integration/targets/includes/test_includes2.yml
new file mode 100644
index 0000000..a32e851
--- /dev/null
+++ b/test/integration/targets/includes/test_includes2.yml
@@ -0,0 +1,22 @@
+- name: verify playbook includes can take parameters
+ hosts: testhost
+ tasks:
+ - assert:
+ that:
+ - "parameter1 == 'asdf'"
+ - "parameter2 == 'jkl'"
+
+- name: verify task include logic
+ hosts: testhost
+ gather_facts: True
+ roles:
+ - role: test_includes
+ tags: test_includes
+ tasks:
+ - include: roles/test_includes/tasks/not_a_role_task.yml
+ - include: roles/test_includes/tasks/empty.yml
+ - assert:
+ that:
+ - "ca == 33000"
+ - "cb == 33001"
+ - "cc == 33002"
diff --git a/test/integration/targets/includes/test_includes3.yml b/test/integration/targets/includes/test_includes3.yml
new file mode 100644
index 0000000..0b4c631
--- /dev/null
+++ b/test/integration/targets/includes/test_includes3.yml
@@ -0,0 +1,6 @@
+- hosts: testhost
+ tasks:
+ - include: test_includes4.yml
+ with_items: ["a"]
+ loop_control:
+ loop_var: r
diff --git a/test/integration/targets/includes/test_includes4.yml b/test/integration/targets/includes/test_includes4.yml
new file mode 100644
index 0000000..bee906b
--- /dev/null
+++ b/test/integration/targets/includes/test_includes4.yml
@@ -0,0 +1,2 @@
+- set_fact:
+ p: 1