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.

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
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

artms created this revision.Feb 10 2020, 1:24 PM
artms requested review of this revision.Feb 10 2020, 1:25 PM
artms added inline comments.Feb 10 2020, 1:26 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"
}
epriestley accepted this revision.Feb 12 2020, 7:50 PM

Thanks!

This revision is now accepted and ready to land.Feb 12 2020, 7:50 PM