| Index: recipe_engine/recipe_test_api.py
|
| diff --git a/recipe_engine/recipe_test_api.py b/recipe_engine/recipe_test_api.py
|
| index 4a54194489b410892b3fac0c14643ea055c0d385..dcb705650d2c2ff2dd5948a8a46a959df253bfb2 100644
|
| --- a/recipe_engine/recipe_test_api.py
|
| +++ b/recipe_engine/recipe_test_api.py
|
| @@ -6,6 +6,7 @@ import collections
|
| import contextlib
|
|
|
| from .util import ModuleInjectionSite, static_call, static_wraps
|
| +from .types import freeze
|
|
|
| def combineify(name, dest, a, b):
|
| """
|
| @@ -160,6 +161,7 @@ class TestData(BaseTestData):
|
| self.properties = {} # key -> val
|
| self.mod_data = collections.defaultdict(ModuleTestData)
|
| self.step_data = collections.defaultdict(StepTestData)
|
| + self.depend_on_data = {}
|
| self.expected_exception = None
|
|
|
| def __add__(self, other):
|
| @@ -171,6 +173,7 @@ class TestData(BaseTestData):
|
|
|
| combineify('mod_data', ret, self, other)
|
| combineify('step_data', ret, self, other)
|
| + combineify('depend_on_data', ret, self, other)
|
| ret.expected_exception = self.expected_exception
|
| if other.expected_exception:
|
| ret.expected_exception = other.expected_exception
|
| @@ -230,6 +233,12 @@ class TestData(BaseTestData):
|
| if not should_raise:
|
| self.expected_exception = None
|
|
|
| + def depend_on(self, recipe, properties, result):
|
| + tup = freeze((recipe, properties))
|
| + assert tup not in self.depend_on_data, (
|
| + 'Already gave test data for recipe %s with properties %r' % tup)
|
| + self.depend_on_data[tup] = freeze(result)
|
| +
|
| def __repr__(self):
|
| return "TestData(%r)" % ({
|
| 'name': self.name,
|
| @@ -237,6 +246,7 @@ class TestData(BaseTestData):
|
| 'mod_data': dict(self.mod_data.iteritems()),
|
| 'step_data': dict(self.step_data.iteritems()),
|
| 'expected_exception': self.expected_exception,
|
| + 'depend_on_data': self.depend_on_data,
|
| },)
|
|
|
|
|
| @@ -494,3 +504,8 @@ class RecipeTestApi(object):
|
| ret = TestData(None)
|
| ret.expect_exception(exc_type)
|
| return ret
|
| +
|
| + def depend_on(self, recipe, properties, result):
|
| + ret = TestData()
|
| + ret.depend_on(recipe, properties, result)
|
| + return ret
|
|
|