summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Cammarata <jimi@sngx.net>2015-05-14 20:10:31 -0500
committerJames Cammarata <jimi@sngx.net>2015-05-14 20:10:31 -0500
commit48d62fd9341dbe030380f0feab5dc7a9f9483a0f (patch)
tree8a162809472c0f0716b2aa88fdcdd6790addd6a1
parenta0509cda1ea6d05ed339a14f18697864f929ffcd (diff)
downloadansible-48d62fd9341dbe030380f0feab5dc7a9f9483a0f.tar.gz
Cleaning up VariableManager tests (v2)
-rw-r--r--lib/ansible/vars/__init__.py9
-rw-r--r--test/units/vars/test_variable_manager.py41
2 files changed, 33 insertions, 17 deletions
diff --git a/lib/ansible/vars/__init__.py b/lib/ansible/vars/__init__.py
index 736b9529ef..5a576daba7 100644
--- a/lib/ansible/vars/__init__.py
+++ b/lib/ansible/vars/__init__.py
@@ -72,7 +72,8 @@ class VariableManager:
''' ensures a clean copy of the extra_vars are made '''
return self._extra_vars.copy()
- def set_extra_vars(self, value):
+ @extra_vars.setter
+ def extra_vars(self, value):
''' ensures a clean copy of the extra_vars are used to set the value '''
assert isinstance(value, MutableMapping)
self._extra_vars = value.copy()
@@ -123,7 +124,7 @@ class VariableManager:
return result
- def get_vars(self, loader, play=None, host=None, task=None):
+ def get_vars(self, loader, play=None, host=None, task=None, use_cache=True):
'''
Returns the variables, with optional "context" given via the parameters
for the play, host, and task (which could possibly result in different
@@ -145,7 +146,7 @@ class VariableManager:
debug("in VariableManager get_vars()")
cache_entry = self._get_cache_entry(play=play, host=host, task=task)
- if cache_entry in CACHED_VARS:
+ if cache_entry in CACHED_VARS and use_cache:
debug("vars are cached, returning them now")
return CACHED_VARS[cache_entry]
@@ -229,7 +230,7 @@ class VariableManager:
# the 'omit' value alows params to be left out if the variable they are based on is undefined
all_vars['omit'] = self._omit_token
- CACHED_VARS[cache_entry] = all_vars
+ #CACHED_VARS[cache_entry] = all_vars
debug("done with get_vars()")
return all_vars
diff --git a/test/units/vars/test_variable_manager.py b/test/units/vars/test_variable_manager.py
index 9abed8f948..273f9238ed 100644
--- a/test/units/vars/test_variable_manager.py
+++ b/test/units/vars/test_variable_manager.py
@@ -38,7 +38,11 @@ class TestVariableManager(unittest.TestCase):
fake_loader = DictDataLoader({})
v = VariableManager()
- self.assertEqual(v.get_vars(loader=fake_loader), dict())
+ vars = v.get_vars(loader=fake_loader, use_cache=False)
+ if 'omit' in vars:
+ del vars['omit']
+
+ self.assertEqual(vars, dict())
self.assertEqual(
v._merge_dicts(
@@ -59,11 +63,14 @@ class TestVariableManager(unittest.TestCase):
extra_vars = dict(a=1, b=2, c=3)
v = VariableManager()
- v.set_extra_vars(extra_vars)
+ v.extra_vars = extra_vars
+
+ vars = v.get_vars(loader=fake_loader, use_cache=False)
for (key, val) in extra_vars.iteritems():
- self.assertEqual(v.get_vars(loader=fake_loader).get(key), val)
- self.assertIsNot(v.extra_vars.get(key), val)
+ self.assertEqual(vars.get(key), val)
+
+ self.assertIsNot(v.extra_vars, extra_vars)
def test_variable_manager_host_vars_file(self):
fake_loader = DictDataLoader({
@@ -82,30 +89,38 @@ class TestVariableManager(unittest.TestCase):
mock_host.get_vars.return_value = dict()
mock_host.get_groups.return_value = ()
- self.assertEqual(v.get_vars(loader=fake_loader, host=mock_host).get("foo"), "bar")
+ self.assertEqual(v.get_vars(loader=fake_loader, host=mock_host, use_cache=False).get("foo"), "bar")
def test_variable_manager_group_vars_file(self):
fake_loader = DictDataLoader({
- "group_vars/somegroup.yml": """
+ "group_vars/all.yml": """
foo: bar
+ """,
+ "group_vars/somegroup.yml": """
+ bam: baz
"""
})
v = VariableManager()
+ v.add_group_vars_file("group_vars/all.yml", loader=fake_loader)
v.add_group_vars_file("group_vars/somegroup.yml", loader=fake_loader)
self.assertIn("somegroup", v._group_vars_files)
- self.assertEqual(v._group_vars_files["somegroup"], dict(foo="bar"))
+ self.assertEqual(v._group_vars_files["all"], dict(foo="bar"))
+ self.assertEqual(v._group_vars_files["somegroup"], dict(bam="baz"))
mock_group = MagicMock()
- mock_group.name.return_value = "somegroup"
+ mock_group.name = "somegroup"
mock_group.get_ancestors.return_value = ()
+ mock_group.get_vars.return_value = dict()
mock_host = MagicMock()
mock_host.get_name.return_value = "hostname1"
mock_host.get_vars.return_value = dict()
- mock_host.get_groups.return_value = (mock_group)
+ mock_host.get_groups.return_value = (mock_group,)
- self.assertEqual(v.get_vars(loader=fake_loader, host=mock_host).get("foo"), "bar")
+ vars = v.get_vars(loader=fake_loader, host=mock_host, use_cache=False)
+ self.assertEqual(vars.get("foo"), "bar")
+ self.assertEqual(vars.get("bam"), "baz")
def test_variable_manager_play_vars(self):
fake_loader = DictDataLoader({})
@@ -116,7 +131,7 @@ class TestVariableManager(unittest.TestCase):
mock_play.get_vars_files.return_value = []
v = VariableManager()
- self.assertEqual(v.get_vars(loader=fake_loader, play=mock_play).get("foo"), "bar")
+ self.assertEqual(v.get_vars(loader=fake_loader, play=mock_play, use_cache=False).get("foo"), "bar")
def test_variable_manager_play_vars_files(self):
fake_loader = DictDataLoader({
@@ -131,7 +146,7 @@ class TestVariableManager(unittest.TestCase):
mock_play.get_vars_files.return_value = ['/path/to/somefile.yml']
v = VariableManager()
- self.assertEqual(v.get_vars(loader=fake_loader, play=mock_play).get("foo"), "bar")
+ self.assertEqual(v.get_vars(loader=fake_loader, play=mock_play, use_cache=False).get("foo"), "bar")
def test_variable_manager_task_vars(self):
fake_loader = DictDataLoader({})
@@ -141,5 +156,5 @@ class TestVariableManager(unittest.TestCase):
mock_task.get_vars.return_value = dict(foo="bar")
v = VariableManager()
- self.assertEqual(v.get_vars(loader=fake_loader, task=mock_task).get("foo"), "bar")
+ self.assertEqual(v.get_vars(loader=fake_loader, task=mock_task, use_cache=False).get("foo"), "bar")