Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/harbormaster/controller/HarbormasterUnitMessageViewController.php
12256 views
1
<?php
2
3
final class HarbormasterUnitMessageViewController
4
extends HarbormasterController {
5
6
public function shouldAllowPublic() {
7
return true;
8
}
9
10
public function handleRequest(AphrontRequest $request) {
11
$viewer = $this->getViewer();
12
13
$message_id = $request->getURIData('id');
14
15
$message = id(new HarbormasterBuildUnitMessageQuery())
16
->setViewer($viewer)
17
->withIDs(array($message_id))
18
->executeOne();
19
if (!$message) {
20
return new Aphront404Response();
21
}
22
23
$build_target = id(new HarbormasterBuildTargetQuery())
24
->setViewer($viewer)
25
->withPHIDs(array($message->getBuildTargetPHID()))
26
->executeOne();
27
if (!$build_target) {
28
return new Aphront404Response();
29
}
30
31
$build = $build_target->getBuild();
32
$buildable = $build->getBuildable();
33
$buildable_id = $buildable->getID();
34
35
$id = $message->getID();
36
$display_name = $message->getUnitMessageDisplayName();
37
38
$status = $message->getResult();
39
$status_icon = HarbormasterUnitStatus::getUnitStatusIcon($status);
40
$status_color = HarbormasterUnitStatus::getUnitStatusColor($status);
41
$status_label = HarbormasterUnitStatus::getUnitStatusLabel($status);
42
43
$header = id(new PHUIHeaderView())
44
->setHeader($display_name)
45
->setStatus($status_icon, $status_color, $status_label);
46
47
$properties = $this->buildPropertyListView($message);
48
$curtain = $this->buildCurtainView($message, $build);
49
50
$unit = id(new PHUIObjectBoxView())
51
->setHeaderText(pht('TEST RESULT'))
52
->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
53
->addPropertyList($properties);
54
55
$crumbs = $this->buildApplicationCrumbs();
56
$this->addBuildableCrumb($crumbs, $buildable);
57
58
$crumbs->addTextCrumb(
59
pht('Unit Tests'),
60
"/harbormaster/unit/{$buildable_id}/");
61
62
$crumbs->addTextCrumb(pht('Unit %d', $id));
63
$crumbs->setBorder(true);
64
65
$title = array(
66
$display_name,
67
$buildable->getMonogram(),
68
);
69
70
$view = id(new PHUITwoColumnView())
71
->setHeader($header)
72
->setCurtain($curtain)
73
->setMainColumn(array(
74
$unit,
75
));
76
77
return $this->newPage()
78
->setTitle($title)
79
->setCrumbs($crumbs)
80
->appendChild($view);
81
}
82
83
private function buildPropertyListView(
84
HarbormasterBuildUnitMessage $message) {
85
$viewer = $this->getViewer();
86
87
$view = id(new PHUIPropertyListView())
88
->setUser($viewer);
89
90
$view->addProperty(
91
pht('Run At'),
92
phabricator_datetime($message->getDateCreated(), $viewer));
93
94
$details = $message->newUnitMessageDetailsView($viewer);
95
96
$view->addSectionHeader(
97
pht('Details'),
98
PHUIPropertyListView::ICON_TESTPLAN);
99
$view->addTextContent($details);
100
101
return $view;
102
}
103
104
private function buildCurtainView(
105
HarbormasterBuildUnitMessage $message,
106
HarbormasterBuild $build) {
107
$viewer = $this->getViewer();
108
109
$curtain = $this->newCurtainView($build);
110
111
$curtain->addAction(
112
id(new PhabricatorActionView())
113
->setName(pht('View Build'))
114
->setHref($build->getURI())
115
->setIcon('fa-wrench'));
116
117
return $curtain;
118
}
119
}
120
121