From b4fa09d3e743c3adaae0717e0e5366481a0fc755 Mon Sep 17 00:00:00 2001 From: "justdave%syndicomm.com" <> Date: Mon, 3 Sep 2001 08:08:05 +0000 Subject: Fix for bug 91808: Additional sanitycheck tests for the duplicates table. Patch by Matthew Tuck r= jake@acutex.net, caillon@returnzero.com --- sanitycheck.cgi | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 51 insertions(+), 7 deletions(-) (limited to 'sanitycheck.cgi') 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 +# Matthew Tuck 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."); -- cgit v1.2.3-24-g4f1b