Add a context for depot_tools on path.

This context is required for tests that depend on depot_tools being in
the path.

Change-Id: Ibd203a5b0d4a21e0a13556c233f8e8e2e0fdb949
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/52122
Reviewed-by: Yusuf Mohsinally <mohsinally@google.com>
Commit-Queue: Godofredo Contreras <godofredoc@google.com>
diff --git a/recipe_modules/flutter_deps/__init__.py b/recipe_modules/flutter_deps/__init__.py
index d927778..3bf54f3 100644
--- a/recipe_modules/flutter_deps/__init__.py
+++ b/recipe_modules/flutter_deps/__init__.py
@@ -1,4 +1,5 @@
 DEPS = [
+    'depot_tools/depot_tools',
     'flutter/android_virtual_device',
     'flutter/osx_sdk',
     'flutter/repo_util',
diff --git a/recipe_modules/flutter_deps/api.py b/recipe_modules/flutter_deps/api.py
index 550b69c..5aef868 100644
--- a/recipe_modules/flutter_deps/api.py
+++ b/recipe_modules/flutter_deps/api.py
@@ -638,6 +638,7 @@
         'android_virtual_device': self.m.android_virtual_device,
         'osx_sdk': self.m.osx_sdk,
         'osx_sdk_devicelab': self.m.osx_sdk,
+        'depot_tools_on_path': self.m.depot_tools.on_path,
     }
 
   def enter_contexts(self, exit_stack, contexts, env, env_prefixes):
@@ -652,10 +653,13 @@
     available_contexts = self.contexts()
     params = (env, env_prefixes)
     for context in contexts:
+      aux_params = params
       if context == 'osx_sdk':
-        params = ('ios',)
+        aux_params = ('ios',)
       if context == 'osx_sdk_devicelab':
-        params = ('ios', True)
+        aux_params = ('ios', True)
       if context == 'android_virtual_device':
-        params = params + (env['EMULATOR_VERSION'],) # pragma: nocover
-      exit_stack.enter_context(available_contexts[context](*params))
+        aux_params = params + (env['EMULATOR_VERSION'],)  # pragma: nocover
+      if context == 'depot_tools_on_path':
+        aux_params = tuple()
+      exit_stack.enter_context(available_contexts[context](*aux_params))
diff --git a/recipe_modules/flutter_deps/examples/full.py b/recipe_modules/flutter_deps/examples/full.py
index 6208c8f..2d7d39c 100644
--- a/recipe_modules/flutter_deps/examples/full.py
+++ b/recipe_modules/flutter_deps/examples/full.py
@@ -76,22 +76,23 @@
   api.flutter_deps.vs_build(env, env_prefixes, '')
   api.flutter_deps.ruby(env, env_prefixes, '')
   api.flutter_deps.android_virtual_device(env, env_prefixes, '34')
-  
+
   with contextlib.ExitStack() as exit_stack:
     api.flutter_deps.enter_contexts(exit_stack, ['osx_sdk'], env, env_prefixes)
     api.flutter_deps.enter_contexts(
-        exit_stack, ['osx_sdk_devicelab'], env, env_prefixes
+        exit_stack, ['osx_sdk_devicelab', 'depot_tools_on_path'], env,
+        env_prefixes
     )
   if api.platform.is_linux:
     api.flutter_deps.gh_cli(env, env_prefixes, 'latest')
 
   # Gems dependency requires to run from a flutter_environment.
-  checkout_path = api.path['start_dir'].join('flutter\ sdk')
+  checkout_path = api.path['start_dir'].join(r'flutter\ sdk')
   env, env_prefixes = api.repo_util.flutter_environment(checkout_path)
 
 
 def GenTests(api):
-  checkout_path = api.path['start_dir'].join('flutter\ sdk')    
+  checkout_path = api.path['start_dir'].join(r'flutter\ sdk')
   yield api.test(
       'basic',
       api.repo_util.flutter_environment_data(checkout_path),