summaryrefslogtreecommitdiffstats
path: root/sanitycheck.cgi
diff options
context:
space:
mode:
authorjake%acutex.net <>2001-09-20 00:06:43 +0200
committerjake%acutex.net <>2001-09-20 00:06:43 +0200
commit31998f3b5b891f5d170b3606f5287934b81bbd03 (patch)
tree396f72c78aa6c36043be68be80056583bdc25dea /sanitycheck.cgi
parent678c73f7e733bf23d553e94790722dcc6060b2be (diff)
downloadbugzilla-31998f3b5b891f5d170b3606f5287934b81bbd03.tar.gz
bugzilla-31998f3b5b891f5d170b3606f5287934b81bbd03.tar.xz
Fix for bug 97971 - Sanity check should check statuses, resolutions, everconfirmed & number of votes.
Patch by Matthew Tuck <matty@chariot.net.au> r= jake@acutex.net
Diffstat (limited to 'sanitycheck.cgi')
-rwxr-xr-xsanitycheck.cgi108
1 files changed, 108 insertions, 0 deletions
diff --git a/sanitycheck.cgi b/sanitycheck.cgi
index 7c2cb2ea1..494e510ee 100755
--- a/sanitycheck.cgi
+++ b/sanitycheck.cgi
@@ -471,8 +471,116 @@ if (@badbugs) {
"table: " . join(', ', @badbugs));
}
+###########################################################################
+# Perform status/resolution checks
+###########################################################################
+
+Status("Checking statuses/resolutions");
+
+my @open_states = map(SqlQuote($_), OpenStates());
+my $open_states = join(', ', @open_states);
+
+@badbugs = ();
+
+SendSQL("SELECT bug_id FROM bugs " .
+ "WHERE bug_status IN ($open_states) " .
+ "AND resolution != '' " .
+ "ORDER BY bug_id");
+
+while (@row = FetchSQLData()) {
+ my ($id) = (@row);
+ push(@badbugs, $id);
+}
+
+if (@badbugs > 0) {
+ Alert("Bugs with open status and a resolution: " .
+ join (", ", @badbugs));
+}
+
+@badbugs = ();
+
+SendSQL("SELECT bug_id FROM bugs " .
+ "WHERE bug_status NOT IN ($open_states) " .
+ "AND resolution = '' " .
+ "ORDER BY bug_id");
+
+while (@row = FetchSQLData()) {
+ my ($id) = (@row);
+ push(@badbugs, $id);
+}
+
+if (@badbugs > 0) {
+ Alert("Bugs with non-open status and no resolution: " .
+ join (", ", @badbugs));
+}
+
+###########################################################################
+# Perform status/everconfirmed checks
+###########################################################################
+
+Status("Checking statuses/everconfirmed");
+
+@badbugs = ();
+
+SendSQL("SELECT bug_id FROM bugs " .
+ "WHERE bug_status = " . SqlQuote($::unconfirmedstate) . ' ' .
+ "AND everconfirmed = 1 " .
+ "ORDER BY bug_id");
+while (@row = FetchSQLData()) {
+ my ($id) = (@row);
+ push(@badbugs, $id);
+}
+
+if (@badbugs > 0) {
+ Alert("Bugs that are UNCONFIRMED but have everconfirmed set: " .
+ join (", ", @badbugs));
+}
+
+@badbugs = ();
+
+SendSQL("SELECT bug_id FROM bugs " .
+ "WHERE bug_status IN ('NEW', 'ASSIGNED', 'REOPENED') " .
+ "AND everconfirmed = 0 " .
+ "ORDER BY bug_id");
+while (@row = FetchSQLData()) {
+ my ($id) = (@row);
+ push(@badbugs, $id);
+}
+
+if (@badbugs > 0) {
+ Alert("Bugs with confirmed status but don't have everconfirmed set: " .
+ join (", ", @badbugs));
+}
+
+###########################################################################
+# Perform vote/everconfirmed checks
+###########################################################################
+
+Status("Checking votes/everconfirmed");
+
+@badbugs = ();
+
+SendSQL("SELECT bug_id FROM bugs, products " .
+ "WHERE bugs.product = products.product " .
+ "AND bug_status = " . SqlQuote($::unconfirmedstate) . ' ' .
+ "AND votestoconfirm <= votes " .
+ "ORDER BY bug_id");
+
+while (@row = FetchSQLData()) {
+ my ($id) = (@row);
+ push(@badbugs, $id);
+}
+
+if (@badbugs > 0) {
+ Alert("Bugs that have enough votes to be confirmed but haven't been: " .
+ join (", ", @badbugs));
+}
+
+###########################################################################
+# End
+###########################################################################
Status("Sanity check completed.");
PutFooter();