diff --git a/lib/ansible/playbook/play.py b/lib/ansible/playbook/play.py index bdd46592de..a600af8b8d 100644 --- a/lib/ansible/playbook/play.py +++ b/lib/ansible/playbook/play.py @@ -540,11 +540,10 @@ class Play(object): elif k.startswith("when_"): utils.deprecated("\"when_:\" is a removed deprecated feature, use the simplified 'when:' conditional directly", None, removed=True) elif k == 'when': - if type(x[k]) is str: - included_additional_conditions.insert(0, x[k]) + if isinstance(x[k], (basestring, bool)): + included_additional_conditions.append(x[k]) elif type(x[k]) is list: - for i in x[k]: - included_additional_conditions.insert(0, i) + included_additional_conditions.extend(x[k]) elif k in ("include", "vars", "default_vars", "sudo", "sudo_user", "role_name", "no_log"): continue else: diff --git a/test/integration/roles/test_good_parsing/tasks/main.yml b/test/integration/roles/test_good_parsing/tasks/main.yml index fc302dbd8f..6461d8e772 100644 --- a/test/integration/roles/test_good_parsing/tasks/main.yml +++ b/test/integration/roles/test_good_parsing/tasks/main.yml @@ -164,3 +164,11 @@ - result.invocation.module_name == "debug" - result.msg == "this should be debugged" +- name: test conditional includes + include: test_include_conditional.yml + when: false + +- name: assert the nested include from test_include_conditional was not set + assert: + that: + - nested_include_var is undefined diff --git a/test/integration/roles/test_good_parsing/tasks/test_include_conditional.yml b/test/integration/roles/test_good_parsing/tasks/test_include_conditional.yml new file mode 100644 index 0000000000..070888dad3 --- /dev/null +++ b/test/integration/roles/test_good_parsing/tasks/test_include_conditional.yml @@ -0,0 +1 @@ +- include: test_include_nested.yml diff --git a/test/integration/roles/test_good_parsing/tasks/test_include_nested.yml b/test/integration/roles/test_good_parsing/tasks/test_include_nested.yml new file mode 100644 index 0000000000..f1f6fcc465 --- /dev/null +++ b/test/integration/roles/test_good_parsing/tasks/test_include_nested.yml @@ -0,0 +1,2 @@ +- name: set the nested include fact + set_fact: nested_include_var=1