From f86df7c88b7f4c528f029669b115921bf50274da Mon Sep 17 00:00:00 2001 From: Toshio Kuratomi Date: Wed, 1 Jun 2016 13:28:57 -0700 Subject: [PATCH] Test that task.args are also set properly (#15950) --- test/units/executor/test_task_executor.py | 38 +++++++++++++++++------ 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/test/units/executor/test_task_executor.py b/test/units/executor/test_task_executor.py index 741c76b330..b912bc8c59 100644 --- a/test/units/executor/test_task_executor.py +++ b/test/units/executor/test_task_executor.py @@ -216,26 +216,40 @@ class TestTaskExecutor(unittest.TestCase): mock_task.action = 'yum' new_items = te._squash_items(items=items, loop_var='item', variables=job_vars) self.assertEqual(new_items, ['a', 'b', 'c']) + self.assertIsInstance(mock_task.args, MagicMock) mock_task.action = 'foo' mock_task.args={'name': '{{item}}'} new_items = te._squash_items(items=items, loop_var='item', variables=job_vars) self.assertEqual(new_items, ['a', 'b', 'c']) + self.assertEqual(mock_task.args, {'name': '{{item}}'}) mock_task.action = 'yum' mock_task.args={'name': 'static'} new_items = te._squash_items(items=items, loop_var='item', variables=job_vars) self.assertEqual(new_items, ['a', 'b', 'c']) + self.assertEqual(mock_task.args, {'name': 'static'}) mock_task.action = 'yum' mock_task.args={'name': '{{pkg_mgr}}'} new_items = te._squash_items(items=items, loop_var='item', variables=job_vars) self.assertEqual(new_items, ['a', 'b', 'c']) + self.assertEqual(mock_task.args, {'name': '{{pkg_mgr}}'}) mock_task.action = '{{unknown}}' mock_task.args={'name': '{{item}}'} new_items = te._squash_items(items=items, loop_var='item', variables=job_vars) self.assertEqual(new_items, ['a', 'b', 'c']) + self.assertEqual(mock_task.args, {'name': '{{item}}'}) + + # Could do something like this to recover from bad deps in a package + job_vars = dict(pkg_mgr='yum', packages=['a', 'b']) + items = [ 'absent', 'latest' ] + mock_task.action = 'yum' + mock_task.args = {'name': '{{ packages }}', 'state': '{{ item }}'} + new_items = te._squash_items(items=items, loop_var='item', variables=job_vars) + self.assertEqual(new_items, items) + self.assertEqual(mock_task.args, {'name': '{{ packages }}', 'state': '{{ item }}'}) # Maybe should raise an error in this case. The user would have to specify: # - yum: name="{{ packages[item] }}" @@ -252,6 +266,7 @@ class TestTaskExecutor(unittest.TestCase): mock_task.args = {'name': '{{ packages[item] }}'} new_items = te._squash_items(items=items, loop_var='item', variables=job_vars) self.assertEqual(new_items, items) + self.assertEqual(mock_task.args, {'name': '{{ packages[item] }}'}) # # Replaces @@ -261,11 +276,13 @@ class TestTaskExecutor(unittest.TestCase): mock_task.args={'name': '{{item}}'} new_items = te._squash_items(items=items, loop_var='item', variables=job_vars) self.assertEqual(new_items, [['a','c']]) + self.assertEqual(mock_task.args, {'name': ['a','c']}) mock_task.action = '{{pkg_mgr}}' mock_task.args={'name': '{{item}}'} new_items = te._squash_items(items=items, loop_var='item', variables=job_vars) self.assertEqual(new_items, [['a', 'c']]) + self.assertEqual(mock_task.args, {'name': ['a','c']}) # New loop_var mock_task.action = 'yum' @@ -274,6 +291,7 @@ class TestTaskExecutor(unittest.TestCase): loop_var = 'a_loop_var_item' new_items = te._squash_items(items=items, loop_var='a_loop_var_item', variables=job_vars) self.assertEqual(new_items, [['a', 'c']]) + self.assertEqual(mock_task.args, {'name': ['a','c']}) loop_var = 'item' # @@ -289,7 +307,9 @@ class TestTaskExecutor(unittest.TestCase): mock_task.args = {'name': '{{ item }}'} new_items = te._squash_items(items=items, loop_var='item', variables=job_vars) #self.assertEqual(new_items, [['a', 'b', 'foo', 'bar']]) + #self.assertEqual(mock_task.args, {'name': ['a', 'b', 'foo', 'bar']}) self.assertEqual(new_items, items) + self.assertEqual(mock_task.args, {'name': '{{ item }}'}) # Retrieving from a dict items = ['a', 'b', 'foo'] @@ -297,7 +317,9 @@ class TestTaskExecutor(unittest.TestCase): mock_task.args = {'name': '{{ packages[item] }}'} new_items = te._squash_items(items=items, loop_var='item', variables=job_vars) #self.assertEqual(new_items, [['foo', 'baz']]) + #self.assertEqual(mock_task.args, {'name': ['foo', 'baz']}) self.assertEqual(new_items, items) + self.assertEqual(mock_task.args, {'name': '{{ packages[item] }}'}) # Another way to retrieve from a dict job_vars = dict(pkg_mgr='yum') @@ -306,7 +328,9 @@ class TestTaskExecutor(unittest.TestCase): mock_task.args = {'name': '{{ item["package"] }}'} new_items = te._squash_items(items=items, loop_var='item', variables=job_vars) #self.assertEqual(new_items, [['foo', 'bar']]) + #self.assertEqual(mock_task.args, {'name': ['foo', 'bar']}) self.assertEqual(new_items, items) + self.assertEqual(mock_task.args, {'name': '{{ item["package"] }}'}) items = [dict(name='a', state='present'), dict(name='b', state='present'), @@ -314,8 +338,10 @@ class TestTaskExecutor(unittest.TestCase): mock_task.action = 'yum' mock_task.args={'name': '{{item.name}}', 'state': '{{item.state}}'} new_items = te._squash_items(items=items, loop_var='item', variables=job_vars) - self.assertEqual(new_items, items) #self.assertEqual(new_items, [dict(name=['a', 'b', 'c'], state='present')]) + #self.assertEqual(mock_task.args, {'name': ['a', 'b', 'c'], 'state': 'present'}) + self.assertEqual(new_items, items) + self.assertEqual(mock_task.args, {'name': '{{item.name}}', 'state': '{{item.state}}'}) items = [dict(name='a', state='present'), dict(name='b', state='present'), @@ -323,17 +349,11 @@ class TestTaskExecutor(unittest.TestCase): mock_task.action = 'yum' mock_task.args={'name': '{{item.name}}', 'state': '{{item.state}}'} new_items = te._squash_items(items=items, loop_var='item', variables=job_vars) - self.assertEqual(new_items, items) #self.assertEqual(new_items, [dict(name=['a', 'b'], state='present'), # dict(name='c', state='absent')]) - - # Could do something like this to recover from bad deps in a package - job_vars = dict(pkg_mgr='yum', packages=['a', 'b']) - items = [ 'absent', 'latest' ] - mock_task.action = 'yum' - mock_task.args = {'name': '{{ packages }}', 'state': '{{ item }}'} - new_items = te._squash_items(items=items, loop_var='item', variables=job_vars) + #self.assertEqual(mock_task.args, {'name': '{{item.name}}', 'state': '{{item.state}}'}) self.assertEqual(new_items, items) + self.assertEqual(mock_task.args, {'name': '{{item.name}}', 'state': '{{item.state}}'}) def test_task_executor_execute(self):