From 8cc6fe465c5310f01f8d80c78a21d1dc98004f9c Mon Sep 17 00:00:00 2001 From: "Arturas Moskvinas arturas@uber.com" Date: Wed, 12 Feb 2020 11:50:22 -0800 Subject: [PATCH] Fix diffusion.branchquery returning dictionary instead of array when branches are filtered out Summary: `diffusion.branchquery` can return dictionary instead of array if some branches are filtered out. Eg.: ``` { "result": [ { "shortName": "master", "commitIdentifier": "2817b0d8f79748ddfad0220c46d9b20bea34f460", "refType": "branch", "rawFields": { "objectname": "2817b0d8f79748ddfad0220c46d9b20bea34f460", "objecttype": "commit", ``` might become: ``` { "result": { "1": { "shortName": "master", "commitIdentifier": "2817b0d8f79748ddfad0220c46d9b20bea34f460", "refType": "branch", "rawFields": { "objectname": "2817b0d8f79748ddfad0220c46d9b20bea34f460", "objecttype": "commit", ``` Reproduction - find repository which has couple of branches, setup to track only some of them, execute `diffusion.branchquery` API call - result is dictionary instead of array Test Plan: Apply patch, execution `diffusion.branchquery` call - result is no longer dictionary if it was one before Reviewers: #blessed_reviewers, epriestley Reviewed By: #blessed_reviewers, epriestley Subscribers: Korvin, epriestley Differential Revision: https://secure.phabricator.com/D20973 --- .../diffusion/conduit/DiffusionBranchQueryConduitAPIMethod.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/applications/diffusion/conduit/DiffusionBranchQueryConduitAPIMethod.php b/src/applications/diffusion/conduit/DiffusionBranchQueryConduitAPIMethod.php index 16cd819d47..345e63fc3b 100644 --- a/src/applications/diffusion/conduit/DiffusionBranchQueryConduitAPIMethod.php +++ b/src/applications/diffusion/conduit/DiffusionBranchQueryConduitAPIMethod.php @@ -128,6 +128,8 @@ final class DiffusionBranchQueryConduitAPIMethod $refs = array_slice($refs, 0, $limit); } + $refs = array_values($refs); + return mpull($refs, 'toDictionary'); }