[buildbucket] Fix field mask in search

It must be `builds.*.builder`, not `builds.builder`.

TBR=tandrii@chromium.org

Recipe-Nontrivial-Roll: chromiumos
Change-Id: I5ebdef0e080784a89cab9453cabb488aaf99d047
Reviewed-on: https://chromium-review.googlesource.com/c/infra/luci/recipes-py/+/1600332
Commit-Queue: Nodir Turakulov <nodir@chromium.org>
Reviewed-by: Nodir Turakulov <nodir@chromium.org>
diff --git a/README.recipes.md b/README.recipes.md
index eb875a4..6296c28 100644
--- a/README.recipes.md
+++ b/README.recipes.md
@@ -247,7 +247,7 @@
 
 A module for interacting with buildbucket.
 
-&emsp; **@property**<br>&mdash; **def [bucket\_v1](/recipe_modules/buildbucket/api.py#829)(self):**
+&emsp; **@property**<br>&mdash; **def [bucket\_v1](/recipe_modules/buildbucket/api.py#828)(self):**
 
 Returns bucket name in v1 format.
 
@@ -270,11 +270,11 @@
 the rules described in the .proto files.
 If the current build is not a buildbucket build, returned `build.id` is 0.
 
-&emsp; **@property**<br>&mdash; **def [build\_id](/recipe_modules/buildbucket/api.py#845)(self):**
+&emsp; **@property**<br>&mdash; **def [build\_id](/recipe_modules/buildbucket/api.py#844)(self):**
 
 DEPRECATED, use build.id instead.
 
-&emsp; **@property**<br>&mdash; **def [build\_input](/recipe_modules/buildbucket/api.py#850)(self):**
+&emsp; **@property**<br>&mdash; **def [build\_input](/recipe_modules/buildbucket/api.py#849)(self):**
 
 DEPRECATED, use build.input instead.
 
@@ -291,7 +291,7 @@
 See "Builder cache" in
 https://chromium.googlesource.com/infra/luci/luci-go/+/master/buildbucket/proto/project_config.proto
 
-&emsp; **@property**<br>&mdash; **def [builder\_id](/recipe_modules/buildbucket/api.py#855)(self):**
+&emsp; **@property**<br>&mdash; **def [builder\_id](/recipe_modules/buildbucket/api.py#854)(self):**
 
 Deprecated. Use build.builder instead.
 
@@ -301,7 +301,7 @@
 
 &mdash; **def [cancel\_build](/recipe_modules/buildbucket/api.py#598)(self, build_id, \*\*kwargs):**
 
-&mdash; **def [collect\_build](/recipe_modules/buildbucket/api.py#658)(self, build_id, mirror_status=False, \*\*kwargs):**
+&mdash; **def [collect\_build](/recipe_modules/buildbucket/api.py#657)(self, build_id, mirror_status=False, \*\*kwargs):**
 
 Shorthand for `collect_builds` below, but for a single build only.
 
@@ -313,7 +313,7 @@
   [Build](https://chromium.googlesource.com/infra/luci/luci-go/+/master/buildbucket/proto/build.proto).
   for the ended build.
 
-&mdash; **def [collect\_builds](/recipe_modules/buildbucket/api.py#678)(self, build_ids, interval=None, timeout=None, step_name=None, raise_if_unsuccessful=False):**
+&mdash; **def [collect\_builds](/recipe_modules/buildbucket/api.py#677)(self, build_ids, interval=None, timeout=None, step_name=None, raise_if_unsuccessful=False):**
 
 Waits for a set of builds to end and returns their details.
 
@@ -343,9 +343,9 @@
 Returns:
   A build_pb2.Build.
 
-&mdash; **def [get\_build](/recipe_modules/buildbucket/api.py#654)(self, build_id, \*\*kwargs):**
+&mdash; **def [get\_build](/recipe_modules/buildbucket/api.py#653)(self, build_id, \*\*kwargs):**
 
-DEPRECTED. Use get().
+DEPRECATED. Use get().
 
 &mdash; **def [get\_multi](/recipe_modules/buildbucket/api.py#601)(self, build_ids, url_title_fn=None, step_name=None):**
 
@@ -375,7 +375,7 @@
 Returns True if the build is critical. Build defaults to the current one.
     
 
-&emsp; **@property**<br>&mdash; **def [properties](/recipe_modules/buildbucket/api.py#840)(self):**
+&emsp; **@property**<br>&mdash; **def [properties](/recipe_modules/buildbucket/api.py#839)(self):**
 
 DEPRECATED, use build attribute instead.
 
diff --git a/recipe_modules/buildbucket/api.py b/recipe_modules/buildbucket/api.py
index e56e6a1..b39b50e 100644
--- a/recipe_modules/buildbucket/api.py
+++ b/recipe_modules/buildbucket/api.py
@@ -570,7 +570,7 @@
             dict(search_builds=dict(
                 predicate=p,
                 page_size=limit,
-                fields=self._default_field_mask('builds.'),
+                fields=self._default_field_mask('builds.*.'),
             ))
             for p in predicate
         ],
diff --git a/recipe_modules/buildbucket/tests/search.expected/basic.json b/recipe_modules/buildbucket/tests/search.expected/basic.json
index 89b04e1..5dd849e 100644
--- a/recipe_modules/buildbucket/tests/search.expected/basic.json
+++ b/recipe_modules/buildbucket/tests/search.expected/basic.json
@@ -8,7 +8,7 @@
     ],
     "infra_step": true,
     "name": "buildbucket.search",
-    "stdin": "{\"requests\": [{\"searchBuilds\": {\"fields\": \"builds.builder,builds.createTime,builds.createdBy,builds.endTime,builds.id,builds.input,builds.number,builds.output,builds.startTime,builds.status,builds.updateTime\", \"pageSize\": 1000, \"predicate\": {\"gerritChanges\": [{\"change\": \"123456\", \"host\": \"chromium-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"chromium/src\"}]}}}]}",
+    "stdin": "{\"requests\": [{\"searchBuilds\": {\"fields\": \"builds.*.builder,builds.*.createTime,builds.*.createdBy,builds.*.endTime,builds.*.id,builds.*.input,builds.*.number,builds.*.output,builds.*.startTime,builds.*.status,builds.*.updateTime\", \"pageSize\": 1000, \"predicate\": {\"gerritChanges\": [{\"change\": \"123456\", \"host\": \"chromium-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"chromium/src\"}]}}}]}",
     "stdout": "/path/to/tmp/json",
     "~followup_annotations": [
       "@@@STEP_LOG_LINE@json.output@{}@@@",
@@ -17,7 +17,7 @@
       "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
       "@@@STEP_LOG_LINE@request@    {@@@",
       "@@@STEP_LOG_LINE@request@      \"searchBuilds\": {@@@",
-      "@@@STEP_LOG_LINE@request@        \"fields\": \"builds.builder,builds.createTime,builds.createdBy,builds.endTime,builds.id,builds.input,builds.number,builds.output,builds.startTime,builds.status,builds.updateTime\", @@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builds.*.builder,builds.*.createTime,builds.*.createdBy,builds.*.endTime,builds.*.id,builds.*.input,builds.*.number,builds.*.output,builds.*.startTime,builds.*.status,builds.*.updateTime\", @@@",
       "@@@STEP_LOG_LINE@request@        \"pageSize\": 1000, @@@",
       "@@@STEP_LOG_LINE@request@        \"predicate\": {@@@",
       "@@@STEP_LOG_LINE@request@          \"gerritChanges\": [@@@",
diff --git a/recipe_modules/buildbucket/tests/search.expected/limit.json b/recipe_modules/buildbucket/tests/search.expected/limit.json
index f9f30f6..8644440 100644
--- a/recipe_modules/buildbucket/tests/search.expected/limit.json
+++ b/recipe_modules/buildbucket/tests/search.expected/limit.json
@@ -8,7 +8,7 @@
     ],
     "infra_step": true,
     "name": "buildbucket.search",
-    "stdin": "{\"requests\": [{\"searchBuilds\": {\"fields\": \"builds.builder,builds.createTime,builds.createdBy,builds.endTime,builds.id,builds.input,builds.number,builds.output,builds.startTime,builds.status,builds.updateTime\", \"pageSize\": 5, \"predicate\": {\"gerritChanges\": [{\"change\": \"123456\", \"host\": \"chromium-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"chromium/src\"}]}}}]}",
+    "stdin": "{\"requests\": [{\"searchBuilds\": {\"fields\": \"builds.*.builder,builds.*.createTime,builds.*.createdBy,builds.*.endTime,builds.*.id,builds.*.input,builds.*.number,builds.*.output,builds.*.startTime,builds.*.status,builds.*.updateTime\", \"pageSize\": 5, \"predicate\": {\"gerritChanges\": [{\"change\": \"123456\", \"host\": \"chromium-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"chromium/src\"}]}}}]}",
     "stdout": "/path/to/tmp/json",
     "~followup_annotations": [
       "@@@STEP_LOG_LINE@json.output@{@@@",
@@ -66,7 +66,7 @@
       "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
       "@@@STEP_LOG_LINE@request@    {@@@",
       "@@@STEP_LOG_LINE@request@      \"searchBuilds\": {@@@",
-      "@@@STEP_LOG_LINE@request@        \"fields\": \"builds.builder,builds.createTime,builds.createdBy,builds.endTime,builds.id,builds.input,builds.number,builds.output,builds.startTime,builds.status,builds.updateTime\", @@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builds.*.builder,builds.*.createTime,builds.*.createdBy,builds.*.endTime,builds.*.id,builds.*.input,builds.*.number,builds.*.output,builds.*.startTime,builds.*.status,builds.*.updateTime\", @@@",
       "@@@STEP_LOG_LINE@request@        \"pageSize\": 5, @@@",
       "@@@STEP_LOG_LINE@request@        \"predicate\": {@@@",
       "@@@STEP_LOG_LINE@request@          \"gerritChanges\": [@@@",
diff --git a/recipe_modules/buildbucket/tests/search.expected/search failed.json b/recipe_modules/buildbucket/tests/search.expected/search failed.json
index 26a49d9..da3c7c0 100644
--- a/recipe_modules/buildbucket/tests/search.expected/search failed.json
+++ b/recipe_modules/buildbucket/tests/search.expected/search failed.json
@@ -8,7 +8,7 @@
     ],
     "infra_step": true,
     "name": "buildbucket.search",
-    "stdin": "{\"requests\": [{\"searchBuilds\": {\"fields\": \"builds.builder,builds.createTime,builds.createdBy,builds.endTime,builds.id,builds.input,builds.number,builds.output,builds.startTime,builds.status,builds.updateTime\", \"pageSize\": 1000, \"predicate\": {\"gerritChanges\": [{\"change\": \"123456\", \"host\": \"chromium-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"chromium/src\"}]}}}]}",
+    "stdin": "{\"requests\": [{\"searchBuilds\": {\"fields\": \"builds.*.builder,builds.*.createTime,builds.*.createdBy,builds.*.endTime,builds.*.id,builds.*.input,builds.*.number,builds.*.output,builds.*.startTime,builds.*.status,builds.*.updateTime\", \"pageSize\": 1000, \"predicate\": {\"gerritChanges\": [{\"change\": \"123456\", \"host\": \"chromium-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"chromium/src\"}]}}}]}",
     "stdout": "/path/to/tmp/json",
     "~followup_annotations": [
       "@@@STEP_TEXT@Request #0<br>Status code: 0<br>Message: there was a problem<br>@@@",
@@ -26,7 +26,7 @@
       "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
       "@@@STEP_LOG_LINE@request@    {@@@",
       "@@@STEP_LOG_LINE@request@      \"searchBuilds\": {@@@",
-      "@@@STEP_LOG_LINE@request@        \"fields\": \"builds.builder,builds.createTime,builds.createdBy,builds.endTime,builds.id,builds.input,builds.number,builds.output,builds.startTime,builds.status,builds.updateTime\", @@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builds.*.builder,builds.*.createTime,builds.*.createdBy,builds.*.endTime,builds.*.id,builds.*.input,builds.*.number,builds.*.output,builds.*.startTime,builds.*.status,builds.*.updateTime\", @@@",
       "@@@STEP_LOG_LINE@request@        \"pageSize\": 1000, @@@",
       "@@@STEP_LOG_LINE@request@        \"predicate\": {@@@",
       "@@@STEP_LOG_LINE@request@          \"gerritChanges\": [@@@",
diff --git a/recipe_modules/buildbucket/tests/search.expected/two builds.json b/recipe_modules/buildbucket/tests/search.expected/two builds.json
index 52a3ad2..8f79814 100644
--- a/recipe_modules/buildbucket/tests/search.expected/two builds.json
+++ b/recipe_modules/buildbucket/tests/search.expected/two builds.json
@@ -8,7 +8,7 @@
     ],
     "infra_step": true,
     "name": "buildbucket.search",
-    "stdin": "{\"requests\": [{\"searchBuilds\": {\"fields\": \"builds.builder,builds.createTime,builds.createdBy,builds.endTime,builds.id,builds.input,builds.number,builds.output,builds.startTime,builds.status,builds.updateTime\", \"pageSize\": 1000, \"predicate\": {\"gerritChanges\": [{\"change\": \"123456\", \"host\": \"chromium-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"chromium/src\"}]}}}]}",
+    "stdin": "{\"requests\": [{\"searchBuilds\": {\"fields\": \"builds.*.builder,builds.*.createTime,builds.*.createdBy,builds.*.endTime,builds.*.id,builds.*.input,builds.*.number,builds.*.output,builds.*.startTime,builds.*.status,builds.*.updateTime\", \"pageSize\": 1000, \"predicate\": {\"gerritChanges\": [{\"change\": \"123456\", \"host\": \"chromium-review.googlesource.com\", \"patchset\": \"7\", \"project\": \"chromium/src\"}]}}}]}",
     "stdout": "/path/to/tmp/json",
     "~followup_annotations": [
       "@@@STEP_LOG_LINE@json.output@{@@@",
@@ -34,7 +34,7 @@
       "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
       "@@@STEP_LOG_LINE@request@    {@@@",
       "@@@STEP_LOG_LINE@request@      \"searchBuilds\": {@@@",
-      "@@@STEP_LOG_LINE@request@        \"fields\": \"builds.builder,builds.createTime,builds.createdBy,builds.endTime,builds.id,builds.input,builds.number,builds.output,builds.startTime,builds.status,builds.updateTime\", @@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builds.*.builder,builds.*.createTime,builds.*.createdBy,builds.*.endTime,builds.*.id,builds.*.input,builds.*.number,builds.*.output,builds.*.startTime,builds.*.status,builds.*.updateTime\", @@@",
       "@@@STEP_LOG_LINE@request@        \"pageSize\": 1000, @@@",
       "@@@STEP_LOG_LINE@request@        \"predicate\": {@@@",
       "@@@STEP_LOG_LINE@request@          \"gerritChanges\": [@@@",