Merge lp:~ara/ubuntu-qa-website/maverick_alpha3_changes into lp:~ubuntu-qa-website-devel/ubuntu-qa-website/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
Reviewer Review Type Date Requested Status
Ubuntu QA Website Developers Pending
Review via email: mp+30441@code.launchpad.net

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) {

Subscribers

People subscribed via source and target branches

to status/vote changes: