summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjustdave%syndicomm.com <>2001-09-03 10:08:05 +0200
committerjustdave%syndicomm.com <>2001-09-03 10:08:05 +0200
commitb4fa09d3e743c3adaae0717e0e5366481a0fc755 (patch)
tree4c5b83f005b8d28c67e7a44c8f60fef337cbb2e9
parentfe6d2a3abbaf4e8c10b04aab02c69c1b8c88b470 (diff)
downloadbugzilla-b4fa09d3e743c3adaae0717e0e5366481a0fc755.tar.gz
bugzilla-b4fa09d3e743c3adaae0717e0e5366481a0fc755.tar.xz
Fix for bug 91808: Additional sanitycheck tests for the duplicates table.
Patch by Matthew Tuck <matty@chariot.net.au> r= jake@acutex.net, caillon@returnzero.com
-rwxr-xr-xsanitycheck.cgi58
1 files changed, 51 insertions, 7 deletions
diff --git a/sanitycheck.cgi b/sanitycheck.cgi
index c8f628e58..72a2d3818 100755
--- a/sanitycheck.cgi
+++ b/sanitycheck.cgi
@@ -19,6 +19,7 @@
# Rights Reserved.
#
# Contributor(s): Terry Weissman <terry@mozilla.org>
+# Matthew Tuck <matty@chariot.net.au>
use diagnostics;
use strict;
@@ -109,6 +110,7 @@ sub CrossCheck {
}
+my @badbugs;
my @row;
@@ -355,24 +357,25 @@ while (1) {
push(@list, $k);
}
-my @fixlist;
+@badbugs = ();
+
foreach my $b (keys(%keyword)) {
if (!exists $realk{$b} || $realk{$b} ne $keyword{$b}) {
- push(@fixlist, $b);
+ push(@badbugs, $b);
}
}
foreach my $b (keys(%realk)) {
if (!exists $keyword{$b}) {
- push(@fixlist, $b);
+ push(@badbugs, $b);
}
}
-if (@fixlist) {
- @fixlist = sort {$a <=> $b} @fixlist;
+if (@badbugs) {
+ @badbugs = sort {$a <=> $b} @badbugs;
Alert("Bug(s) found with incorrect keyword cache: " .
- join(', ', @fixlist));
+ join(', ', @badbugs));
if (exists $::FORM{'rebuildkeywordcache'}) {
Status("OK, now fixing keyword cache.");
- foreach my $b (@fixlist) {
+ foreach my $b (@badbugs) {
my $k = '';
if (exists($realk{$b})) {
$k = $realk{$b};
@@ -389,6 +392,47 @@ if (@fixlist) {
}
+###########################################################################
+# Perform duplicates table checks
+###########################################################################
+
+Status("Checking duplicates table");
+
+SendSQL("SELECT bugs.bug_id " .
+ "FROM bugs INNER JOIN duplicates ON bugs.bug_id = duplicates.dupe " .
+ "WHERE bugs.resolution != 'DUPLICATE' " .
+ "ORDER BY bugs.bug_id");
+
+@badbugs = ();
+
+while (@row = FetchSQLData()) {
+ my ($id) = (@row);
+ push (@badbugs, $id);
+}
+
+if (@badbugs) {
+ Alert("Bug(s) found on duplicates table that are not marked duplicate: " .
+ join(', ', @badbugs));
+}
+
+SendSQL("SELECT bugs.bug_id " .
+ "FROM bugs LEFT JOIN duplicates ON bugs.bug_id = duplicates.dupe " .
+ "WHERE bugs.resolution = 'DUPLICATE' AND duplicates.dupe IS NULL " .
+ "ORDER BY bugs.bug_id");
+
+@badbugs = ();
+
+while (@row = FetchSQLData()) {
+ my ($id) = (@row);
+ push (@badbugs, $id);
+}
+
+if (@badbugs) {
+ Alert("Bug(s) found marked resolved duplicate and not on duplicates " .
+ "table: " . join(', ', @badbugs));
+}
+
+
Status("Sanity check completed.");