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

Proposed by Ara Pulido
Status: Merged
Approved by: Brian Murray
Approved revision: 145
Merged at revision: 143
Proposed branch: lp:~ara/ubuntu-qa-website/fixes_578349_579155
Merge into: lp:~ubuntu-qa-website-devel/ubuntu-qa-website/trunk
Diff against target: 189 lines (+76/-35)
2 files modified
code/modules/qatracker/qatracker.display.php (+50/-13)
code/modules/qatracker/qatracker.function.php (+26/-22)
To merge this branch: bzr merge lp:~ara/ubuntu-qa-website/fixes_578349_579155
Reviewer Review Type Date Requested Status
Brian Murray Approve
Review via email: mp+26714@code.launchpad.net

Description of the change

This merge fixes a small bug (not trimming spaces in bug fields; bug 578349) and it adds a new feature: deleting own reports (bug 579155).

This feature has been requested by a lot of users, who often submit a report mistakenly in the wrong image or testcase.

To post a comment you must log in.
145. By Ara Pulido

Updated coverage report with new products and optional testcases

Revision history for this message
Ara Pulido (ara) wrote :

This merge request now also includes a fix for bug 495373

Revision history for this message
Brian Murray (brian-murray) wrote :

Its not obvious to me what changed in $tests=db_query.

Revision history for this message
Ara Pulido (ara) wrote :

> Its not obvious to me what changed in $tests=db_query.

This change is related to bug 495373, but it is not a new feature itself. While I was fixing the testcase coverage report, I realized that there was a previous bug in it. It was showing any testcase, no matter which site we were in. The ISO tracker manages each site (iso.qa.ubuntu.com, mozilla.qa.ubuntu.com, etc) with a siteid. This particular query wasn't specifying the siteid and, therefore, it was showing any active build of any site.

Revision history for this message
Brian Murray (brian-murray) wrote :

+ $content.="<tr><td style=\"width:25em;\" colspan=\"2\"><b>This product is not currently on the tracker</b></td></tr>";

I think that sentence could use a period at the end of it, the same thing might also be true of "You must select a result" and "you need to provide a bug number" as those are complete sentences. However, I'm not really certain if there is a convention for this or what it might be if there is one. ;-)

Anyway looks great!

review: Approve
146. By Ara Pulido

Added a period to error messages

Revision history for this message
Ara Pulido (ara) wrote :

I have added a period at the end of the error messages and have merged the changes. Thanks for the review!

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'code/modules/qatracker/qatracker.display.php'
--- code/modules/qatracker/qatracker.display.php 2010-04-16 11:26:57 +0000
+++ code/modules/qatracker/qatracker.display.php 2010-06-22 13:43:23 +0000
@@ -599,7 +599,7 @@
599 $resultID=db_query("SELECT id FROM qatracker_result WHERE buildid='".$buildID."' AND testcaseid='".$testcaseID."' AND reporterid='".$user->uid."' ");599 $resultID=db_query("SELECT id FROM qatracker_result WHERE buildid='".$buildID."' AND testcaseid='".$testcaseID."' AND reporterid='".$user->uid."' ");
600 $resultID=db_result($resultID);600 $resultID=db_result($resultID);
601 if ($resultID) {601 if ($resultID) {
602 $content.="<br /><b>You have already posted a result, the form below lets you edit it :</b>";602 $content.="<br /><b>You have already posted a result, the form below lets you update it or delete it:</b>";
603 $content.=qatracker_addresult($resultID);603 $content.=qatracker_addresult($resultID);
604 }604 }
605 else605 else
@@ -621,8 +621,9 @@
621 "Alternate" => "Alternate",621 "Alternate" => "Alternate",
622 "Desktop" => "Desktop",622 "Desktop" => "Desktop",
623 "Ubuntu Server" => "Server",623 "Ubuntu Server" => "Server",
624 "Ubuntu educational" => "Edubuntu Add-on",
625 "DVD" => "DVD",624 "DVD" => "DVD",
625 "Netbook" => "Netbook",
626 "arm" => "ARM",
626 "Netboot" => "Netboot"627 "Netboot" => "Netboot"
627 );628 );
628 }629 }
@@ -635,7 +636,7 @@
635 $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)";636 $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)";
636 foreach ($products as $product => $title) {637 foreach ($products as $product => $title) {
637 $content.="<h1>$title</h1><table class=\"listing\" style=\"width:auto;\">";638 $content.="<h1>$title</h1><table class=\"listing\" style=\"width:auto;\">";
638 $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_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 '.* (.*) .*$')");639 $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 '.* (.*) .*$')");
639 $result=false;640 $result=false;
640 while ($item = db_fetch_object($tests)) {641 while ($item = db_fetch_object($tests)) {
641 if ($item->count == 0)642 if ($item->count == 0)
@@ -648,9 +649,26 @@
648 $result=true;649 $result=true;
649 }650 }
650 if (!$result)651 if (!$result)
651 $content.="<tr><td style=\"width:25em;\" colspan=\"2\"><b>This product is not currently on the tracker</b></td></tr>";652 $content.="<tr><td style=\"width:25em;\" colspan=\"2\"><b>This product is not currently on the tracker.</b></td></tr>";
652 $content.="</table>";653 $content.="</table>";
654 }
655 $content.="<h1>Optional Testcases</h1><table class=\"listing\" style=\"width:auto;\">";
656 $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");
657 $result=false;
658 while ($item = db_fetch_object($tests)) {
659 if ($item->count == 0)
660 $count="<span style=\"color:red; font-weight:bold;\">".$item->count." tests done</span>";
661 elseif ($item->count > 5)
662 $count="<span style=\"color:green; font-weight:bold;\">".$item->count." tests done</span>";
663 else
664 $count="<span style=\"color:orange; font-weight:bold;\">".$item->count." tests done</span>";
665 $content.="<tr><td style=\"width:25em;\"><b>".$item->title."</b></td><td>$count</td></tr>";
666 $result=true;
653 }667 }
668 if (!$result)
669 $content.="<tr><td style=\"width:25em;\" colspan=\"2\"><b>This product is not currently on the tracker.</b></td></tr>";
670 $content.="</table>";
671
654 return $content;672 return $content;
655}673}
656674
@@ -661,7 +679,7 @@
661 while ($milestone=db_fetch_object($milestones))679 while ($milestone=db_fetch_object($milestones))
662 $content.=qatracker_buildstat($milestone->id);680 $content.=qatracker_buildstat($milestone->id);
663 if (strlen($content) == 0)681 if (strlen($content) == 0)
664 $content="<br /><b>There is no milestone being currently tested</b>";682 $content="<br /><b>There is no milestone being currently tested.</b>";
665 return $content;683 return $content;
666}684}
667685
@@ -881,7 +899,9 @@
881 $content.="<input type=\"checkbox\" name=\"isot_status\" value=\"1\" $select /> Hide this report<br />";899 $content.="<input type=\"checkbox\" name=\"isot_status\" value=\"1\" $select /> Hide this report<br />";
882 }900 }
883 if ($resultID != 0) {901 if ($resultID != 0) {
884 $content.="<input type=\"hidden\" name=\"isot_edit\" value=\"1\"/><input type=\"submit\" name=\"isot_valid\" value=\"Edit result\"/>";902 $content.="<input type=\"hidden\" name=\"isot_valid\" value=\"1\"/><input type=\"submit\" name=\"isot_edit\" value=\"Update result\"/>";
903 $content.="<br /><br/>Or you can also delete it if you made a mistake...&nbsp;&nbsp;&nbsp;";
904 $content.="<input type=\"submit\" name=\"isot_edit\" value=\"Delete result\" />";
885 }905 }
886 else906 else
887 $content.="<input type=\"submit\" style=\"width:12em\" name=\"isot_valid\" value=\"Submit result\"/>";907 $content.="<input type=\"submit\" style=\"width:12em\" name=\"isot_valid\" value=\"Submit result\"/>";
@@ -897,7 +917,7 @@
897 if ($data['isot_error']) {917 if ($data['isot_error']) {
898 return qatracker_addresult($isodID, 0);918 return qatracker_addresult($isodID, 0);
899 }919 }
900 if ($data['isot_edit'] == "1") {920 if ($data['isot_edit'] == "Update result" || $data['isot_edit'] == "Delete result") {
901 $id=db_query("SELECT id FROM qatracker_result WHERE buildid='".$buildID."' AND testcaseid='".$testcaseID."' AND reporterid='".$user->uid."' ");921 $id=db_query("SELECT id FROM qatracker_result WHERE buildid='".$buildID."' AND testcaseid='".$testcaseID."' AND reporterid='".$user->uid."' ");
902 $resultID=db_result($id);922 $resultID=db_result($id);
903 if ($admin == 1 && $resultID1 != 0) {923 if ($admin == 1 && $resultID1 != 0) {
@@ -911,18 +931,35 @@
911 db_query("UPDATE qatracker_result SET result='".db_escape_string($data['isot_result'])."', lastchange='".date("Y-m-d H:i:s")."', comment='".db_escape_string($data['isot_comment'])."', changedby='".$user->uid."', status='".db_escape_string($status)."' WHERE id='".db_escape_string($resultID)." '");931 db_query("UPDATE qatracker_result SET result='".db_escape_string($data['isot_result'])."', lastchange='".date("Y-m-d H:i:s")."', comment='".db_escape_string($data['isot_comment'])."', changedby='".$user->uid."', status='".db_escape_string($status)."' WHERE id='".db_escape_string($resultID)." '");
912 }932 }
913 else933 else
914 db_query("UPDATE qatracker_result SET result='".db_escape_string($data['isot_result'])."', lastchange='".date("Y-m-d H:i:s")."', comment='".db_escape_string($data['isot_comment'])."' WHERE id='".db_escape_string($resultID)." '");934 if ($data['isot_edit'] == "Update result") {
915 db_query("DELETE FROM qatracker_bug WHERE resultid='".$resultID."'");935 db_query("UPDATE qatracker_result SET result='".db_escape_string($data['isot_result'])."', lastchange='".date("Y-m-d H:i:s")."', comment='".db_escape_string($data['isot_comment'])."' WHERE id='".db_escape_string($resultID)." '");
936 }
937 else {
938 db_query("DELETE FROM qatracker_result WHERE id='".$resultID."'");
939 }
940 db_query("DELETE FROM qatracker_bug WHERE resultid='".$resultID."'");
916 }941 }
917 else {942 else {
918 if (db_result(db_query("SELECT count(id) FROM qatracker_result WHERE buildid='".$buildID."' AND testcaseid='".$testcaseID."' AND reporterid='".$user->uid."'"))=="0")943 if (db_result(db_query("SELECT count(id) FROM qatracker_result WHERE buildid='".$buildID."' AND testcaseid='".$testcaseID."' AND reporterid='".$user->uid."'"))=="0")
919 db_query("INSERT INTO qatracker_result (buildid, testcaseid, reporterid, date, comment, result) VALUES (".$buildID.",".$testcaseID.",".$user->uid.",'".date("Y-m-d H:i:s")."','".db_escape_string($data['isot_comment'])."','".db_escape_string($data['isot_result'])."')");944 db_query("INSERT INTO qatracker_result (buildid, testcaseid, reporterid, date, comment, result) VALUES (".$buildID.",".$testcaseID.",".$user->uid.",'".date("Y-m-d H:i:s")."','".db_escape_string($data['isot_comment'])."','".db_escape_string($data['isot_result'])."')");
920 $resultID=db_result(db_query("SELECT id FROM qatracker_result WHERE buildid=".$buildID." AND testcaseid=".$testcaseID." AND reporterid=".$user->uid.""));945 $resultID=db_result(db_query("SELECT id FROM qatracker_result WHERE buildid=".$buildID." AND testcaseid=".$testcaseID." AND reporterid=".$user->uid.""));
921 }946 }
922 $valid=0;947 $valid=0;
923 foreach ($data['isot_bug'] as $bugnumber => $bugimportance)948 if ($data['isot_edit'] != "Delete result") {
924 db_query("INSERT INTO qatracker_bug (resultid, bugnumber, bugimportance) VALUES ('".$resultID."','".db_escape_string($bugnumber)."','".db_escape_string($bugimportance)."')");949 foreach ($data['isot_bug'] as $bugnumber => $bugimportance)
925 drupal_set_message("Thank you for your report.", "notice_msg");950 db_query("INSERT INTO qatracker_bug (resultid, bugnumber, bugimportance) VALUES ('".$resultID."','".db_escape_string($bugnumber)."','".db_escape_string($bugimportance)."')");
951 }
952
953 if ($data['isot_edit'] == "Delete result") {
954 drupal_set_message("Your result has been successfully deleted.", "notice_msg");
955 }
956 else if ($data['isot_edit'] == "Update result") {
957 drupal_set_message("Your report has been updated.", "notice_msg");
958 }
959 else {
960 drupal_set_message("Thank you for your report.", "notice_msg");
961 }
962
926 drupal_set_header("Location: $base_url/qatracker/result/$buildID/$testcaseID");963 drupal_set_header("Location: $base_url/qatracker/result/$buildID/$testcaseID");
927 return null;964 return null;
928}965}
929966
=== modified file 'code/modules/qatracker/qatracker.function.php'
--- code/modules/qatracker/qatracker.function.php 2009-12-21 14:53:47 +0000
+++ code/modules/qatracker/qatracker.function.php 2010-06-22 13:43:23 +0000
@@ -20,28 +20,32 @@
20function qatracker_checkpostvalue() {20function qatracker_checkpostvalue() {
21 $data=$_POST;21 $data=$_POST;
22 $data['isot_comment']=htmlentities($data['isot_comment'],ENT_QUOTES,"UTF-8");22 $data['isot_comment']=htmlentities($data['isot_comment'],ENT_QUOTES,"UTF-8");
23 $data['isot_bug']=array();23 $data['isot_bug']=array();
24 $count=0;24 $count=0;
25 if ($data['isot_bugnumber']) {25
26 foreach ($data['isot_bugnumber'] as $bug) {26 // If we are deleting do not check anything
27 if ($data['isot_serious'] && in_array($count,$data['isot_serious']))27 if ($data['isot_edit'] != "Delete result") {
28 $serious=1;28 if ($data['isot_bugnumber']) {
29 else29 foreach ($data['isot_bugnumber'] as $bug) {
30 $serious=0;30 if ($data['isot_serious'] && in_array($count,$data['isot_serious']))
31 if (is_numeric($bug))31 $serious=1;
32 array_push_associative($data['isot_bug'], array($bug => $serious));32 else
33 elseif ($bug == "")33 $serious=0;
34 $data['isot_error'].="";34 if (is_numeric(trim($bug)))
35 else35 array_push_associative($data['isot_bug'], array(trim($bug) => $serious));
36 $data['isot_error'].="<font color=\"red\">Invalid value (".htmlentities($bug,ENT_QUOTES,"UTF-8").")</font><br />";36 elseif ($bug == "")
37 $count++;37 $data['isot_error'].="";
38 }38 else
39 }39 $data['isot_error'].="<font color=\"red\">Invalid value (".htmlentities($bug,ENT_QUOTES,"UTF-8").")</font><br />";
40 if ((!is_numeric($data['isot_result'])) && ($data['isot_valid'] || $data['isot_addbug'])) {40 $count++;
41 $data['isot_error'].="<font color=\"red\">You must select a result</font><br />";41 }
42 }42 }
43 if (($data['isot_result'] == 0) && (count($data['isot_bug']) == 0) && ($_SERVER['REQUEST_METHOD'] === 'POST'))43 if ((!is_numeric($data['isot_result'])) && ($data['isot_valid'] || $data['isot_addbug'])) {
44 $data['isot_error'].="<font color=\"red\">To mark a test as failed, you need to provide a bug number</font><br />";44 $data['isot_error'].="<font color=\"red\">You must select a result.</font><br />";
45 }
46 if (($data['isot_result'] == 0) && (count($data['isot_bug']) == 0) && ($_SERVER['REQUEST_METHOD'] === 'POST'))
47 $data['isot_error'].="<font color=\"red\">To mark a test as failed, you need to provide a bug number.</font><br />";
48 }
45 return $data;49 return $data;
46}50}
4751

Subscribers

People subscribed via source and target branches

to status/vote changes: