Roll recipe dependencies (trivial).
This is an automated CL created by the recipe roller. This CL rolls recipe
changes from upstream projects (e.g. depot_tools) into downstream projects
(e.g. tools/build).
More info is at https://goo.gl/zkKdpD. Use https://goo.gl/noib3a to file a bug.
depot_tools:
https://crrev.com/9875e180e5fd1b4096ca48f9386680f0bda6f709 subprocess2: cache the string-escape codec at load time. (jbudorick@chromium.org)
TBR=iannucci@chromium.org
Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Change-Id: I0f5efafb4257119a42ab77bfcc7eaba39ae105d0
Reviewed-on: https://chromium-review.googlesource.com/c/1364032
Reviewed-by: Recipe Roller <recipe-roller@chromium.org>
Commit-Queue: Recipe Roller <recipe-roller@chromium.org>
diff --git a/infra/config/recipes.cfg b/infra/config/recipes.cfg
index 1d225ae..3c50724 100644
--- a/infra/config/recipes.cfg
+++ b/infra/config/recipes.cfg
@@ -15,7 +15,7 @@
"deps": {
"depot_tools": {
"branch": "master",
- "revision": "19238fc343b2404d13550dfe30d99708e1df7716",
+ "revision": "9875e180e5fd1b4096ca48f9386680f0bda6f709",
"url": "https://chromium.googlesource.com/chromium/tools/depot_tools.git"
},
"recipe_engine": {
diff --git a/scripts/slave/README.recipes.md b/scripts/slave/README.recipes.md
index 1d42628..3b362e8 100644
--- a/scripts/slave/README.recipes.md
+++ b/scripts/slave/README.recipes.md
@@ -182,7 +182,6 @@
* [chromium_tests:tests/steps/local_isolated_script_test](#recipes-chromium_tests_tests_steps_local_isolated_script_test)
* [chromium_tests:tests/steps/mini_installer_test](#recipes-chromium_tests_tests_steps_mini_installer_test)
* [chromium_tests:tests/steps/mock_test](#recipes-chromium_tests_tests_steps_mock_test)
- * [chromium_tests:tests/steps/print_preview_tests](#recipes-chromium_tests_tests_steps_print_preview_tests)
* [chromium_tests:tests/steps/script_test](#recipes-chromium_tests_tests_steps_script_test)
* [chromium_tests:tests/steps/sizes_step](#recipes-chromium_tests_tests_steps_sizes_step)
* [chromium_tests:tests/steps/swarming_gtest_test](#recipes-chromium_tests_tests_steps_swarming_gtest_test)
@@ -1422,13 +1421,13 @@
#### **class [ChromiumTestsApi](/scripts/slave/recipe_modules/chromium_tests/api.py#29)([RecipeApi][recipe_engine/wkt/RecipeApi]):**
-— **def [add\_builders](/scripts/slave/recipe_modules/chromium_tests/api.py#74)(self, builders):**
+— **def [add\_builders](/scripts/slave/recipe_modules/chromium_tests/api.py#83)(self, builders):**
Adds builders to our builder map
-  **@property**<br>— **def [all\_generators](/scripts/slave/recipe_modules/chromium_tests/api.py#48)(self):**
+  **@property**<br>— **def [all\_generators](/scripts/slave/recipe_modules/chromium_tests/api.py#57)(self):**
-— **def [archive\_build](/scripts/slave/recipe_modules/chromium_tests/api.py#504)(self, mastername, buildername, update_step, bot_db):**
+— **def [archive\_build](/scripts/slave/recipe_modules/chromium_tests/api.py#513)(self, mastername, buildername, update_step, bot_db):**
Archive the build if the bot is configured to do so.
@@ -1440,7 +1439,7 @@
  **@property**<br>— **def [builders](/scripts/slave/recipe_modules/chromium_tests/api.py#36)(self):**
-— **def [compile\_specific\_targets](/scripts/slave/recipe_modules/chromium_tests/api.py#358)(self, bot_config, update_step, bot_db, compile_targets, tests_including_triggered, mb_mastername=None, mb_buildername=None, mb_config_path=None, override_bot_type=None):**
+— **def [compile\_specific\_targets](/scripts/slave/recipe_modules/chromium_tests/api.py#367)(self, bot_config, update_step, bot_db, compile_targets, tests_including_triggered, mb_mastername=None, mb_buildername=None, mb_config_path=None, override_bot_type=None):**
Runs compile and related steps for given builder.
@@ -1458,17 +1457,17 @@
(mb_mastername, mb_buildername) = (mastername, buildername) to exactly match
a given continuous builder.
-— **def [configure\_build](/scripts/slave/recipe_modules/chromium_tests/api.py#131)(self, bot_config, override_bot_type=None):**
+— **def [configure\_build](/scripts/slave/recipe_modules/chromium_tests/api.py#140)(self, bot_config, override_bot_type=None):**
-— **def [create\_bot\_config\_object](/scripts/slave/recipe_modules/chromium_tests/api.py#88)(self, bot_ids, builders=None):**
+— **def [create\_bot\_config\_object](/scripts/slave/recipe_modules/chromium_tests/api.py#97)(self, bot_ids, builders=None):**
-— **def [create\_bot\_db\_from\_master\_dict](/scripts/slave/recipe_modules/chromium_tests/api.py#227)(self, mastername, master_dict):**
+— **def [create\_bot\_db\_from\_master\_dict](/scripts/slave/recipe_modules/chromium_tests/api.py#236)(self, mastername, master_dict):**
-— **def [create\_bot\_db\_object](/scripts/slave/recipe_modules/chromium_tests/api.py#100)(self):**
+— **def [create\_bot\_db\_object](/scripts/slave/recipe_modules/chromium_tests/api.py#109)(self):**
-— **def [create\_bot\_id](/scripts/slave/recipe_modules/chromium_tests/api.py#78)(self, mastername, buildername, testername=None):**
+— **def [create\_bot\_id](/scripts/slave/recipe_modules/chromium_tests/api.py#87)(self, mastername, buildername, testername=None):**
-— **def [create\_test\_runner](/scripts/slave/recipe_modules/chromium_tests/api.py#282)(self, tests, suffix='', serialize_tests=False):**
+— **def [create\_test\_runner](/scripts/slave/recipe_modules/chromium_tests/api.py#291)(self, tests, suffix='', serialize_tests=False):**
Creates a test runner to run a set of tests.
@@ -1483,21 +1482,19 @@
Returns:
A function that can be passed to setup_chromium_tests or run directly.
-— **def [deapply\_patch](/scripts/slave/recipe_modules/chromium_tests/api.py#750)(self, bot_update_step):**
+— **def [deapply\_patch](/scripts/slave/recipe_modules/chromium_tests/api.py#759)(self, bot_update_step):**
-— **def [download\_and\_unzip\_build](/scripts/slave/recipe_modules/chromium_tests/api.py#625)(self, mastername, buildername, update_step, bot_db, build_archive_url=None, build_revision=None, override_bot_type=None, read_gn_args=True):**
+— **def [download\_and\_unzip\_build](/scripts/slave/recipe_modules/chromium_tests/api.py#634)(self, mastername, buildername, update_step, bot_db, build_archive_url=None, build_revision=None, override_bot_type=None, read_gn_args=True):**
-— **def [generate\_tests\_from\_source\_side\_spec](/scripts/slave/recipe_modules/chromium_tests/api.py#251)(self, source_side_spec, builder_dict, buildername, mastername, swarming_dimensions, scripts_compile_targets, generators, bot_update_step):**
+— **def [generate\_tests\_from\_source\_side\_spec](/scripts/slave/recipe_modules/chromium_tests/api.py#260)(self, source_side_spec, builder_dict, buildername, mastername, swarming_dimensions, scripts_compile_targets, bot_update_step):**
-— **def [generate\_tests\_from\_test\_spec](/scripts/slave/recipe_modules/chromium_tests/api.py#267)(self, \*args):**
+— **def [generate\_tests\_from\_test\_spec](/scripts/slave/recipe_modules/chromium_tests/api.py#276)(self, \*args):**
-  **@property**<br>— **def [generators](/scripts/slave/recipe_modules/chromium_tests/api.py#44)(self):**
+— **def [get\_common\_args\_for\_scripts](/scripts/slave/recipe_modules/chromium_tests/api.py#985)(self, bot_config=None):**
-— **def [get\_common\_args\_for\_scripts](/scripts/slave/recipe_modules/chromium_tests/api.py#976)(self, bot_config=None):**
+— **def [get\_compile\_targets](/scripts/slave/recipe_modules/chromium_tests/api.py#336)(self, bot_config, bot_db, tests):**
-— **def [get\_compile\_targets](/scripts/slave/recipe_modules/chromium_tests/api.py#327)(self, bot_config, bot_db, tests):**
-
-— **def [get\_compile\_targets\_for\_scripts](/scripts/slave/recipe_modules/chromium_tests/api.py#1010)(self, bot_config=None):**
+— **def [get\_compile\_targets\_for\_scripts](/scripts/slave/recipe_modules/chromium_tests/api.py#1019)(self, bot_config=None):**
This gets the combined compile_targets information from the
//testing/scripts/get_compile_targets.py script.
@@ -1519,24 +1516,24 @@
TODO:
* Only gather targets for the scripts that we might concievably run.
-— **def [get\_config\_defaults](/scripts/slave/recipe_modules/chromium_tests/api.py#118)(self):**
+— **def [get\_config\_defaults](/scripts/slave/recipe_modules/chromium_tests/api.py#127)(self):**
-— **def [get\_tests](/scripts/slave/recipe_modules/chromium_tests/api.py#318)(self, bot_config, bot_db):**
+— **def [get\_tests](/scripts/slave/recipe_modules/chromium_tests/api.py#327)(self, bot_config, bot_db):**
Returns a tuple: list of tests, and list of tests on the triggered
testers.
-— **def [is\_precommit\_mode](/scripts/slave/recipe_modules/chromium_tests/api.py#111)(self):**
+— **def [is\_precommit\_mode](/scripts/slave/recipe_modules/chromium_tests/api.py#120)(self):**
Returns a Boolean indicating whether this module is running in
precommit mode; i.e., whether tests are running before the changes
are committed.
-— **def [log](/scripts/slave/recipe_modules/chromium_tests/api.py#70)(self, message):**
+— **def [log](/scripts/slave/recipe_modules/chromium_tests/api.py#79)(self, message):**
-— **def [main\_waterfall\_steps](/scripts/slave/recipe_modules/chromium_tests/api.py#1042)(self, mb_config_path=None, builders=None):**
+— **def [main\_waterfall\_steps](/scripts/slave/recipe_modules/chromium_tests/api.py#1051)(self, mb_config_path=None, builders=None):**
-— **def [package\_build](/scripts/slave/recipe_modules/chromium_tests/api.py#446)(self, mastername, buildername, update_step, bot_db):**
+— **def [package\_build](/scripts/slave/recipe_modules/chromium_tests/api.py#455)(self, mastername, buildername, update_step, bot_db):**
Zip and upload the build to google storage.
@@ -1550,34 +1547,38 @@
handled in archive_build.
- this may upload twice on perf builders.
-— **def [prepare\_checkout](/scripts/slave/recipe_modules/chromium_tests/api.py#232)(self, bot_config, \*\*kwargs):**
+— **def [prepare\_checkout](/scripts/slave/recipe_modules/chromium_tests/api.py#241)(self, bot_config, \*\*kwargs):**
-— **def [read\_source\_side\_spec](/scripts/slave/recipe_modules/chromium_tests/api.py#270)(self, source_side_spec_file):**
+— **def [read\_source\_side\_spec](/scripts/slave/recipe_modules/chromium_tests/api.py#279)(self, source_side_spec_file):**
-— **def [run\_mb\_and\_compile](/scripts/slave/recipe_modules/chromium_tests/api.py#603)(self, compile_targets, isolated_targets, name_suffix, mb_mastername=None, mb_buildername=None, mb_config_path=None, android_version_code=None, android_version_name=None):**
+— **def [run\_mb\_and\_compile](/scripts/slave/recipe_modules/chromium_tests/api.py#612)(self, compile_targets, isolated_targets, name_suffix, mb_mastername=None, mb_buildername=None, mb_config_path=None, android_version_code=None, android_version_name=None):**
-— **def [runhooks](/scripts/slave/recipe_modules/chromium_tests/api.py#213)(self, update_step):**
+— **def [runhooks](/scripts/slave/recipe_modules/chromium_tests/api.py#222)(self, update_step):**
-— **def [set\_precommit\_mode](/scripts/slave/recipe_modules/chromium_tests/api.py#103)(self):**
+— **def [set\_precommit\_mode](/scripts/slave/recipe_modules/chromium_tests/api.py#112)(self):**
Configures this module to indicate that tests are running before
the changes are committed. This must be called very early in the
recipe, certainly before prepare_checkout, and the action can not
be undone.
-— **def [set\_up\_swarming](/scripts/slave/recipe_modules/chromium_tests/api.py#189)(self, bot_config):**
+— **def [set\_up\_swarming](/scripts/slave/recipe_modules/chromium_tests/api.py#198)(self, bot_config):**
  **@property**<br>— **def [steps](/scripts/slave/recipe_modules/chromium_tests/api.py#40)(self):**
-  **@property**<br>— **def [swarming\_extra\_args](/scripts/slave/recipe_modules/chromium_tests/api.py#63)(self):**
+The steps module, which contains various Test python classes.
-— **def [trigger\_child\_builds](/scripts/slave/recipe_modules/chromium_tests/api.py#535)(self, mastername, buildername, update_step, bot_db, additional_properties=None):**
+Usage is generally discouraged.
-— **def [trybot\_steps](/scripts/slave/recipe_modules/chromium_tests/api.py#1166)(self, builders=None, trybots=None):**
+  **@property**<br>— **def [swarming\_extra\_args](/scripts/slave/recipe_modules/chromium_tests/api.py#72)(self):**
-  **@property**<br>— **def [trybots](/scripts/slave/recipe_modules/chromium_tests/api.py#59)(self):**
+— **def [trigger\_child\_builds](/scripts/slave/recipe_modules/chromium_tests/api.py#544)(self, mastername, buildername, update_step, bot_db, additional_properties=None):**
-  **@contextlib.contextmanager**<br>— **def [wrap\_chromium\_tests](/scripts/slave/recipe_modules/chromium_tests/api.py#684)(self, bot_config, tests=None):**
+— **def [trybot\_steps](/scripts/slave/recipe_modules/chromium_tests/api.py#1175)(self, builders=None, trybots=None):**
+
+  **@property**<br>— **def [trybots](/scripts/slave/recipe_modules/chromium_tests/api.py#68)(self):**
+
+  **@contextlib.contextmanager**<br>— **def [wrap\_chromium\_tests](/scripts/slave/recipe_modules/chromium_tests/api.py#693)(self, bot_config, tests=None):**
### *recipe_modules* / [clang\_coverage](/scripts/slave/recipe_modules/clang_coverage)
[DEPS](/scripts/slave/recipe_modules/clang_coverage/__init__.py#5): [chromium](#recipe_modules-chromium), [depot\_tools/gclient][depot_tools/recipe_modules/gclient], [depot\_tools/git][depot_tools/recipe_modules/git], [depot\_tools/gsutil][depot_tools/recipe_modules/gsutil], [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step]
@@ -4811,11 +4812,6 @@
[DEPS](/scripts/slave/recipe_modules/chromium_tests/tests/steps/mock_test.py#5): [chromium\_tests](#recipe_modules-chromium_tests), [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step]
— **def [RunSteps](/scripts/slave/recipe_modules/chromium_tests/tests/steps/mock_test.py#15)(api):**
-### *recipes* / [chromium\_tests:tests/steps/print\_preview\_tests](/scripts/slave/recipe_modules/chromium_tests/tests/steps/print_preview_tests.py)
-
-[DEPS](/scripts/slave/recipe_modules/chromium_tests/tests/steps/print_preview_tests.py#5): [chromium](#recipe_modules-chromium), [chromium\_tests](#recipe_modules-chromium_tests), [test\_utils](#recipe_modules-test_utils), [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
-
-— **def [RunSteps](/scripts/slave/recipe_modules/chromium_tests/tests/steps/print_preview_tests.py#17)(api):**
### *recipes* / [chromium\_tests:tests/steps/script\_test](/scripts/slave/recipe_modules/chromium_tests/tests/steps/script_test.py)
[DEPS](/scripts/slave/recipe_modules/chromium_tests/tests/steps/script_test.py#5): [chromium](#recipe_modules-chromium), [chromium\_tests](#recipe_modules-chromium_tests), [test\_utils](#recipe_modules-test_utils), [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step]
@@ -5943,19 +5939,19 @@
— **def [RunSteps](/scripts/slave/recipe_modules/zip/examples/full.py#14)(api):**
-[depot_tools/recipe_modules/bot_update]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/19238fc343b2404d13550dfe30d99708e1df7716/recipes/README.recipes.md#recipe_modules-bot_update
-[depot_tools/recipe_modules/cipd]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/19238fc343b2404d13550dfe30d99708e1df7716/recipes/README.recipes.md#recipe_modules-cipd
-[depot_tools/recipe_modules/depot_tools]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/19238fc343b2404d13550dfe30d99708e1df7716/recipes/README.recipes.md#recipe_modules-depot_tools
-[depot_tools/recipe_modules/gclient]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/19238fc343b2404d13550dfe30d99708e1df7716/recipes/README.recipes.md#recipe_modules-gclient
-[depot_tools/recipe_modules/gerrit]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/19238fc343b2404d13550dfe30d99708e1df7716/recipes/README.recipes.md#recipe_modules-gerrit
-[depot_tools/recipe_modules/git]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/19238fc343b2404d13550dfe30d99708e1df7716/recipes/README.recipes.md#recipe_modules-git
-[depot_tools/recipe_modules/gitiles]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/19238fc343b2404d13550dfe30d99708e1df7716/recipes/README.recipes.md#recipe_modules-gitiles
-[depot_tools/recipe_modules/gsutil]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/19238fc343b2404d13550dfe30d99708e1df7716/recipes/README.recipes.md#recipe_modules-gsutil
-[depot_tools/recipe_modules/infra_paths]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/19238fc343b2404d13550dfe30d99708e1df7716/recipes/README.recipes.md#recipe_modules-infra_paths
-[depot_tools/recipe_modules/osx_sdk]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/19238fc343b2404d13550dfe30d99708e1df7716/recipes/README.recipes.md#recipe_modules-osx_sdk
-[depot_tools/recipe_modules/presubmit]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/19238fc343b2404d13550dfe30d99708e1df7716/recipes/README.recipes.md#recipe_modules-presubmit
-[depot_tools/recipe_modules/tryserver]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/19238fc343b2404d13550dfe30d99708e1df7716/recipes/README.recipes.md#recipe_modules-tryserver
-[depot_tools/recipe_modules/windows_sdk]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/19238fc343b2404d13550dfe30d99708e1df7716/recipes/README.recipes.md#recipe_modules-windows_sdk
+[depot_tools/recipe_modules/bot_update]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/9875e180e5fd1b4096ca48f9386680f0bda6f709/recipes/README.recipes.md#recipe_modules-bot_update
+[depot_tools/recipe_modules/cipd]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/9875e180e5fd1b4096ca48f9386680f0bda6f709/recipes/README.recipes.md#recipe_modules-cipd
+[depot_tools/recipe_modules/depot_tools]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/9875e180e5fd1b4096ca48f9386680f0bda6f709/recipes/README.recipes.md#recipe_modules-depot_tools
+[depot_tools/recipe_modules/gclient]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/9875e180e5fd1b4096ca48f9386680f0bda6f709/recipes/README.recipes.md#recipe_modules-gclient
+[depot_tools/recipe_modules/gerrit]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/9875e180e5fd1b4096ca48f9386680f0bda6f709/recipes/README.recipes.md#recipe_modules-gerrit
+[depot_tools/recipe_modules/git]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/9875e180e5fd1b4096ca48f9386680f0bda6f709/recipes/README.recipes.md#recipe_modules-git
+[depot_tools/recipe_modules/gitiles]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/9875e180e5fd1b4096ca48f9386680f0bda6f709/recipes/README.recipes.md#recipe_modules-gitiles
+[depot_tools/recipe_modules/gsutil]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/9875e180e5fd1b4096ca48f9386680f0bda6f709/recipes/README.recipes.md#recipe_modules-gsutil
+[depot_tools/recipe_modules/infra_paths]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/9875e180e5fd1b4096ca48f9386680f0bda6f709/recipes/README.recipes.md#recipe_modules-infra_paths
+[depot_tools/recipe_modules/osx_sdk]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/9875e180e5fd1b4096ca48f9386680f0bda6f709/recipes/README.recipes.md#recipe_modules-osx_sdk
+[depot_tools/recipe_modules/presubmit]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/9875e180e5fd1b4096ca48f9386680f0bda6f709/recipes/README.recipes.md#recipe_modules-presubmit
+[depot_tools/recipe_modules/tryserver]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/9875e180e5fd1b4096ca48f9386680f0bda6f709/recipes/README.recipes.md#recipe_modules-tryserver
+[depot_tools/recipe_modules/windows_sdk]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/9875e180e5fd1b4096ca48f9386680f0bda6f709/recipes/README.recipes.md#recipe_modules-windows_sdk
[recipe_engine/recipe_modules/buildbucket]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/faa8db3ceb17f3bc13c4ead7e4603760a0532f99/README.recipes.md#recipe_modules-buildbucket
[recipe_engine/recipe_modules/context]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/faa8db3ceb17f3bc13c4ead7e4603760a0532f99/README.recipes.md#recipe_modules-context
[recipe_engine/recipe_modules/file]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/faa8db3ceb17f3bc13c4ead7e4603760a0532f99/README.recipes.md#recipe_modules-file