diff options
author | Petr Svoboda <petr@jatys.cz> | 2013-07-22 16:23:19 +0200 |
---|---|---|
committer | James Cammarata <jimi@sngx.net> | 2013-08-20 00:40:49 -0500 |
commit | e3adfbf5f8b58279770811436cfb64956f04c5c6 (patch) | |
tree | cf390b538b8f10ac2ab40092221a92a5e2962b4f /test/TestPlayBook.py | |
parent | fff4f1da331866b2f108a808d2f7a45fbfa12305 (diff) | |
download | ansible-e3adfbf5f8b58279770811436cfb64956f04c5c6.tar.gz |
Add tests for undefined variable detection
Tests `test_playbook_undefined_varsX_fail` check if ansible detects
undefined variables when `error_on_undefined_vars` is enabled. These
tests fail without "Improve behavior with error_on_undefined_vars
enabled" patch.
Tests `test_playbook_undefined_varsX_ignore` check if ansible ignores
undefined variables when `error_on_undefined_vars` is disabled.
Also modify PlayBook._run_task_internal() so error_on_undefined_vars is
testable.
Diffstat (limited to 'test/TestPlayBook.py')
-rw-r--r-- | test/TestPlayBook.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/test/TestPlayBook.py b/test/TestPlayBook.py index a34de0ae3c..ac65ce5efc 100644 --- a/test/TestPlayBook.py +++ b/test/TestPlayBook.py @@ -266,6 +266,52 @@ class TestPlaybook(unittest.TestCase): ) playbook.run() + def _test_playbook_undefined_vars(self, playbook, fail_on_undefined): + # save DEFAULT_UNDEFINED_VAR_BEHAVIOR so we can restore it in the end of the test + saved_undefined_var_behavior = C.DEFAULT_UNDEFINED_VAR_BEHAVIOR + C.DEFAULT_UNDEFINED_VAR_BEHAVIOR = fail_on_undefined + + test_callbacks = TestCallbacks() + playbook = ansible.playbook.PlayBook( + playbook=os.path.join(self.test_dir, 'test_playbook_undefined_vars', playbook), + host_list='test/test_playbook_undefined_vars/hosts', + stats=ans_callbacks.AggregateStats(), + callbacks=test_callbacks, + runner_callbacks=test_callbacks + ) + actual = playbook.run() + + C.DEFAULT_UNDEFINED_VAR_BEHAVIOR = saved_undefined_var_behavior + + # if different, this will output to screen + print "**ACTUAL**" + print utils.jsonify(actual, format=True) + expected = { + "localhost": { + "changed": 0, + "failures": 0, + "ok": int(not fail_on_undefined) + 1, + "skipped": 0, + "unreachable": int(fail_on_undefined) + } + } + print "**EXPECTED**" + print utils.jsonify(expected, format=True) + + assert utils.jsonify(expected, format=True) == utils.jsonify(actual, format=True) + + def test_playbook_undefined_vars1_ignore(self): + self._test_playbook_undefined_vars('playbook1.yml', False) + + def test_playbook_undefined_vars1_fail(self): + self._test_playbook_undefined_vars('playbook1.yml', True) + + def test_playbook_undefined_vars2_ignore(self): + self._test_playbook_undefined_vars('playbook2.yml', False) + + def test_playbook_undefined_vars2_fail(self): + self._test_playbook_undefined_vars('playbook2.yml', True) + def test_yaml_hosts_list(self): # Make sure playbooks support hosts: [host1, host2] # TODO: Actually run the play on more than one host |