From 783a1e3dfc7bb210004cdf70ee5112b667cdfb7c Mon Sep 17 00:00:00 2001 From: James Cammarata Date: Mon, 11 Aug 2014 14:52:21 -0500 Subject: [PATCH] Fixing broken patch 20957a1 Also adds integration tests for nested includes with conditionals --- lib/ansible/playbook/play.py | 7 +++---- test/integration/roles/test_good_parsing/tasks/main.yml | 8 ++++++++ .../test_good_parsing/tasks/test_include_conditional.yml | 1 + .../roles/test_good_parsing/tasks/test_include_nested.yml | 2 ++ 4 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 test/integration/roles/test_good_parsing/tasks/test_include_conditional.yml create mode 100644 test/integration/roles/test_good_parsing/tasks/test_include_nested.yml 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