Index: scripts/slave/recipe_util.py |
diff --git a/scripts/slave/recipe_util.py b/scripts/slave/recipe_util.py |
index 3c9da0979eca3e61a6d03a9f317ed65a18558555..cb4557dcf382c7c7d312c701e4030d59a44b3fe5 100644 |
--- a/scripts/slave/recipe_util.py |
+++ b/scripts/slave/recipe_util.py |
@@ -4,6 +4,7 @@ |
"""This module holds utilities which make writing recipes easier.""" |
+import contextlib as _contextlib |
import os as _os |
# e.g. /b/build/slave/<slave-name>/build |
@@ -57,6 +58,32 @@ functionality provided by annotated_run. |
checkout_path = _path_method('checkout_path', "%(CheckoutRootPlaceholder)s") |
+@_contextlib.contextmanager |
+def mock_paths(): |
+ path_base_names = ['depot_tools', 'build_internal', 'build', 'slave_build', |
+ 'root'] |
+ g = globals() |
+ tokens = {} |
+ path_funcs = {} |
+ try: |
+ for name in path_base_names: |
+ token_name = (name+"_root").upper() |
+ token_val = '[%s]' % token_name |
+ path_func_name = (name+"_path") |
Isaac (away)
2013/05/14 21:34:27
did pylint really pass on this? Maybe use gpylint
|
+ |
+ if token_name in g: |
+ tokens[token_name] = g[token_name] |
+ g[token_name] = token_val |
+ |
+ if path_func_name in g: |
+ path_funcs[path_func_name] = g[path_func_name] |
+ g[path_func_name] = _path_method(path_func_name, token_val) |
+ yield |
+ finally: |
+ g.update(tokens) |
+ g.update(path_funcs) |
+ |
+ |
def deep_set(obj, key_vals): |
"""Take an object (a dict or list), and a list of key/value pairs to set, |
and transform it by replacing items in obj at the key locations with the |