Merge lp:~ara/ubuntu-qa-website/maverick_alpha3_changes into lp:~ubuntu-qa-website-devel/ubuntu-qa-website/trunk
- maverick_alpha3_changes
- Merge into trunk
Proposed by
Ara Pulido
Status: | Merged | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Merged at revision: | 146 | ||||||||||||||||||||||||
Proposed branch: | lp:~ara/ubuntu-qa-website/maverick_alpha3_changes | ||||||||||||||||||||||||
Merge into: | lp:~ubuntu-qa-website-devel/ubuntu-qa-website/trunk | ||||||||||||||||||||||||
Diff against target: |
484 lines (+256/-48) 2 files modified
code/modules/qatracker/qatracker.display.php (+188/-40) code/modules/qatracker/qatracker.function.php (+68/-8) |
||||||||||||||||||||||||
To merge this branch: | bzr merge lp:~ara/ubuntu-qa-website/maverick_alpha3_changes | ||||||||||||||||||||||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ubuntu QA Website Developers | Pending | ||
Review via email: mp+30441@code.launchpad.net |
Commit message
Description of the change
Bug fixes:
* Bug #507950: iso tracker should indicate some how that tests are under way on the topmost screen
* Bug #600685: Cannot add more than 3 bug entry fields in the ISO Tracker.
* Bug #599819: Test coverage does not show testcases with zero results
New features:
* Bug #436450: iso.qa. needs a working admin interface
* Bug #291089: [iso.qa] "Not complete" filter
* Bug #600249: Need to add arm preinstalled images to the tracker database
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'code/modules/qatracker/qatracker.display.php' |
2 | --- code/modules/qatracker/qatracker.display.php 2010-06-22 13:41:41 +0000 |
3 | +++ code/modules/qatracker/qatracker.display.php 2010-07-20 17:27:41 +0000 |
4 | @@ -29,10 +29,11 @@ |
5 | return qawebsite_sitelist(); |
6 | } |
7 | |
8 | - $header="<div style=\"color: #000000; font-size: 15px; text-decoration: none;\">".qatracker_getpath($args)."</div>"; |
9 | + $header="<div style=\"color: #000000; font-size: 15px; text-decoration: none;\">".qatracker_getpath($args)."</div>"; |
10 | if (count($args) < 1) { |
11 | $args[0]="build"; |
12 | - } |
13 | + } |
14 | + |
15 | switch ($args[0]) { |
16 | case "build": |
17 | if (count($args) > 2) |
18 | @@ -100,9 +101,11 @@ |
19 | else |
20 | $content=qatracker_adminui_milestone($args[2]); |
21 | break; |
22 | - case "product": |
23 | + case "product": |
24 | + $content=qatracker_adminui_product(); |
25 | + break; |
26 | case "testcase": |
27 | - $content="<br /><b>Sorry, this feature hasn't been reimplemented yet</b>"; |
28 | + $content=qatracker_adminui_testcase(); |
29 | break; |
30 | default: |
31 | return drupal_not_found(); |
32 | @@ -208,8 +211,9 @@ |
33 | <table class=\"listing\" style=\"margin-bottom:2em\"> |
34 | <tr class=\"trheader\"> |
35 | <td style=\"width:50%\" align=\"left\"><b>Description</b></td> |
36 | - <td style=\"width:15%\" align=\"left\"><b>Test status</b></td> |
37 | - <td style=\"width:30%\" align=\"center\"><b>Bugs</b></td>"; |
38 | + <td style=\"width:10%\" align=\"left\"><b>Mandatory</b></td> |
39 | + <td style=\"width:10%\" align=\"left\"><b>Optional</b></td> |
40 | + <td style=\"width:20%\" align=\"center\"><b>Bugs</b></td>"; |
41 | if (user_access($site->adminrole) && $archive == 0) { |
42 | $content.="<td style=\"width:5%\" align=\"center\"><input type=\"checkbox\" name=\"checkall\" onclick=\"checkAll(document.forms['isolist'], this, '".$chkclass."')\" /></td>"; |
43 | } |
44 | @@ -227,8 +231,21 @@ |
45 | $lastVersion=$item->version; |
46 | } |
47 | if ($item->icon == null) |
48 | - $item->icon="info.png"; |
49 | - if ($status == null || $status == "all" || ($status=="untested" && ereg(">0/",qatracker_getbuildstat($item->id))) || ($status=="completed" && ereg("^<span style=\"font-weight:bold",qatracker_getbuildstat($item->id))) || ($status=="inprogress" && !ereg("^<span style=\"font-weight:bold",qatracker_getbuildstat($item->id)) && !ereg("0/",qatracker_getbuildstat($item->id)))) { |
50 | + $item->icon="info.png"; |
51 | + |
52 | + $mandatory_build_status = qatracker_getbuildstat($item->id); |
53 | + $optional_build_status = qatracker_getbuildstat_optional($item->id); |
54 | + |
55 | + $build_status = ""; |
56 | + |
57 | + if ((ereg("0/", $mandatory_build_status) || ereg("None", $mandatory_build_status)) && (ereg("0/", $optional_build_status) || ereg("None", $optional_build_status))) |
58 | + $build_status = "untested"; |
59 | + elseif ((ereg("<span style=\"font-weight:bold; color:#006400;", $mandatory_build_status) || ereg("None", $mandatory_build_status)) && (ereg("<span style=\"font-weight:bold; color:#006400;", $optional_build_status) || ereg("None", $optional_build_status))) |
60 | + $build_status = "completed"; |
61 | + else |
62 | + $build_status = "started"; |
63 | + |
64 | + if ($status == null || $status == "all" || ($status=="untested" && $build_status=="untested") || ($status=="completed" && $build_status=="completed") || ($status=="started" && $build_status=="started") || ($status=="notcompleted" && ($build_status=="started" || $build_status=="untested"))) { |
65 | $content.=" |
66 | <tr$id>"; |
67 | if ($item->buildstatus != 1 || $archive == 1) |
68 | @@ -236,8 +253,9 @@ |
69 | else |
70 | $content.="<td style=\"width:45%\" align=\"left\" valign=\"bottom\"><a href=\"$base_url/qatracker/info/".$item->id."\"><img src=\"$base_url/modules/qatracker/images/icon/".$item->icon."\" style=\"margin-bottom:-3px;\" alt=\"download info\" /></a> <a href=\"$base_url/qatracker/test/".$item->id."\"><span style=\"text-decoration:line-through\">".$item->product." (rebuilding...)</span></a></td>"; |
71 | $content.=" |
72 | - <td style=\"width:15%\" align=\"left\" valign=\"bottom\">".qatracker_getbuildstat($item->id,$archive)."</td> |
73 | - <td style=\"width:30%\" align=\"center\" valign=\"bottom\">".qatracker_getbugslist($item->id, 0, 0)."</td>"; |
74 | + <td style=\"width:10%\" align=\"left\" valign=\"bottom\">".$mandatory_build_status."</td> |
75 | + <td style=\"width:10%\" align=\"left\" valign=\"bottom\">".$optional_build_status."</td> |
76 | + <td style=\"width:20%\" align=\"center\" valign=\"bottom\">".qatracker_getbugslist($item->id, 0, 0)."</td>"; |
77 | if (user_access($site->adminrole)) { |
78 | $content.="<td style=\"width:5%\" align=\"center\" valign=\"bottom\"><input type=\"checkbox\" class=\"".$chkclass."\" value=\"".$item->id."\" name=\"isota_iso[]\" /></td>"; |
79 | } |
80 | @@ -588,7 +606,7 @@ |
81 | if (user_access($site->userrole) && $archive!=1 && $rebuild!=1) { |
82 | if (!$count) |
83 | $content.="<p style=\"text-align:center;font-weight:bold;padding-top:1em;padding-bottom:1em;\">No results for that specific test case, maybe would you like to make the first one ?</p>"; |
84 | - if ($_POST['isot_valid']) { |
85 | + if ( ($_POST['isot_valid']) && (!$_POST['isot_addbug']) ) { |
86 | $result=qatracker_validresult($buildID, $testcaseID); |
87 | if ($result == null) |
88 | return null; |
89 | @@ -598,7 +616,7 @@ |
90 | else { |
91 | $resultID=db_query("SELECT id FROM qatracker_result WHERE buildid='".$buildID."' AND testcaseid='".$testcaseID."' AND reporterid='".$user->uid."' "); |
92 | $resultID=db_result($resultID); |
93 | - if ($resultID) { |
94 | + if ($resultID) { |
95 | $content.="<br /><b>You have already posted a result, the form below lets you update it or delete it:</b>"; |
96 | $content.=qatracker_addresult($resultID); |
97 | } |
98 | @@ -623,7 +641,7 @@ |
99 | "Ubuntu Server" => "Server", |
100 | "DVD" => "DVD", |
101 | "Netbook" => "Netbook", |
102 | - "arm" => "ARM", |
103 | + "ARM" => "ARM", |
104 | "Netboot" => "Netboot" |
105 | ); |
106 | } |
107 | @@ -634,10 +652,20 @@ |
108 | } |
109 | } |
110 | $content="<br />This page shows how many times each testcase has been tested.<br />Testcases with no results are shown in red, with less than 5 results in orange and with more than 5 results in green.<br />This page doesn't show the result of those tests but only the coverage (if a testcase has 6 failed result it'll be shown in green anyway)"; |
111 | - foreach ($products as $product => $title) { |
112 | + foreach ($products as $product => $title) { |
113 | $content.="<h1>$title</h1><table class=\"listing\" style=\"width:auto;\">"; |
114 | - $tests=db_query("SELECT qatracker_testcase.title, count(qatracker_result.id) FROM qatracker_build LEFT JOIN qatracker_milestone ON qatracker_milestone.id=qatracker_build.milestoneid LEFT JOIN qatracker_result ON qatracker_result.buildid=qatracker_build.id LEFT JOIN qatracker_product ON qatracker_product.id=qatracker_build.productid RIGHT JOIN qatracker_testcase ON qatracker_testcase.productid=qatracker_product.id WHERE qatracker_product.siteid='".$site->id."' AND qatracker_testcase.status='0' AND qatracker_product.status='0' AND qatracker_product.title~'".$product."' AND qatracker_build.status='0' AND qatracker_milestone.status='0' AND ((qatracker_result.status='0' AND qatracker_result.result != '2' AND qatracker_testcase.id=qatracker_result.testcaseid) OR qatracker_result.status is Null) GROUP BY qatracker_testcase.title, substring(qatracker_product.title from '.* (.*) .*$')"); |
115 | - $result=false; |
116 | + $tests=db_query("SELECT t.title, count(r.id) FROM qatracker_testcase t |
117 | + LEFT JOIN qatracker_product p ON p.id = t.productid |
118 | + LEFT JOIN qatracker_build b ON b.productid = p.id |
119 | + LEFT JOIN qatracker_milestone m ON b.milestoneid = m.id |
120 | + LEFT JOIN qatracker_result r ON r.buildid = b.id AND r.testcaseid = t.id |
121 | + WHERE m.status = 0 |
122 | + AND p.status = '0' AND p.siteid = '".$site->id."' AND p.title~'".$product."' |
123 | + AND b.status = '0' |
124 | + AND t.status = '0' |
125 | + AND (( r.result != '2' AND r.status = '0') OR r.id IS NULL) |
126 | + GROUP BY t.title"); |
127 | + $result=false; |
128 | while ($item = db_fetch_object($tests)) { |
129 | if ($item->count == 0) |
130 | $count="<span style=\"color:red; font-weight:bold;\">".$item->count." tests done</span>"; |
131 | @@ -653,9 +681,21 @@ |
132 | $content.="</table>"; |
133 | } |
134 | $content.="<h1>Optional Testcases</h1><table class=\"listing\" style=\"width:auto;\">"; |
135 | - $tests=db_query("SELECT qatracker_testcase.title, count(qatracker_result.id) FROM qatracker_build LEFT JOIN qatracker_milestone ON qatracker_milestone.id=qatracker_build.milestoneid LEFT JOIN qatracker_result ON qatracker_result.buildid=qatracker_build.id LEFT JOIN qatracker_testcase ON qatracker_result.testcaseid = qatracker_testcase.id LEFT JOIN qatracker_product ON qatracker_product.id = qatracker_testcase.productid WHERE qatracker_product.siteid='".$site->id."' AND qatracker_testcase.status='2' AND qatracker_build.status='0' AND qatracker_milestone.status='0' AND ((qatracker_result.status='0' AND qatracker_result.result != '2' AND qatracker_testcase.id=qatracker_result.testcaseid) OR qatracker_result.status is Null) GROUP BY qatracker_testcase.title"); |
136 | + |
137 | + |
138 | + $tests=db_query("SELECT t.title, count(r.id) FROM qatracker_testcase t |
139 | + LEFT JOIN qatracker_product p ON p.id = t.productid |
140 | + LEFT JOIN qatracker_build b ON b.productid = p.id |
141 | + LEFT JOIN qatracker_milestone m ON b.milestoneid = m.id |
142 | + LEFT JOIN qatracker_result r ON r.buildid = b.id AND r.testcaseid = t.id |
143 | + WHERE m.status = 0 |
144 | + AND p.status = '0' AND p.siteid = '".$site->id."' |
145 | + AND b.status = '0' |
146 | + AND t.status = '2' |
147 | + AND (( r.result != '2' AND r.status = '0') OR r.id IS NULL) |
148 | + GROUP BY t.title"); |
149 | $result=false; |
150 | - while ($item = db_fetch_object($tests)) { |
151 | + while ($item = db_fetch_object($tests)) { |
152 | if ($item->count == 0) |
153 | $count="<span style=\"color:red; font-weight:bold;\">".$item->count." tests done</span>"; |
154 | elseif ($item->count > 5) |
155 | @@ -668,7 +708,7 @@ |
156 | if (!$result) |
157 | $content.="<tr><td style=\"width:25em;\" colspan=\"2\"><b>This product is not currently on the tracker.</b></td></tr>"; |
158 | $content.="</table>"; |
159 | - |
160 | + |
161 | return $content; |
162 | } |
163 | |
164 | @@ -852,7 +892,7 @@ |
165 | array_push_associative($data['isot_bug'], array($bug->bugnumber => $bug->bugimportance)); |
166 | $username=$data['isot_poster']; |
167 | } |
168 | - else { |
169 | + else { |
170 | $data=qatracker_checkpostvalue(); |
171 | $username=$user->uid; |
172 | } |
173 | @@ -879,12 +919,14 @@ |
174 | $content.="<tr><td><input type=\"text\" size=\"12\" name=\"isot_bugnumber[]\" value=\"$bugnumber\"/></td><td style=\"width:100%\" align=\"left\"><input type=\"checkbox\" name=\"isot_serious[]\" value=\"$count\" $checked/></td></tr>"; |
175 | $count++; |
176 | } |
177 | - } |
178 | + } |
179 | $total=$count; |
180 | - if ($count < 3) |
181 | - $total=3; |
182 | - elseif ($_POST['isot_addbug']) |
183 | - $total++; |
184 | + if ($count < 3) { |
185 | + $total=3; |
186 | + } |
187 | + elseif ($_POST['isot_addbug'] != "") { |
188 | + $total++; |
189 | + } |
190 | for ($i=$count;$i<$total;$i++) |
191 | $content.="<tr><td><input type=\"text\" size=\"12\" name=\"isot_bugnumber[]\" /></td><td style=\"width:100%\" align=\"left\"><input type=\"checkbox\" name=\"isot_serious[]\" value=\"$i\"/></td></tr>"; |
192 | $content.=" |
193 | @@ -913,7 +955,8 @@ |
194 | |
195 | function qatracker_validresult($buildID, $testcaseID, $admin = 0, $resultID1 = 0) { |
196 | global $user, $base_url; |
197 | - $data=qatracker_checkpostvalue(); |
198 | + $data=qatracker_checkpostvalue(); |
199 | + |
200 | if ($data['isot_error']) { |
201 | return qatracker_addresult($isodID, 0); |
202 | } |
203 | @@ -1033,15 +1076,17 @@ |
204 | if (ereg("Upgrade",$info->product)) |
205 | return "<br />For upgrades, please use update-manager."; |
206 | elseif (ereg("Desktop",$info->product)) { |
207 | - if (ereg("armel",$info->product)) { |
208 | - $url['type']="/ports/daily-live/"; |
209 | - $url['file']=$url['release']."-desktop-".$url['arch'].".img"; |
210 | - } |
211 | - else { |
212 | - $url['type']="/daily-live/"; |
213 | - $url['file']=$url['release']."-desktop-".$url['arch'].".iso"; |
214 | - } |
215 | - } |
216 | + $url['type']="/daily-live/"; |
217 | + $url['file']=$url['release']."-desktop-".$url['arch'].".iso"; |
218 | + } |
219 | + elseif (ereg("ARM Preinstalled omap3",$info->product)) { |
220 | + $url['type']="/ubuntu-netbook/ports/daily-preinstalled/"; |
221 | + $url['file']=$url['release']."-preinstalled-netbook-armel+omap.img.gz"; |
222 | + } |
223 | + elseif (ereg("ARM Preinstalled omap4",$info->product)) { |
224 | + $url['type']="/ubuntu-netbook/ports/daily-preinstalled/"; |
225 | + $url['file']=$url['release']."-preinstalled-netbook-armel+omap4.img.gz"; |
226 | + } |
227 | elseif (ereg("Alternate",$info->product)) { |
228 | $url['type']="/daily/"; |
229 | $url['file']=$url['release']."-alternate-".$url['arch'].".iso"; |
230 | @@ -1513,7 +1558,7 @@ |
231 | } |
232 | |
233 | function qatracker_adminui_result($buildID, $testcaseID, $resultID) { |
234 | - if ($_POST['isot_valid']) { |
235 | + if ( ($_POST['isot_valid']) && (!$_POST['isot_addbug'])) { |
236 | $data=qatracker_checkpostvalue(); |
237 | if ($data['isot_error']) { |
238 | $content.=qatracker_addresult($resultID, 1); |
239 | @@ -1582,6 +1627,105 @@ |
240 | } |
241 | } |
242 | |
243 | +function qatracker_adminui_testcase() { |
244 | + global $base_url, $site, $user; |
245 | + if ($_POST['isota_addtestcase'] && is_array($_POST['isota_case'])) { |
246 | + $tc_title = trim(db_escape_string($_POST['isota_testcasetitle'])); |
247 | + $tc_url = trim(db_escape_string($_POST['isota_testcaseurl'])); |
248 | + if ($tc_title == "") { |
249 | + drupal_set_message("The title of the testcase cannot be empty."); |
250 | + } |
251 | + else { |
252 | + foreach ($_POST['isota_case'] as $number) { |
253 | + $test=db_result(db_query("SELECT count(id) FROM qatracker_testcase WHERE title='".$tc_title."' AND productid='".db_escape_string($number)."'")); |
254 | + if ($test == 0) { |
255 | + db_query("INSERT INTO qatracker_testcase (productid, title, link) VALUES ('".db_escape_string($number)."', '".$tc_title."', '".$tc_url."')"); |
256 | + } |
257 | + } |
258 | + drupal_set_message("The testcases have correctly been added.<br />", "notice_msg"); |
259 | + } |
260 | + drupal_set_header("Location: $base_url/qatracker/admin/testcase"); |
261 | + return null; |
262 | + } |
263 | + else { |
264 | + $content="<br /><form id=\"testlist\" method=\"post\" action=\"\">"; |
265 | + $tests=db_query("SELECT id, title FROM qatracker_product WHERE siteid='".$site->id."' AND status='0' ORDER BY title ASC"); |
266 | + $olddistro=""; |
267 | + while ($item = db_fetch_object($tests)) { |
268 | + $distribution=explode(" ",$item->title); |
269 | + $distribution=$distribution[0]; |
270 | + if ($olddistro != $distribution) { |
271 | + if ($olddistro != "") |
272 | + $content.="</table>"; |
273 | + $content.="<table class=\"listing\" style=\"margin-bottom:1em;width:25em;\"> |
274 | + <tr class=\"trheader\" style=\"width:0\"> |
275 | + <td><b>".$distribution."</b></td> |
276 | + <td><input type=\"checkbox\" name=\"checkall\" onclick=\"checkAll(document.forms['testlist'], this, '".$distribution."')\" /></td> |
277 | + </tr>"; |
278 | + $olddistro=$distribution; |
279 | + } |
280 | + $content.="<tr><td>".$item->title."</td><td><input type=\"checkbox\" class=\"".$distribution."\" name=\"isota_case[]\" value=\"".$item->id."\" /></td></tr>"; |
281 | + } |
282 | + $content.="</table><p> |
283 | + <input type=\"checkbox\" name=\"checkall\" onclick=\"checkAll(document.forms['testlist'], this)\" />Check all<br /><br /> |
284 | + <b>Testcase title</b> <input type=\"text\" name=\"isota_testcasetitle\" /><br /><br /> |
285 | + <b>Testcase URL</b> <input type=\"text\" name=\"isota_testcaseurl\" /><br /><br /> |
286 | + "; |
287 | + $content.="<input type=\"submit\" name=\"isota_addtestcase\" value=\"Add testcase\" /> |
288 | + </p></form>"; |
289 | + return $content; |
290 | + } |
291 | +} |
292 | + |
293 | +function qatracker_adminui_product() { |
294 | + global $base_url, $site, $user; |
295 | + if ($_POST['isota_addproduct'] && $_POST['isota_product']) { |
296 | + $product = trim(db_escape_string(($_POST['isota_product']))); |
297 | + if ($product == "") { |
298 | + drupal_set_message("The product name cannot be blank."); |
299 | + } |
300 | + else { |
301 | + $test=db_result(db_query("SELECT count(id) from qatracker_product WHERE title='".$product."' AND siteid = '".$site->id."'")); |
302 | + if ($test > 0) { |
303 | + drupal_set_message("That product already exists. Please, choose another name."); |
304 | + } |
305 | + else { |
306 | + db_query("INSERT INTO qatracker_product (siteid, title, type) VALUES ('".$site->id."','".$product."', 0)"); |
307 | + drupal_set_message("The product was successfully added."); |
308 | + } |
309 | + } |
310 | + |
311 | + drupal_set_header("Location: $base_url/qatracker/admin/product"); |
312 | + return null; |
313 | + } |
314 | + else { |
315 | + $content="<br /><form id=\"productlist\" method=\"post\" action=\"\">"; |
316 | + $tests=db_query("SELECT id, title FROM qatracker_product WHERE siteid='".$site->id."' AND status='0' ORDER BY title ASC"); |
317 | + $olddistro=""; |
318 | + while ($item = db_fetch_object($tests)) { |
319 | + $distribution=explode(" ",$item->title); |
320 | + $distribution=$distribution[0]; |
321 | + if ($olddistro != $distribution) { |
322 | + if ($olddistro != "") |
323 | + $content.="</table>"; |
324 | + $content.="<table class=\"listing\" style=\"margin-bottom:1em;width:25em;\"> |
325 | + <tr class=\"trheader\" style=\"width:0\"> |
326 | + <td><b>".$distribution."</b></td> |
327 | + </tr>"; |
328 | + $olddistro=$distribution; |
329 | + } |
330 | + $content.="<tr><td>".$item->title."</td></tr>"; |
331 | + } |
332 | + $content.="</table><p> |
333 | + <b>Product name</b> <input type=\"text\" name=\"isota_product\" /><br /><br /> |
334 | + <input type=\"submit\" name=\"isota_addproduct\" value=\"Add product\" /> |
335 | + </p></form>"; |
336 | + return $content; |
337 | + } |
338 | +} |
339 | + |
340 | + |
341 | + |
342 | function qatracker_adminui_report($milestone, $type) { |
343 | if ($milestone == 0) |
344 | $content.="You must specify a milestone (using the drop-down menu at the bottom of the main page)"; |
345 | @@ -1873,14 +2017,18 @@ |
346 | $menu['Status']['<b>All</b>']=$page.$filter."/all"; |
347 | else |
348 | $menu['Status']['All']=$page.$filter."/all"; |
349 | - if (arg(3) == "untested") |
350 | + if (arg(3) == "notcompleted") |
351 | + $menu['Status']['<b>Not Completed</b>']=$page.$filter."/notcompleted"; |
352 | + else |
353 | + $menu['Status']['Not Completed']=$page.$filter."/notcompleted"; |
354 | + if (arg(3) == "untested") |
355 | $menu['Status']['<b>Untested</b>']=$page.$filter."/untested"; |
356 | else |
357 | $menu['Status']['Untested']=$page.$filter."/untested"; |
358 | - if (arg(3) == "inprogress") |
359 | - $menu['Status']['<b>In progress</b>']=$page.$filter."/inprogress"; |
360 | + if (arg(3) == "started") |
361 | + $menu['Status']['<b>Started</b>']=$page.$filter."/started"; |
362 | else |
363 | - $menu['Status']['In progress']=$page.$filter."/inprogress"; |
364 | + $menu['Status']['Started']=$page.$filter."/started"; |
365 | if (arg(3) == "completed") |
366 | $menu['Status']['<b>Completed</b>']=$page.$filter."/completed"; |
367 | else |
368 | |
369 | === modified file 'code/modules/qatracker/qatracker.function.php' |
370 | --- code/modules/qatracker/qatracker.function.php 2010-06-22 13:41:41 +0000 |
371 | +++ code/modules/qatracker/qatracker.function.php 2010-07-20 17:27:41 +0000 |
372 | @@ -18,7 +18,7 @@ |
373 | */ |
374 | |
375 | function qatracker_checkpostvalue() { |
376 | - $data=$_POST; |
377 | + $data=$_POST; |
378 | $data['isot_comment']=htmlentities($data['isot_comment'],ENT_QUOTES,"UTF-8"); |
379 | $data['isot_bug']=array(); |
380 | $count=0; |
381 | @@ -153,7 +153,13 @@ |
382 | $path.=" -> <a href=\"/qatracker/admin/milestone\">Milestone management</a>"; |
383 | if (count($args) > 2) |
384 | $path.=" -> <a href=\"/qatracker/admin/milestone/".$args[2]."\">Milestone detail</a>"; |
385 | - break; |
386 | + break; |
387 | + case "product": |
388 | + $path.=" -> <a href=\"/qatracker/admin/product\">Product management</a>"; |
389 | + break; |
390 | + case "testcase": |
391 | + $path.=" -> <a href=\"/qatracker/admin/testcase\">Testcase management</a>"; |
392 | + break; |
393 | } |
394 | break; |
395 | case "report": |
396 | @@ -172,15 +178,69 @@ |
397 | } |
398 | |
399 | function qatracker_getbuildstat($buildID,$archive=0) { |
400 | - $total=db_query("SELECT count(title) from qatracker_testcase LEFT JOIN qatracker_build ON qatracker_build.productid=qatracker_testcase.productid WHERE qatracker_build.id='$buildID' AND qatracker_testcase.status='0' AND qatracker_testcase.status='0'"); |
401 | - $total=db_result($total); |
402 | + $total=db_query("SELECT count(title) from qatracker_testcase LEFT JOIN qatracker_build ON qatracker_build.productid=qatracker_testcase.productid WHERE qatracker_build.id='$buildID' AND qatracker_testcase.status='0'"); |
403 | + $total=db_result($total); |
404 | + |
405 | + if ($total==0) |
406 | + return "None"; |
407 | + |
408 | $done=db_query("SELECT count(DISTINCT testcaseID) from qatracker_result LEFT JOIN qatracker_testcase ON qatracker_testcase.id=qatracker_result.testcaseid WHERE qatracker_result.buildid='".$buildID."' AND qatracker_result.status='0' AND qatracker_result.result != '2' AND qatracker_testcase.status='0'"); |
409 | $done=db_result($done); |
410 | + |
411 | + $started=db_query("SELECT count(DISTINCT testcaseID) from qatracker_result LEFT JOIN qatracker_testcase ON qatracker_testcase.id=qatracker_result.testcaseid WHERE qatracker_result.buildid='".$buildID."' AND qatracker_result.status='0' AND qatracker_result.result='2' AND qatracker_testcase.status='0'"); |
412 | + $started=db_result($started); |
413 | + |
414 | + if ($started != 0) |
415 | + $started = "<span style=\"color:#F5B800;\">($started)</span>"; |
416 | + else |
417 | + $started = ""; |
418 | + |
419 | + $donet=db_query("SELECT count(DISTINCT testcaseID) from qatracker_result LEFT JOIN qatracker_testcase ON qatracker_testcase.id=qatracker_result.testcaseid WHERE qatracker_result.buildid='".$buildID."' AND qatracker_result.result != '2' AND qatracker_result.status='0'"); |
420 | + $donet=db_result($donet); |
421 | + $reports=db_query("SELECT count(qatracker_result.id) from qatracker_result LEFT JOIN qatracker_testcase ON qatracker_testcase.id=qatracker_result.testcaseid WHERE qatracker_testcase.status='0' AND buildid='".$buildID."' AND qatracker_result.status='0'"); |
422 | + $reports=db_result($reports); |
423 | + $fail=db_query("SELECT count(qatracker_result.id) from qatracker_result LEFT JOIN qatracker_testcase ON qatracker_testcase.id=qatracker_result.testcaseid WHERE qatracker_testcase.status='0' AND buildid='".$buildID."' AND qatracker_result.status='0' AND result='0'"); |
424 | + $fail=db_result($fail); |
425 | + if ($archive == 1) |
426 | + $total=$done; |
427 | + if ($fail != 0) |
428 | + $fail="<span style=\"font-weight:bold; color:#641500;\">($fail)</span>"; |
429 | + else |
430 | + $fail=""; |
431 | + if ($archive == "1") |
432 | + return "$donet $fail"; |
433 | + |
434 | + if ($done == $total) |
435 | + return "<span style=\"font-weight:bold; color:#006400;\">$done/$total</span> $fail"; |
436 | + elseif ($reports == 0) |
437 | + return "<span style=\"color:#000a8a;\">$done/$total</span> $fail"; |
438 | + else |
439 | + return "$done/$total $fail $started"; |
440 | +} |
441 | + |
442 | +function qatracker_getbuildstat_optional($buildID,$archive=0) { |
443 | + $total=db_query("SELECT count(title) from qatracker_testcase LEFT JOIN qatracker_build ON qatracker_build.productid=qatracker_testcase.productid WHERE qatracker_build.id='$buildID' AND qatracker_testcase.status='2'"); |
444 | + $total=db_result($total); |
445 | + |
446 | + if ($total==0) |
447 | + return "None"; |
448 | + |
449 | + $done=db_query("SELECT count(DISTINCT testcaseID) from qatracker_result LEFT JOIN qatracker_testcase ON qatracker_testcase.id=qatracker_result.testcaseid WHERE qatracker_result.buildid='".$buildID."' AND qatracker_result.status='0' AND qatracker_result.result != '2' AND qatracker_testcase.status='2'"); |
450 | + $done=db_result($done); |
451 | + |
452 | + $started=db_query("SELECT count(DISTINCT testcaseID) from qatracker_result LEFT JOIN qatracker_testcase ON qatracker_testcase.id=qatracker_result.testcaseid WHERE qatracker_result.buildid='".$buildID."' AND qatracker_result.status='0' AND qatracker_result.result ='2' AND qatracker_testcase.status='2'"); |
453 | + $started=db_result($started); |
454 | + |
455 | + if ($started != 0) |
456 | + $started = "<span style=\"color:#F5B800;\">($started)</span>"; |
457 | + else |
458 | + $started = ""; |
459 | + |
460 | $donet=db_query("SELECT count(DISTINCT testcaseID) from qatracker_result LEFT JOIN qatracker_testcase ON qatracker_testcase.id=qatracker_result.testcaseid WHERE qatracker_result.buildid='".$buildID."' AND qatracker_result.result != '2' AND qatracker_result.status='0'"); |
461 | $donet=db_result($donet); |
462 | - $reports=db_query("SELECT count(id) from qatracker_result WHERE buildid='".$buildID."' AND status='0'"); |
463 | + $reports=db_query("SELECT count(qatracker_result.id) from qatracker_result LEFT JOIN qatracker_testcase ON qatracker_testcase.id=qatracker_result.testcaseid WHERE qatracker_testcase.status='2' AND buildid='".$buildID."' AND qatracker_result.status='0'"); |
464 | $reports=db_result($reports); |
465 | - $fail=db_query("SELECT count(id) from qatracker_result WHERE buildid='".$buildID."' AND status='0' AND result='0'"); |
466 | + $fail=db_query("SELECT count(qatracker_result.id) from qatracker_result LEFT JOIN qatracker_testcase ON qatracker_testcase.id=qatracker_result.testcaseid WHERE qatracker_testcase.status='2'AND buildid='".$buildID."' AND qatracker_result.status='0' AND result='0'"); |
467 | $fail=db_result($fail); |
468 | if ($archive == 1) |
469 | $total=$done; |
470 | @@ -190,12 +250,12 @@ |
471 | $fail=""; |
472 | if ($archive == "1") |
473 | return "$donet $fail"; |
474 | - if ($done == $total) |
475 | + if ($done == $total) |
476 | return "<span style=\"font-weight:bold; color:#006400;\">$done/$total</span> $fail"; |
477 | elseif ($reports == 0) |
478 | return "<span style=\"color:#000a8a;\">$done/$total</span> $fail"; |
479 | else |
480 | - return "$done/$total $fail"; |
481 | + return "$done/$total $fail $started"; |
482 | } |
483 | |
484 | function qatracker_getbuildreportstat($productid, $isoid=0) { |