Chromium Code Reviews| Index: recipe_engine/unittests/loader_test.py |
| diff --git a/recipe_engine/unittests/loader_test.py b/recipe_engine/unittests/loader_test.py |
| index 70379fddf58762b399f44ab115018aa987982012..b4138c523e44baee7533eabec7f0e4a9f175771d 100755 |
| --- a/recipe_engine/unittests/loader_test.py |
| +++ b/recipe_engine/unittests/loader_test.py |
| @@ -46,16 +46,16 @@ def make_prop(**kwargs): |
| class TestInvoke(unittest.TestCase): |
| - def invoke(self, callable, all_properties, prop_defs, **kwargs): |
| - return loader.invoke_with_properties( |
| - callable, all_properties, prop_defs, **kwargs) |
| + def invoke(self, callable, all_properties, prop_defs, arg_names, **kwargs): |
| + return loader._invoke_with_properties( |
| + callable, all_properties, prop_defs, arg_names, **kwargs) |
| def testInvokeFuncSimple(self): |
| """Simple test of invoke.""" |
| def func(): |
| pass |
| - self.assertEqual(self.invoke(func, {}, {}), None) |
| + self.assertEqual(self.invoke(func, {}, {}, []), None) |
| def testInvokeFuncComplex(self): |
| """Tests invoke with two different properties.""" |
| @@ -71,7 +71,7 @@ class TestInvoke(unittest.TestCase): |
| 'a': 1, |
| 'b': 2, |
| } |
| - self.assertEqual(1, self.invoke(func, props, prop_defs)) |
| + self.assertEqual(1, self.invoke(func, props, prop_defs, ['a', 'b'])) |
| def testInvokeParamName(self): |
| """Tests invoke with two different properties.""" |
| @@ -85,7 +85,7 @@ class TestInvoke(unittest.TestCase): |
| props = { |
| 'b': 2, |
| } |
| - self.assertEqual(2, self.invoke(func, props, prop_defs)) |
| + self.assertEqual(2, self.invoke(func, props, prop_defs, ['a'])) |
| def testInvokeClass(self): |
| """Tests invoking a class.""" |
| @@ -102,7 +102,7 @@ class TestInvoke(unittest.TestCase): |
| 'a': 1, |
| 'b': 2, |
| } |
| - self.assertEqual(1, self.invoke(test, props, prop_defs).answer) |
| + self.assertEqual(1, self.invoke(test, props, prop_defs, ['a', 'b']).answer) |
| def testMissingProperty(self): |
| """Tests that invoke raises an error when missing a property.""" |
| @@ -110,7 +110,7 @@ class TestInvoke(unittest.TestCase): |
| return a |
| with self.assertRaises(recipe_api.UndefinedPropertyException): |
| - self.invoke(func, {}, {}) |
| + self.invoke(func, {}, {}, ['a']) |
| def testMustBeBound(self): |
| """Tests that calling invoke with a non BoundProperty fails.""" |
| @@ -119,7 +119,41 @@ class TestInvoke(unittest.TestCase): |
| } |
| with self.assertRaises(ValueError): |
| - self.invoke(None, None, prop_defs) |
| + self.invoke(None, None, prop_defs, ['a']) |
| + |
| + def testInvokeArgNamesFunc(self): |
| + def test_function(a, b): |
| + return a |
| + |
| + self._old_inner_invoke = loader._invoke_with_properties |
| + def mock_inner_invoke(_, __, ___, names): |
| + return names |
| + loader._invoke_with_properties = mock_inner_invoke |
|
luqui
2015/11/20 01:07:02
Doesn't mock provide a cleaner way of doing things
iannucci
2015/11/20 02:00:19
(yes it does)
martiniss
2015/11/23 22:05:07
much wow.
Had to fix it, since we don't actually
|
| + |
| + try: |
| + self.assertEqual( |
| + ['a', 'b'], |
| + loader.invoke_with_properties(test_function, None, None)) |
| + finally: |
| + loader._invoke_with_properties = self._old_inner_invoke |
| + |
| + def testInvokeArgNamesClass(self): |
| + class TestClass(object): |
| + def __init__(self, api, foo, bar): |
| + pass |
| + |
| + self._old_inner_invoke = loader._invoke_with_properties |
| + def mock_inner_invoke(_, __, ___, names): |
| + return names |
| + |
| + loader._invoke_with_properties = mock_inner_invoke |
| + |
| + try: |
| + self.assertEqual( |
| + ['api', 'foo', 'bar'], |
| + loader.invoke_with_properties(TestClass, None, None)) |
| + finally: |
| + loader._invoke_with_properties = self._old_inner_invoke |
| if __name__ == '__main__': |
| unittest.main() |