Merge lp:~ara/ubuntu-qa-website/bug_457964 into lp:~ubuntu-qa-website-devel/ubuntu-qa-website/trunk

Proposed by Ara Pulido
Status: Superseded
Proposed branch: lp:~ara/ubuntu-qa-website/bug_457964
Merge into: lp:~ubuntu-qa-website-devel/ubuntu-qa-website/trunk
Diff against target: 365 lines (+240/-94)
1 file modified
code/modules/qatracker/qatracker.display.php (+240/-94)
To merge this branch: bzr merge lp:~ara/ubuntu-qa-website/bug_457964
Reviewer Review Type Date Requested Status
Ubuntu QA Website Developers Pending
Review via email: mp+16958@code.launchpad.net

This proposal has been superseded by a proposal from 2010-01-11.

To post a comment you must log in.
Revision history for this message
Ara Pulido (ara) wrote :

This is an easy implementation of optional testcases in the ISO tracker.

Using the already available field in the database "Weight" which, right now, is not used, we consider those testcases with weight = 0 as mandatory for release, and weight = 1 as optional for release.

This will be reflected in the tracker in two ways:

 * In the report, bugs found in optional testcases will show separated.
 * In the list of test cases for an image, mandatory test cases will appear before optional test cases.

The test coverage report needs to reflect this as well, but this will be addressed as part of the work on bug 495373

lp:~ara/ubuntu-qa-website/bug_457964 updated
140. By Ara <ara@sushirider>

Implement optional test cases with status column, rather than weight

Unmerged revisions

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 2009-12-15 12:23:32 +0000
3+++ code/modules/qatracker/qatracker.display.php 2010-01-11 16:35:23 +0000
4@@ -309,98 +309,193 @@
5 if ($site->getSetting("noticeboard")) {
6 $content.=$site->getSetting("noticeboard");
7 }
8- $content.="
9- <table class=\"listing\" style=\"padding-bottom:2em;\">
10- <tr class=\"trheader\">
11- <td style=\"width:64%\" align=\"left\"><b>Title</b></td>
12- <td style=\"width:7%\" align=\"center\"><b>Reports</b></td>
13- <td style=\"width:25%\" align=\"center\"><b>Bugs</b></td>
14- <td style=\"width:2%\" align=\"center\">&nbsp;</td>";
15- if (user_access($site->userrole)) {
16- $content.="<td style=\"width:2%\" align=\"center\"><input type=\"checkbox\" name=\"checkall\" onclick=\"checkAll(document.forms['testlist'], this)\" /></td>";
17- }
18- $content.="</tr>";
19- if ($archive == 0)
20- $result=db_query("SELECT
21- qatracker_testcase.id,
22- qatracker_testcase.title,
23- qatracker_testcase.link
24- FROM qatracker_testcase
25- LEFT JOIN qatracker_build ON qatracker_build.productid=qatracker_testcase.productid
26- WHERE qatracker_build.id='".$buildID."' AND qatracker_testcase.status='0'
27- ORDER BY weight ASC, title ASC");
28- else
29- $result=db_query("SELECT
30- qatracker_testcase.id,
31- qatracker_testcase.title,
32- qatracker_testcase.link
33- FROM qatracker_testcase
34- LEFT JOIN qatracker_build ON qatracker_build.productid=qatracker_testcase.productid
35- LEFT JOIN qatracker_result ON qatracker_result.testcaseid=qatracker_testcase.id AND qatracker_result.buildid=qatracker_build.id
36- WHERE qatracker_build.id='".$buildID."'
37- GROUP BY qatracker_testcase.title, qatracker_testcase.id, qatracker_testcase.link, qatracker_testcase.weight
38- HAVING count(qatracker_result.id)>0
39- ORDER BY qatracker_testcase.weight ASC, title ASC;");
40-
41- while ($item=db_fetch_object($result)) {
42- $content.="
43- <tr>";
44- if ($item->link)
45- $content.="<td style=\"width:64%\" align=\"left\"><a href=\"".$item->link."\"><img style=\"margin-bottom:-3px;\" src=\"$base_url/modules/qatracker/images/test.png\" alt=\"test\" /></a> <a href=\"$base_url/qatracker/result/".$buildID."/".$item->id."\">".$item->title."</a></td>";
46- else
47- $content.="<td style=\"width:64%\" align=\"left\"><img style=\"margin-bottom:-3px;\" src=\"$base_url/modules/qatracker/images/test.png\" alt=\"test\" /> <a href=\"$base_url/qatracker/result/".$buildID."/".$item->id."\">".$item->title."</a></td>";
48- $content.="<td style=\"width:7%\" align=\"center\">".qatracker_getresultsnumber($buildID,$item->id)."</td>
49- <td style=\"width:25%\" align=\"center\">".qatracker_getbugslist($buildID, $item->id, 0)."</td>
50- <td style=\"width:2%\" align=\"center\">";
51- if (db_result(db_query("SELECT count(id) FROM qatracker_user_subscription WHERE testcaseid='".$item->id."' AND userid='".$user->uid."'")) == 1) {
52- $content.="
53- <div class=\"balloonleft\">
54- <div>
55- <b>Subscribers for testcase #".$item->id."</b><br />";
56- if (db_result(db_query("SELECT count(id) FROM qatracker_user_subscription WHERE testcaseid='".$item->id."'"))) {
57- $content.="<ul>";
58- $subscribers=db_query("SELECT userid FROM qatracker_user_subscription WHERE testcaseid='".$item->id."'");
59- while ($subscriber=db_fetch_object($subscribers)) {
60- $content.="<li>".user_load(array('uid' => $subscriber->userid))->name."</li>";
61- }
62- $content.="</ul>";
63- }
64- else {
65- $content.="<br />None";
66- }
67- $content.="
68- </div>
69- <a rel=\"external\" href=\"\"><img style=\"margin-bottom:-3px;\" src=\"$base_url/modules/qatracker/images/sub.png\" alt=\"Subscribed\" /></a>
70- </div>";
71- }
72- else {
73- $content.="
74- <div class=\"balloonleft\">
75- <div>
76- <b>Subscribers for testcase #".$item->id."</b><br />";
77- if (db_result(db_query("SELECT count(id) FROM qatracker_user_subscription WHERE testcaseid='".$item->id."'"))) {
78- $content.="<ul>";
79- $subscribers=db_query("SELECT userid FROM qatracker_user_subscription WHERE testcaseid='".$item->id."'");
80- while ($subscriber=db_fetch_object($subscribers)) {
81- $content.="<li>".user_load(array('uid' => $subscriber->userid))->name."</li>";
82- }
83- $content.="</ul>";
84- }
85- else {
86- $content.="<br />None";
87- }
88- $content.="
89- </div>
90- <a rel=\"external\" href=\"\"><img style=\"margin-bottom:-3px;\" src=\"$base_url/modules/qatracker/images/nosub.png\" alt=\"Subscribed\" /></a>
91- </div>";
92- }
93- $content.="</td>";
94- if (user_access($site->userrole)) {
95- $content.="<td style=\"width:2%\" align=\"center\"><input type=\"checkbox\" name=\"isota_test[]\" value=\"".$item->id."\" /></td>";
96- }
97- $content.="</tr>";
98- }
99- $content.="</table><hr />";
100+ $content.="<h2>Mandatory testcases</h2>";
101+ $content.="
102+ <table class=\"listing\" style=\"padding-bottom:2em;\">
103+ <tr class=\"trheader\">
104+ <td style=\"width:64%\" align=\"left\"><b>Title</b></td>
105+ <td style=\"width:7%\" align=\"center\"><b>Reports</b></td>
106+ <td style=\"width:25%\" align=\"center\"><b>Bugs</b></td>
107+ <td style=\"width:2%\" align=\"center\">&nbsp;</td>";
108+ if (user_access($site->userrole)) {
109+ $content.="<td style=\"width:2%\" align=\"center\"><input type=\"checkbox\" name=\"checkall\" onclick=\"checkAll(document.forms['testlist'], this)\" /></td>";
110+ }
111+ $content.="</tr>";
112+ if ($archive == 0)
113+ $result=db_query("SELECT
114+ qatracker_testcase.id,
115+ qatracker_testcase.title,
116+ qatracker_testcase.link
117+ FROM qatracker_testcase
118+ LEFT JOIN qatracker_build ON qatracker_build.productid=qatracker_testcase.productid
119+ WHERE qatracker_build.id='".$buildID."' AND qatracker_testcase.status='0'
120+ ORDER BY weight ASC, title ASC");
121+ else
122+ $result=db_query("SELECT
123+ qatracker_testcase.id,
124+ qatracker_testcase.title,
125+ qatracker_testcase.link
126+ FROM qatracker_testcase
127+ LEFT JOIN qatracker_build ON qatracker_build.productid=qatracker_testcase.productid
128+ LEFT JOIN qatracker_result ON qatracker_result.testcaseid=qatracker_testcase.id AND qatracker_result.buildid=qatracker_build.id
129+ WHERE qatracker_build.id='".$buildID."'
130+ GROUP BY qatracker_testcase.title, qatracker_testcase.id, qatracker_testcase.link, qatracker_testcase.weight
131+ HAVING count(qatracker_result.id)>0
132+ ORDER BY qatracker_testcase.weight ASC, title ASC;");
133+
134+ while ($item=db_fetch_object($result)) {
135+ $content.="
136+ <tr>";
137+ if ($item->link)
138+ $content.="<td style=\"width:64%\" align=\"left\"><a href=\"".$item->link."\"><img style=\"margin-bottom:-3px;\" src=\"$base_url/modules/qatracker/images/test.png\" alt=\"test\" /></a> <a href=\"$base_url/qatracker/result/".$buildID."/".$item->id."\">".$item->title."</a></td>";
139+ else
140+ $content.="<td style=\"width:64%\" align=\"left\"><img style=\"margin-bottom:-3px;\" src=\"$base_url/modules/qatracker/images/test.png\" alt=\"test\" /> <a href=\"$base_url/qatracker/result/".$buildID."/".$item->id."\">".$item->title."</a></td>";
141+ $content.="<td style=\"width:7%\" align=\"center\">".qatracker_getresultsnumber($buildID,$item->id)."</td>
142+ <td style=\"width:25%\" align=\"center\">".qatracker_getbugslist($buildID, $item->id, 0)."</td>
143+ <td style=\"width:2%\" align=\"center\">";
144+ if (db_result(db_query("SELECT count(id) FROM qatracker_user_subscription WHERE testcaseid='".$item->id."' AND userid='".$user->uid."'")) == 1) {
145+ $content.="
146+ <div class=\"balloonleft\">
147+ <div>
148+ <b>Subscribers for testcase #".$item->id."</b><br />";
149+ if (db_result(db_query("SELECT count(id) FROM qatracker_user_subscription WHERE testcaseid='".$item->id."'"))) {
150+ $content.="<ul>";
151+ $subscribers=db_query("SELECT userid FROM qatracker_user_subscription WHERE testcaseid='".$item->id."'");
152+ while ($subscriber=db_fetch_object($subscribers)) {
153+ $content.="<li>".user_load(array('uid' => $subscriber->userid))->name."</li>";
154+ }
155+ $content.="</ul>";
156+ }
157+ else {
158+ $content.="<br />None";
159+ }
160+ $content.="
161+ </div>
162+ <a rel=\"external\" href=\"\"><img style=\"margin-bottom:-3px;\" src=\"$base_url/modules/qatracker/images/sub.png\" alt=\"Subscribed\" /></a>
163+ </div>";
164+ }
165+ else {
166+ $content.="
167+ <div class=\"balloonleft\">
168+ <div>
169+ <b>Subscribers for testcase #".$item->id."</b><br />";
170+ if (db_result(db_query("SELECT count(id) FROM qatracker_user_subscription WHERE testcaseid='".$item->id."'"))) {
171+ $content.="<ul>";
172+ $subscribers=db_query("SELECT userid FROM qatracker_user_subscription WHERE testcaseid='".$item->id."'");
173+ while ($subscriber=db_fetch_object($subscribers)) {
174+ $content.="<li>".user_load(array('uid' => $subscriber->userid))->name."</li>";
175+ }
176+ $content.="</ul>";
177+ }
178+ else {
179+ $content.="<br />None";
180+ }
181+ $content.="
182+ </div>
183+ <a rel=\"external\" href=\"\"><img style=\"margin-bottom:-3px;\" src=\"$base_url/modules/qatracker/images/nosub.png\" alt=\"Subscribed\" /></a>
184+ </div>";
185+ }
186+ $content.="</td>";
187+ if (user_access($site->userrole)) {
188+ $content.="<td style=\"width:2%\" align=\"center\"><input type=\"checkbox\" name=\"isota_test[]\" value=\"".$item->id."\" /></td>";
189+ }
190+ $content.="</tr>";
191+ }
192+ $content.="</table><hr />";
193+ $content.="<h2>Optional testcases</h2>";
194+ $content.="
195+ <table class=\"listing\" style=\"padding-bottom:2em;\">
196+ <tr class=\"trheader\">
197+ <td style=\"width:64%\" align=\"left\"><b>Title</b></td>
198+ <td style=\"width:7%\" align=\"center\"><b>Reports</b></td>
199+ <td style=\"width:25%\" align=\"center\"><b>Bugs</b></td>
200+ <td style=\"width:2%\" align=\"center\">&nbsp;</td>";
201+ if (user_access($site->userrole)) {
202+ $content.="<td style=\"width:2%\" align=\"center\"><input type=\"checkbox\" name=\"checkall\" onclick=\"checkAll(document.forms['testlist'], this)\" /></td>";
203+ }
204+ $content.="</tr>";
205+ if ($archive == 0)
206+ $result=db_query("SELECT
207+ qatracker_testcase.id,
208+ qatracker_testcase.title,
209+ qatracker_testcase.link
210+ FROM qatracker_testcase
211+ LEFT JOIN qatracker_build ON qatracker_build.productid=qatracker_testcase.productid
212+ WHERE qatracker_build.id='".$buildID."' AND qatracker_testcase.status='2'
213+ ORDER BY weight ASC, title ASC");
214+ else
215+ $result=db_query("SELECT
216+ qatracker_testcase.id,
217+ qatracker_testcase.title,
218+ qatracker_testcase.link
219+ FROM qatracker_testcase
220+ LEFT JOIN qatracker_build ON qatracker_build.productid=qatracker_testcase.productid
221+ LEFT JOIN qatracker_result ON qatracker_result.testcaseid=qatracker_testcase.id AND qatracker_result.buildid=qatracker_build.id
222+ WHERE qatracker_build.id='".$buildID."'
223+ GROUP BY qatracker_testcase.title, qatracker_testcase.id, qatracker_testcase.link, qatracker_testcase.weight
224+ HAVING count(qatracker_result.id)>0
225+ ORDER BY qatracker_testcase.weight ASC, title ASC;");
226+
227+ while ($item=db_fetch_object($result)) {
228+ $content.="
229+ <tr>";
230+ if ($item->link)
231+ $content.="<td style=\"width:64%\" align=\"left\"><a href=\"".$item->link."\"><img style=\"margin-bottom:-3px;\" src=\"$base_url/modules/qatracker/images/test.png\" alt=\"test\" /></a> <a href=\"$base_url/qatracker/result/".$buildID."/".$item->id."\">".$item->title."</a></td>";
232+ else
233+ $content.="<td style=\"width:64%\" align=\"left\"><img style=\"margin-bottom:-3px;\" src=\"$base_url/modules/qatracker/images/test.png\" alt=\"test\" /> <a href=\"$base_url/qatracker/result/".$buildID."/".$item->id."\">".$item->title."</a></td>";
234+ $content.="<td style=\"width:7%\" align=\"center\">".qatracker_getresultsnumber($buildID,$item->id)."</td>
235+ <td style=\"width:25%\" align=\"center\">".qatracker_getbugslist($buildID, $item->id, 0)."</td>
236+ <td style=\"width:2%\" align=\"center\">";
237+ if (db_result(db_query("SELECT count(id) FROM qatracker_user_subscription WHERE testcaseid='".$item->id."' AND userid='".$user->uid."'")) == 1) {
238+ $content.="
239+ <div class=\"balloonleft\">
240+ <div>
241+ <b>Subscribers for testcase #".$item->id."</b><br />";
242+ if (db_result(db_query("SELECT count(id) FROM qatracker_user_subscription WHERE testcaseid='".$item->id."'"))) {
243+ $content.="<ul>";
244+ $subscribers=db_query("SELECT userid FROM qatracker_user_subscription WHERE testcaseid='".$item->id."'");
245+ while ($subscriber=db_fetch_object($subscribers)) {
246+ $content.="<li>".user_load(array('uid' => $subscriber->userid))->name."</li>";
247+ }
248+ $content.="</ul>";
249+ }
250+ else {
251+ $content.="<br />None";
252+ }
253+ $content.="
254+ </div>
255+ <a rel=\"external\" href=\"\"><img style=\"margin-bottom:-3px;\" src=\"$base_url/modules/qatracker/images/sub.png\" alt=\"Subscribed\" /></a>
256+ </div>";
257+ }
258+ else {
259+ $content.="
260+ <div class=\"balloonleft\">
261+ <div>
262+ <b>Subscribers for testcase #".$item->id."</b><br />";
263+ if (db_result(db_query("SELECT count(id) FROM qatracker_user_subscription WHERE testcaseid='".$item->id."'"))) {
264+ $content.="<ul>";
265+ $subscribers=db_query("SELECT userid FROM qatracker_user_subscription WHERE testcaseid='".$item->id."'");
266+ while ($subscriber=db_fetch_object($subscribers)) {
267+ $content.="<li>".user_load(array('uid' => $subscriber->userid))->name."</li>";
268+ }
269+ $content.="</ul>";
270+ }
271+ else {
272+ $content.="<br />None";
273+ }
274+ $content.="
275+ </div>
276+ <a rel=\"external\" href=\"\"><img style=\"margin-bottom:-3px;\" src=\"$base_url/modules/qatracker/images/nosub.png\" alt=\"Subscribed\" /></a>
277+ </div>";
278+ }
279+ $content.="</td>";
280+ if (user_access($site->userrole)) {
281+ $content.="<td style=\"width:2%\" align=\"center\"><input type=\"checkbox\" name=\"isota_test[]\" value=\"".$item->id."\" /></td>";
282+ }
283+ $content.="</tr>";
284+ }
285+ $content.="</table><hr />";
286+
287 if (user_access($site->userrole))
288 $content.="<table cellpadding=\"5\">";
289 if ($rebuild != 1 && $archive != 1 && user_access($site->userrole) && db_result(db_query("SELECT count(id) FROM qatracker_result WHERE buildid='".$buildID."' AND reporterid='".$user->uid."'"))!=db_result(db_query("SELECT count(qatracker_testcase.id) FROM qatracker_testcase LEFT JOIN qatracker_build ON qatracker_build.productid=qatracker_testcase.productid WHERE qatracker_build.id='".$buildID."'"))) {
290@@ -580,7 +675,10 @@
291 FROM qatracker_bug
292 LEFT JOIN qatracker_result ON qatracker_result.id=qatracker_bug.resultid
293 LEFT JOIN qatracker_build ON qatracker_build.id=qatracker_result.buildid
294- WHERE (qatracker_build.status='0' OR qatracker_build.status='1') AND qatracker_build.milestoneid='".$milestoneID."'
295+ LEFT JOIN qatracker_testcase ON qatracker_testcase.id = qatracker_result.testcaseid
296+ WHERE (qatracker_build.status='0' OR qatracker_build.status='1')
297+ AND qatracker_testcase.status != '2'
298+ AND qatracker_build.milestoneid='".$milestoneID."'
299 GROUP BY qatracker_bug.bugnumber
300 ORDER BY dupe DESC,bugnumber ASC");
301 $content.="<h1>Stats for ".$milestone->title."</h1>
302@@ -590,7 +688,7 @@
303 <tr><td><b>DU</b></td><td>Duplicates on Launchpad</td></tr>
304 <tr><td><b>TT</b></td><td>Number of time the bugs was reported on the tracker</td></tr>
305 </table><br />
306- <h2>Bugs for current builds:</h2>
307+ <h2>Bugs from mandatory testcases in the current builds:</h2>
308 <table class=\"listing\">
309 <tr class=\"trheader\">
310 <td><b>Bug #</b></td>
311@@ -625,6 +723,54 @@
312 }
313 }
314 $content.="</table>";
315+ $optional_testcases=db_query("SELECT
316+ qatracker_bug.bugnumber,
317+ count(qatracker_bug.bugnumber) as dupe
318+ FROM qatracker_bug
319+ LEFT JOIN qatracker_result ON qatracker_result.id=qatracker_bug.resultid
320+ LEFT JOIN qatracker_build ON qatracker_build.id=qatracker_result.buildid
321+ LEFT JOIN qatracker_testcase ON qatracker_testcase.id = qatracker_result.testcaseid
322+ WHERE (qatracker_build.status='0' OR qatracker_build.status='1')
323+ AND qatracker_testcase.status='2'
324+ AND qatracker_build.milestoneid='".$milestoneID."'
325+ GROUP BY qatracker_bug.bugnumber
326+ ORDER BY dupe DESC,bugnumber ASC");
327+ $content.="<br />
328+ <h2>Bugs from optional testcases in the current build:</h2>
329+ <table class=\"listing\">
330+ <tr class=\"trheader\">
331+ <td><b>Bug #</b></td>
332+ <td><b>Title</b></td>
333+ <td><b>Affects</b></td>
334+ <td><b>Status</b></td>
335+ <td><b>Importance</b></td>
336+ <td><b>Assignee</b></td>
337+ <td><b>CO</b></td>
338+ <td><b>SU</b></td>
339+ <td><b>DU</b></td>
340+ <td><b>TT</b></td>
341+ </tr>";
342+ while($item = db_fetch_object($optional_testcases)) {
343+ $bug=qawebsite_getbug($item->bugnumber);
344+ if ($bug) {
345+ if (strlen($bug->title) > 53)
346+ $bug->title=substr($bug->title,0,50)."...";
347+ $content.="
348+ <tr>
349+ <td><a href=\"https://bugs.launchpad.net/bugs/".$bug->originalbug."\">".$bug->originalbug."</a></td>
350+ <td><a href=\"https://bugs.launchpad.net/bugs/".$bug->bugnumber."\">".htmlentities($bug->title)."</a></td>
351+ <td>".htmlentities($bug->product,ENT_QUOTES,"UTF-8")."</td>
352+ <td>".htmlentities($bug->status,ENT_QUOTES,"UTF-8")."</td>
353+ <td>".htmlentities($bug->importance,ENT_QUOTES,"UTF-8")."</td>
354+ <td>".htmlentities($bug->assignee,ENT_QUOTES,"UTF-8")."</td>
355+ <td>".$bug->commentscount."</td>
356+ <td>".$bug->subscriberscount."</td>
357+ <td>".$bug->duplicatescount."</td>
358+ <td>".$item->dupe."</td>
359+ </tr>";
360+ }
361+ }
362+ $content.="</table>";
363 $previous_bugs=db_query("SELECT
364 qatracker_bug.bugnumber,
365 count(qatracker_bug.bugnumber) as dupe

Subscribers

People subscribed via source and target branches

to status/vote changes: