diff options
author | jake%acutex.net <> | 2001-09-11 00:20:11 +0200 |
---|---|---|
committer | jake%acutex.net <> | 2001-09-11 00:20:11 +0200 |
commit | c58ca9fbad118fd898bdd6aedee9fbf82abd2fb8 (patch) | |
tree | 7bc0d8f181a44779a369f442a10c0e2c2283cd83 | |
parent | 2673d244abb7c8192df7c908f1f27f7f6a20abce (diff) | |
download | bugzilla-c58ca9fbad118fd898bdd6aedee9fbf82abd2fb8.tar.gz bugzilla-c58ca9fbad118fd898bdd6aedee9fbf82abd2fb8.tar.xz |
Fix for bug 76140 - Adding some more sanity checks.
Patch by Matthew Tuck <matty@chariot.net.au>
r= caillon@returnzero.com, jake@acutex.net
-rwxr-xr-x | sanitycheck.cgi | 45 |
1 files changed, 41 insertions, 4 deletions
diff --git a/sanitycheck.cgi b/sanitycheck.cgi index 3ffe26261..7c2cb2ea1 100755 --- a/sanitycheck.cgi +++ b/sanitycheck.cgi @@ -90,7 +90,8 @@ sub CrossCheck { Status("... from $t2.$f2"); - SendSQL("SELECT DISTINCT $f2" . ($key2 ? ", $key2" : '') ." FROM $t2"); + SendSQL("SELECT DISTINCT $f2" . ($key2 ? ", $key2" : '') ." FROM $t2 " + . "WHERE $f2 IS NOT NULL"); while (MoreSQLData()) { my ($value, $key) = FetchSQLData(); if (!$valid{$value} && !$exceptions{$value}) { @@ -142,7 +143,13 @@ CrossCheck("keyworddefs", "id", CrossCheck("fielddefs", "fieldid", ["bugs_activity", "fieldid"]); - + +CrossCheck("attachments", "attach_id", + ["attachstatuses", "attach_id"], + ["bugs_activity", "attach_id"]); + +CrossCheck("attachstatusdefs", "id", + ["attachstatuses", "statusid"]); CrossCheck("bugs", "bug_id", ["bugs_activity", "bug_id"], @@ -152,7 +159,9 @@ CrossCheck("bugs", "bug_id", ["dependencies", "blocked"], ["dependencies", "dependson"], ["votes", "bug_id"], - ["keywords", "bug_id"]); + ["keywords", "bug_id"], + ["duplicates", "dupe_of", "dupe"], + ["duplicates", "dupe", "dupe_of"]); CrossCheck("profiles", "userid", ["bugs", "reporter", "bug_id"], @@ -163,10 +172,21 @@ CrossCheck("profiles", "userid", ["cc", "who", "bug_id"], ["votes", "who", "bug_id"], ["longdescs", "who", "bug_id"], + ["logincookies", "userid"], ["namedqueries", "userid"], + ["watch", "watcher"], + ["watch", "watched"], + ["tokens", "userid"], ["components", "initialowner", "value"], ["components", "initialqacontact", "value", ["0"]]); +CrossCheck("products", "product", + ["bugs", "product", "bug_id"], + ["components", "program", "value"], + ["milestones", "product", "value"], + ["versions", "program", "value"], + ["attachstatusdefs", "product", "name"]); + Status("Checking groups"); SendSQL("select bit from groups where bit != pow(2, round(log(bit) / log(2)))"); @@ -217,11 +237,28 @@ foreach my $ref (@checklist) { my ($product, $milestone) = (@$ref); SendSQL("SELECT count(*) FROM milestones WHERE product = " . SqlQuote($product) . " AND value = " . SqlQuote($milestone)); if(FetchOneColumn() != 1) { - Alert("Bug(s) found with invalud product/milestone: $product/$milestone"); + Alert("Bug(s) found with invalid product/milestone: $product/$milestone"); } } +Status("Checking default milestone/products"); + +@checklist = (); +SendSQL("select product, defaultmilestone from products"); +while (@row = FetchSQLData()) { + my @copy = @row; + push(@checklist, \@copy); +} + +foreach my $ref (@checklist) { + my ($product, $milestone) = (@$ref); + SendSQL("SELECT count(*) FROM milestones WHERE product = " . SqlQuote($product) . " AND value = " . SqlQuote($milestone)); + if(FetchOneColumn() != 1) { + Alert("Product(s) found with invalid default milestone: $product/$milestone"); + } +} + Status("Checking components/products"); |