Page MenuHomePhabricator

Fix diffusion.branchquery returning dictionary instead of array when branches are filtered out
ClosedPublic

Authored by artms on Feb 10 2020, 1:24 PM.
Tags
None
Referenced Files
Unknown Object (File)
Thu, Apr 18, 8:13 AM
Unknown Object (File)
Thu, Apr 11, 7:13 AM
Unknown Object (File)
Thu, Mar 28, 12:29 PM
Unknown Object (File)
Mar 10 2024, 8:51 PM
Unknown Object (File)
Feb 3 2024, 11:38 PM
Unknown Object (File)
Dec 25 2023, 7:24 PM
Unknown Object (File)
Dec 13 2023, 3:11 PM
Unknown Object (File)
Dec 1 2023, 6:37 AM
Subscribers

Details

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

Diff Detail

Repository
rP Phabricator
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

artms requested review of this revision.Feb 10 2020, 1:25 PM
src/applications/diffusion/conduit/DiffusionBranchQueryConduitAPIMethod.php
106

This essentially punches holes in array and makes out of it a dictionary with array positions becoming integer keys in dictionary.

$ php -a
Interactive shell

php > $a=array("a", "b", "c");
php > var_dump($a);
array(3) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
  [2]=>
  string(1) "c"
}
php > unset($a[1]);
php > var_dump($a);
array(2) {
  [0]=>
  string(1) "a"
  [2]=>
  string(1) "c"
}
This revision is now accepted and ready to land.Feb 12 2020, 7:50 PM