diff --git a/tests_new/integration/group_vars/all b/tests_new/integration/group_vars/all index 110b628c8b..df4be050cf 100644 --- a/tests_new/integration/group_vars/all +++ b/tests_new/integration/group_vars/all @@ -7,5 +7,11 @@ dos: 2 tres: 3 etest: 'from group_vars' inventory_beats_default: 'narf' +# variables used for hash merging behavior testing test_hash: group_vars_all: "this is in group_vars/all" +# variables used for conditional testing +test_bare: true +test_bare_var: 123 +test_bare_nested_good: "{{test_bare_var}} == 123" +test_bare_nested_bad: "{{test_bare_var}} == 321" diff --git a/tests_new/integration/non_destructive.yml b/tests_new/integration/non_destructive.yml index d98211974d..099bc33852 100644 --- a/tests_new/integration/non_destructive.yml +++ b/tests_new/integration/non_destructive.yml @@ -26,4 +26,5 @@ - { role: test_unarchive, tags: test_unarchive } - { role: test_filters, tags: test_filters } - { role: test_facts_d, tags: test_facts_d } + - { role: test_conditionals, tags: test_conditionals } diff --git a/tests_new/integration/roles/test_conditionals/tasks/main.yml b/tests_new/integration/roles/test_conditionals/tasks/main.yml new file mode 100644 index 0000000000..f82566483c --- /dev/null +++ b/tests_new/integration/roles/test_conditionals/tasks/main.yml @@ -0,0 +1,195 @@ +# test code for conditional statements +# (c) 2014, James Cammarata + +# 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 . + +- name: test conditional '==' + shell: echo 'testing' + when: 1 == 1 + register: result + +- name: assert conditional '==' ran + assert: + that: + - "result.changed == true" + - "result.stdout == 'testing'" + - "result.rc == 0" + +- name: test bad conditional '==' + shell: echo 'testing' + when: 0 == 1 + register: result + +- name: assert bad conditional '==' did NOT run + assert: + that: + - "result.skipped == true" + +- name: test conditional '!=' + shell: echo 'testing' + when: 0 != 1 + register: result + +- name: assert conditional '!=' ran + assert: + that: + - "result.changed == true" + - "result.stdout == 'testing'" + - "result.rc == 0" + +- name: test bad conditional '!=' + shell: echo 'testing' + when: 1 != 1 + register: result + +- name: assert bad conditional '!=' did NOT run + assert: + that: + - "result.skipped == true" + +- name: test conditional 'in' + shell: echo 'testing' + when: 1 in [1,2,3] + register: result + +- name: assert conditional 'in' ran + assert: + that: + - "result.changed == true" + - "result.stdout == 'testing'" + - "result.rc == 0" + +- name: test bad conditional 'in' + shell: echo 'testing' + when: 1 in [7,8,9] + register: result + +- name: assert bad conditional 'in' did NOT run + assert: + that: + - "result.skipped == true" + +- name: test conditional 'not in' + shell: echo 'testing' + when: 0 not in [1,2,3] + register: result + +- name: assert conditional 'not in' ran + assert: + that: + - "result.changed == true" + - "result.stdout == 'testing'" + - "result.rc == 0" + +- name: test bad conditional 'not in' + shell: echo 'testing' + when: 1 not in [1,2,3] + register: result + +- name: assert bad conditional 'not in' did NOT run + assert: + that: + - "result.skipped == true" + +- name: test conditional 'is defined' + shell: echo 'testing' + when: test_bare is defined + register: result + +- name: assert conditional 'is defined' ran + assert: + that: + - "result.changed == true" + - "result.stdout == 'testing'" + - "result.rc == 0" + +- name: test bad conditional 'is defined' + shell: echo 'testing' + when: foo_asdf_xyz is defined + register: result + +- name: assert bad conditional 'is defined' did NOT run + assert: + that: + - "result.skipped == true" + +- name: test conditional 'is not defined' + shell: echo 'testing' + when: foo_asdf_xyz is not defined + register: result + +- name: assert conditional 'is not defined' ran + assert: + that: + - "result.changed == true" + - "result.stdout == 'testing'" + - "result.rc == 0" + +- name: test bad conditional 'is not defined' + shell: echo 'testing' + when: test_bare is not defined + register: result + +- name: assert bad conditional 'is not defined' did NOT run + assert: + that: + - "result.skipped == true" + +- name: test bare conditional + shell: echo 'testing' + when: test_bare + register: result + +- name: assert bare conditional ran + assert: + that: + - "result.changed == true" + - "result.stdout == 'testing'" + - "result.rc == 0" + +- name: test conditional using a variable + shell: echo 'testing' + when: test_bare_var == 123 + register: result + +- name: assert conditional using a variable ran + assert: + that: + - "result.changed == true" + - "result.stdout == 'testing'" + - "result.rc == 0" + +- name: test good conditional based on nested variables + shell: echo 'testing' + when: test_bare_nested_good + register: result + +- name: assert good conditional based on nested var ran + assert: + that: + - "result.changed == true" + - "result.stdout == 'testing'" + - "result.rc == 0" + +- name: test bad conditional based on nested variables + shell: echo 'testing' + when: test_bare_nested_bad + register: result + +- name: assert that the bad nested conditional did NOT run + assert: + that: + - "result.skipped == true"