Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(644)

Unified Diff: recipe_engine/unittests/loader_test.py

Issue 1421843006: Add simple depends_on API. (Closed) Base URL: https://chromium.googlesource.com/external/github.com/luci/recipes-py@master
Patch Set: Remove old expectation, move tests to their own folder. Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « recipe_engine/simulation_test.py ('k') | recipe_engine/unittests/run_test.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..cfe7dda431b26ad5b289ea5ac758b735916df256 100755
--- a/recipe_engine/unittests/loader_test.py
+++ b/recipe_engine/unittests/loader_test.py
@@ -7,20 +7,24 @@ import os
import sys
import unittest
-sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(
- os.path.abspath(__file__)))))
+BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(
+ os.path.abspath(__file__))))
+THIRD_PARTY = os.path.join(BASE_DIR, 'recipe_engine', 'third_party')
+sys.path.insert(0, os.path.join(THIRD_PARTY, 'mock-1.0.1'))
+sys.path.insert(0, BASE_DIR)
from recipe_engine import loader, recipe_api, config
+import mock
class TestRecipeScript(unittest.TestCase):
def testReturnSchemaHasValidClass(self):
with self.assertRaises(ValueError):
- script = loader.RecipeScript({'RETURN_SCHEMA': 3})
+ script = loader.RecipeScript({'RETURN_SCHEMA': 3}, 'test_script')
def testSetsAttributes(self):
sentinel = object()
- script = loader.RecipeScript({'imarandomnamelala': sentinel})
+ script = loader.RecipeScript({'imarandomnamelala': sentinel}, 'test_script')
self.assertEqual(sentinel, script.imarandomnamelala)
def testRunChecksReturnType(self):
@@ -35,7 +39,7 @@ class TestRecipeScript(unittest.TestCase):
script = loader.RecipeScript({
'RETURN_SCHEMA': config.ConfigGroupSchema(a=config.Single(int)),
'RunSteps': None,
- })
+ }, 'test_script')
loader.invoke_with_properties = lambda *args, **kwargs: FakeReturn()
self.assertEqual(mocked_return, script.run(None, None))
@@ -46,16 +50,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 +75,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 +89,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 +106,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 +114,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 +123,28 @@ 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
+
+ with mock.patch(
+ 'recipe_engine.loader._invoke_with_properties') as mocked_invoke:
+ loader.invoke_with_properties(test_function, None, None)
+ args, _ = mocked_invoke.call_args
+ self.assertTrue(['a', 'b'] in args)
+
+ def testInvokeArgNamesClass(self):
+ class TestClass(object):
+ def __init__(self, api, foo, bar):
+ pass
+
+ with mock.patch(
+ 'recipe_engine.loader._invoke_with_properties') as mocked_invoke:
+ loader.invoke_with_properties(TestClass, None, None)
+ args, _ = mocked_invoke.call_args
+ self.assertTrue(['api', 'foo', 'bar'] in args)
if __name__ == '__main__':
unittest.main()
« no previous file with comments | « recipe_engine/simulation_test.py ('k') | recipe_engine/unittests/run_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698