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

Unified Diff: recipe_engine/recipe_test_api.py

Issue 1421843006: Add simple depends_on API. (Closed) Base URL: https://chromium.googlesource.com/external/github.com/luci/recipes-py@master
Patch Set: Respond to comments. 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
Index: recipe_engine/recipe_test_api.py
diff --git a/recipe_engine/recipe_test_api.py b/recipe_engine/recipe_test_api.py
index bb1da1cf0b66c6c54c7829a388d741a477ee3f9d..48da3b7b9af193b60e517c24117443fbda779715 100644
--- a/recipe_engine/recipe_test_api.py
+++ b/recipe_engine/recipe_test_api.py
@@ -5,6 +5,7 @@
import collections
from .util import ModuleInjectionSite, static_call, static_wraps
+from .types import freeze
def combineify(name, dest, a, b):
"""
@@ -159,6 +160,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):
@@ -170,6 +172,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
@@ -198,6 +201,12 @@ class TestData(BaseTestData):
name = exception.__class__.__name__
return not (self.enabled and name == self.expected_exception)
+ def depend_on(self, recipe, properties, result):
+ tup = freeze((recipe, properties))
+ assert tup not in self.depend_on_data, (
+ 'Already gave test data for %s' % recipe)
Paweł Hajdan Jr. 2015/11/18 16:56:03 Shouldn't this print the entire tuple in error mes
martiniss 2015/11/18 22:03:29 Good catch. Fixed.
+ self.depend_on_data[tup] = freeze(result)
+
def __repr__(self):
return "TestData(%r)" % ({
'name': self.name,
@@ -205,6 +214,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,
},)
@@ -462,3 +472,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
« no previous file with comments | « recipe_engine/recipe_api.py ('k') | recipe_engine/run.py » ('j') | recipe_engine/run.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698