From 272db903e54f48d4b96e9362fbbe647345629da5 Mon Sep 17 00:00:00 2001 From: James Cammarata Date: Fri, 9 May 2014 11:42:45 -0500 Subject: [PATCH] Adding an integration test for variable precedence --- test/integration/Makefile | 3 +++ test/integration/host_vars/testhost | 3 +++ .../roles/test_var_precedence/meta/main.yml | 4 ++++ .../roles/test_var_precedence/tasks/main.yml | 5 +++++ .../defaults/main.yml | 5 +++++ .../test_var_precedence_role1/tasks/main.yml | 12 ++++++++++++ .../test_var_precedence_role1/vars/main.yml | 3 +++ .../defaults/main.yml | 5 +++++ .../test_var_precedence_role2/tasks/main.yml | 12 ++++++++++++ .../test_var_precedence_role2/vars/main.yml | 5 +++++ .../defaults/main.yml | 7 +++++++ .../test_var_precedence_role3/tasks/main.yml | 12 ++++++++++++ .../test_var_precedence_role3/vars/main.yml | 3 +++ test/integration/test_var_precedence.yml | 19 +++++++++++++++++++ test/integration/vars/test_var_precedence.yml | 4 ++++ 15 files changed, 102 insertions(+) create mode 100644 test/integration/roles/test_var_precedence/meta/main.yml create mode 100644 test/integration/roles/test_var_precedence/tasks/main.yml create mode 100644 test/integration/roles/test_var_precedence_role1/defaults/main.yml create mode 100644 test/integration/roles/test_var_precedence_role1/tasks/main.yml create mode 100644 test/integration/roles/test_var_precedence_role1/vars/main.yml create mode 100644 test/integration/roles/test_var_precedence_role2/defaults/main.yml create mode 100644 test/integration/roles/test_var_precedence_role2/tasks/main.yml create mode 100644 test/integration/roles/test_var_precedence_role2/vars/main.yml create mode 100644 test/integration/roles/test_var_precedence_role3/defaults/main.yml create mode 100644 test/integration/roles/test_var_precedence_role3/tasks/main.yml create mode 100644 test/integration/roles/test_var_precedence_role3/vars/main.yml create mode 100644 test/integration/test_var_precedence.yml create mode 100644 test/integration/vars/test_var_precedence.yml diff --git a/test/integration/Makefile b/test/integration/Makefile index 19e087e75b..065f28aea5 100644 --- a/test/integration/Makefile +++ b/test/integration/Makefile @@ -35,6 +35,9 @@ test_hash: ANSIBLE_HASH_BEHAVIOUR=replace ansible-playbook test_hash.yml -i $(INVENTORY) $(CREDENTIALS_ARG) -v -e '{"test_hash":{"extra_args":"this is an extra arg"}}' ANSIBLE_HASH_BEHAVIOUR=merge ansible-playbook test_hash.yml -i $(INVENTORY) $(CREDENTIALS_ARG) -v -e '{"test_hash":{"extra_args":"this is an extra arg"}}' +test_var_precedence: + ansible-playbook test_var_precedence.yml -i $(INVENTORY) $(CREDENTIALS_ARG) -v -e 'extra_var=extra_var' + cloud: amazon rackspace cloud_cleanup: amazon_cleanup rackspace_cleanup diff --git a/test/integration/host_vars/testhost b/test/integration/host_vars/testhost index 6e1d11307f..62ac1d6291 100644 --- a/test/integration/host_vars/testhost +++ b/test/integration/host_vars/testhost @@ -8,3 +8,6 @@ test_hash: # Support execution from within a virtualenv ansible_python_interpreter: '/usr/bin/env python' + +# Var precedence testing +defaults_file_var_role3: "overridden from inventory" diff --git a/test/integration/roles/test_var_precedence/meta/main.yml b/test/integration/roles/test_var_precedence/meta/main.yml new file mode 100644 index 0000000000..423b94e31c --- /dev/null +++ b/test/integration/roles/test_var_precedence/meta/main.yml @@ -0,0 +1,4 @@ +dependencies: + - { role: test_var_precedence_role1, param_var: "param_var_role1" } + - { role: test_var_precedence_role2, param_var: "param_var_role2" } + - { role: test_var_precedence_role3, param_var: "param_var_role3" } diff --git a/test/integration/roles/test_var_precedence/tasks/main.yml b/test/integration/roles/test_var_precedence/tasks/main.yml new file mode 100644 index 0000000000..2797267505 --- /dev/null +++ b/test/integration/roles/test_var_precedence/tasks/main.yml @@ -0,0 +1,5 @@ +- assert: + that: + - 'extra_var == "extra_var"' + - 'vars_var == "vars_var"' + - 'vars_files_var == "vars_files_var"' diff --git a/test/integration/roles/test_var_precedence_role1/defaults/main.yml b/test/integration/roles/test_var_precedence_role1/defaults/main.yml new file mode 100644 index 0000000000..dda4224c35 --- /dev/null +++ b/test/integration/roles/test_var_precedence_role1/defaults/main.yml @@ -0,0 +1,5 @@ +--- +# should be overridden by vars_files in the main play +vars_files_var: "BAD!" +# should be seen in role1 (no override) +defaults_file_var_role1: "defaults_file_var_role1" diff --git a/test/integration/roles/test_var_precedence_role1/tasks/main.yml b/test/integration/roles/test_var_precedence_role1/tasks/main.yml new file mode 100644 index 0000000000..a0db785a87 --- /dev/null +++ b/test/integration/roles/test_var_precedence_role1/tasks/main.yml @@ -0,0 +1,12 @@ +- debug: var=extra_var +- debug: var=param_var +- debug: var=vars_var +- debug: var=vars_files_var +- debug: var=defaults_file_var_role1 +- assert: + that: + - 'extra_var == "extra_var"' + - 'param_var == "param_var_role1"' + - 'vars_var == "vars_var"' + - 'vars_files_var == "vars_files_var"' + - 'defaults_file_var_role1 == "defaults_file_var_role1"' diff --git a/test/integration/roles/test_var_precedence_role1/vars/main.yml b/test/integration/roles/test_var_precedence_role1/vars/main.yml new file mode 100644 index 0000000000..0adb2faed4 --- /dev/null +++ b/test/integration/roles/test_var_precedence_role1/vars/main.yml @@ -0,0 +1,3 @@ +--- +# should override the global vars_files_var since it's local to the role +vars_files_var: "vars_files_var_role1" diff --git a/test/integration/roles/test_var_precedence_role2/defaults/main.yml b/test/integration/roles/test_var_precedence_role2/defaults/main.yml new file mode 100644 index 0000000000..8ed63ced96 --- /dev/null +++ b/test/integration/roles/test_var_precedence_role2/defaults/main.yml @@ -0,0 +1,5 @@ +--- +# should be overridden by vars_files in the main play +vars_files_var: "BAD!" +# should be overridden by the vars file in role2 +defaults_file_var_role2: "BAD!" diff --git a/test/integration/roles/test_var_precedence_role2/tasks/main.yml b/test/integration/roles/test_var_precedence_role2/tasks/main.yml new file mode 100644 index 0000000000..f38d63b3ee --- /dev/null +++ b/test/integration/roles/test_var_precedence_role2/tasks/main.yml @@ -0,0 +1,12 @@ +- debug: var=extra_var +- debug: var=param_var +- debug: var=vars_var +- debug: var=vars_files_var +- debug: var=defaults_file_var_role1 +- assert: + that: + - 'extra_var == "extra_var"' + - 'param_var == "param_var_role2"' + - 'vars_var == "vars_var"' + - 'vars_files_var == "vars_files_var"' + - 'defaults_file_var_role2 == "overridden by role vars"' diff --git a/test/integration/roles/test_var_precedence_role2/vars/main.yml b/test/integration/roles/test_var_precedence_role2/vars/main.yml new file mode 100644 index 0000000000..f079e4d01d --- /dev/null +++ b/test/integration/roles/test_var_precedence_role2/vars/main.yml @@ -0,0 +1,5 @@ +--- +# should override the global vars_files_var since it's local to the role +vars_files_var: "vars_files_var_role1" +# should override the value in defaults/main.yml for role 2 +defaults_file_var_role2: "overridden by role vars" diff --git a/test/integration/roles/test_var_precedence_role3/defaults/main.yml b/test/integration/roles/test_var_precedence_role3/defaults/main.yml new file mode 100644 index 0000000000..763b0d508e --- /dev/null +++ b/test/integration/roles/test_var_precedence_role3/defaults/main.yml @@ -0,0 +1,7 @@ +--- +# should be overridden by vars_files in the main play +vars_files_var: "BAD!" +# should override the defaults var for role 1 and 2 +defaults_file_var: "last one wins" +# should be overridden from the inventory value +defaults_file_var_role3: "BAD!" diff --git a/test/integration/roles/test_var_precedence_role3/tasks/main.yml b/test/integration/roles/test_var_precedence_role3/tasks/main.yml new file mode 100644 index 0000000000..f07f329fd0 --- /dev/null +++ b/test/integration/roles/test_var_precedence_role3/tasks/main.yml @@ -0,0 +1,12 @@ +- debug: var=extra_var +- debug: var=param_var +- debug: var=vars_var +- debug: var=vars_files_var +- debug: var=defaults_file_var_role1 +- assert: + that: + - 'extra_var == "extra_var"' + - 'param_var == "param_var_role3"' + - 'vars_var == "vars_var"' + - 'vars_files_var == "vars_files_var"' + - 'defaults_file_var_role3 == "overridden from inventory"' diff --git a/test/integration/roles/test_var_precedence_role3/vars/main.yml b/test/integration/roles/test_var_precedence_role3/vars/main.yml new file mode 100644 index 0000000000..0adb2faed4 --- /dev/null +++ b/test/integration/roles/test_var_precedence_role3/vars/main.yml @@ -0,0 +1,3 @@ +--- +# should override the global vars_files_var since it's local to the role +vars_files_var: "vars_files_var_role1" diff --git a/test/integration/test_var_precedence.yml b/test/integration/test_var_precedence.yml new file mode 100644 index 0000000000..cacbe71c90 --- /dev/null +++ b/test/integration/test_var_precedence.yml @@ -0,0 +1,19 @@ +--- +- hosts: testhost + vars: + - vars_var: "vars_var" + - param_var: "BAD!" + - vars_files_var: "BAD!" + vars_files: + - vars/test_var_precedence.yml + roles: + - { role: test_var_precedence, param_var: "param_var" } + tasks: + - debug: var=extra_var + - debug: var=vars_var + - debug: var=vars_files_var + - assert: + that: + - 'extra_var == "extra_var"' + - 'vars_var == "vars_var"' + - 'vars_files_var == "vars_files_var"' diff --git a/test/integration/vars/test_var_precedence.yml b/test/integration/vars/test_var_precedence.yml new file mode 100644 index 0000000000..3f43f1031d --- /dev/null +++ b/test/integration/vars/test_var_precedence.yml @@ -0,0 +1,4 @@ +--- +extra_var: "BAD!" +role_var: "BAD!" +vars_files_var: "vars_files_var"