@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Read modern coverage information for tables of contents

Summary:
Ref T8096. This modernizes the last thing which was reading the old datasource.

Also fix a bug where it didn't work.

Test Plan: {F698405}

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T8096

Differential Revision: https://secure.phabricator.com/D13852

+38 -26
+7 -3
src/applications/differential/controller/DifferentialChangesetViewController.php
··· 251 251 ->setMask($mask); 252 252 253 253 if ($request->isAjax()) { 254 + // NOTE: We must render the changeset before we render coverage 255 + // information, since it builds some caches. 256 + $rendered_changeset = $parser->renderChangeset(); 257 + 254 258 $mcov = $parser->renderModifiedCoverage(); 255 259 256 - $coverage = array( 260 + $coverage_data = array( 257 261 'differential-mcoverage-'.md5($changeset->getFilename()) => $mcov, 258 262 ); 259 263 260 264 return id(new PhabricatorChangesetResponse()) 261 - ->setRenderedChangeset($parser->renderChangeset()) 262 - ->setCoverage($coverage) 265 + ->setRenderedChangeset($rendered_changeset) 266 + ->setCoverage($coverage_data) 263 267 ->setUndoTemplates($parser->getRenderer()->renderUndoTemplates()); 264 268 } 265 269
+1 -1
src/applications/differential/controller/DifferentialDiffViewController.php
··· 108 108 $table_of_contents = id(new DifferentialDiffTableOfContentsView()) 109 109 ->setChangesets($changesets) 110 110 ->setVisibleChangesets($changesets) 111 - ->setUnitTestData(idx($props, 'arc:unit', array())); 111 + ->setCoverageMap($diff->loadCoverageMap($viewer)); 112 112 113 113 $refs = array(); 114 114 foreach ($changesets as $changeset) {
+1 -1
src/applications/differential/controller/DifferentialRevisionViewController.php
··· 353 353 $toc_view->setChangesets($changesets); 354 354 $toc_view->setVisibleChangesets($visible_changesets); 355 355 $toc_view->setRenderingReferences($rendering_references); 356 - $toc_view->setUnitTestData(idx($props, 'arc:unit', array())); 356 + $toc_view->setCoverageMap($target->loadCoverageMap($user)); 357 357 if ($repository) { 358 358 $toc_view->setRepository($repository); 359 359 }
+25
src/applications/differential/storage/DifferentialDiff.php
··· 348 348 return $target_phids; 349 349 } 350 350 351 + public function loadCoverageMap(PhabricatorUser $viewer) { 352 + $target_phids = $this->getBuildTargetPHIDs(); 353 + if (!$target_phids) { 354 + return array(); 355 + } 356 + 357 + $unit = id(new HarbormasterBuildUnitMessage())->loadAllWhere( 358 + 'buildTargetPHID IN (%Ls)', 359 + $target_phids); 360 + 361 + $map = array(); 362 + foreach ($unit as $message) { 363 + $coverage = $message->getProperty('coverage', array()); 364 + foreach ($coverage as $path => $coverage_data) { 365 + $map[$path][] = $coverage_data; 366 + } 367 + } 368 + 369 + foreach ($map as $path => $coverage_items) { 370 + $map[$path] = ArcanistUnitTestResult::mergeCoverage($coverage_items); 371 + } 372 + 373 + return $map; 374 + } 375 + 351 376 /* -( PhabricatorPolicyInterface )----------------------------------------- */ 352 377 353 378
+4 -21
src/applications/differential/view/DifferentialDiffTableOfContentsView.php
··· 10 10 private $renderURI = '/differential/changeset/'; 11 11 private $revisionID; 12 12 private $whitespace; 13 - private $unitTestData; 13 + private $coverageMap; 14 14 15 15 public function setChangesets($changesets) { 16 16 $this->changesets = $changesets; ··· 37 37 return $this; 38 38 } 39 39 40 - public function setUnitTestData($unit_test_data) { 41 - $this->unitTestData = $unit_test_data; 40 + public function setCoverageMap(array $coverage_map) { 41 + $this->coverageMap = $coverage_map; 42 42 return $this; 43 43 } 44 44 ··· 59 59 $this->requireResource('phui-text-css'); 60 60 61 61 $rows = array(); 62 - 63 - $coverage = array(); 64 - if ($this->unitTestData) { 65 - $coverage_by_file = array(); 66 - foreach ($this->unitTestData as $result) { 67 - $test_coverage = idx($result, 'coverage'); 68 - if (!$test_coverage) { 69 - continue; 70 - } 71 - foreach ($test_coverage as $file => $results) { 72 - $coverage_by_file[$file][] = $results; 73 - } 74 - } 75 - foreach ($coverage_by_file as $file => $coverages) { 76 - $coverage[$file] = ArcanistUnitTestResult::mergeCoverage($coverages); 77 - } 78 - } 79 62 80 63 $changesets = $this->changesets; 81 64 $paths = array(); ··· 144 127 'M'); 145 128 146 129 $fname = $changeset->getFilename(); 147 - $cov = $this->renderCoverage($coverage, $fname); 130 + $cov = $this->renderCoverage($this->coverageMap, $fname); 148 131 if ($cov === null) { 149 132 $mcov = $cov = phutil_tag('em', array(), '-'); 150 133 } else {