diff --git a/src/applications/differential/customfield/DifferentialUnitField.php b/src/applications/differential/customfield/DifferentialUnitField.php index c9b3998762..7b3d491cbd 100644 --- a/src/applications/differential/customfield/DifferentialUnitField.php +++ b/src/applications/differential/customfield/DifferentialUnitField.php @@ -1,78 +1,100 @@ getFieldName(); } public function getWarningsForDetailView() { - $status = $this->getObject()->getActiveDiff()->getUnitStatus(); - $warnings = array(); + + $viewer = $this->getViewer(); + $diff = $this->getObject()->getActiveDiff(); + + $buildable = id(new HarbormasterBuildableQuery()) + ->setViewer($viewer) + ->withBuildablePHIDs(array($diff->getPHID())) + ->withManualBuildables(false) + ->executeOne(); + if ($buildable) { + switch ($buildable->getBuildableStatus()) { + case HarbormasterBuildable::STATUS_BUILDING: + $warnings[] = pht( + 'These changes have not finished building yet and may have build '. + 'failures.'); + break; + case HarbormasterBuildable::STATUS_FAILED: + $warnings[] = pht( + 'These changes have failed to build.'); + break; + } + } + + $status = $this->getObject()->getActiveDiff()->getUnitStatus(); if ($status < DifferentialUnitStatus::UNIT_WARN) { // Don't show any warnings. } else if ($status == DifferentialUnitStatus::UNIT_AUTO_SKIP) { // Don't show any warnings. } else if ($status == DifferentialUnitStatus::UNIT_SKIP) { $warnings[] = pht( 'Unit tests were skipped when generating these changes.'); } else { $warnings[] = pht('These changes have unit test problems.'); } return $warnings; } public function renderDiffPropertyViewValue(DifferentialDiff $diff) { $colors = array( DifferentialUnitStatus::UNIT_NONE => 'grey', DifferentialUnitStatus::UNIT_OKAY => 'green', DifferentialUnitStatus::UNIT_WARN => 'yellow', DifferentialUnitStatus::UNIT_FAIL => 'red', DifferentialUnitStatus::UNIT_SKIP => 'blue', DifferentialUnitStatus::UNIT_AUTO_SKIP => 'blue', ); $icon_color = idx($colors, $diff->getUnitStatus(), 'grey'); $message = DifferentialRevisionUpdateHistoryView::getDiffUnitMessage( $diff->getUnitStatus()); $status = id(new PHUIStatusListView()) ->addItem( id(new PHUIStatusItemView()) ->setIcon(PHUIStatusItemView::ICON_STAR, $icon_color) ->setTarget($message)); return $status; } }