Bug 577538: Mark certain tests in xt/search.t as being broken only on Pg

(and a few as being not broken at all on Pg).
r=mkanat, a=mkanat (module owner)


git-svn-id: svn://10.0.0.236/trunk@260695 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
mkanat%bugzilla.org 2010-07-09 03:02:01 +00:00
parent c337458627
commit e89bbecf66
3 changed files with 33 additions and 2 deletions

View File

@ -1 +1 @@
7315
7316

View File

@ -45,6 +45,7 @@ our @EXPORT = qw(
NUM_SEARCH_TESTS
OR_BROKEN
OR_SKIP
PG_BROKEN
SKIP_FIELDS
SUBSTR_SIZE
TESTS
@ -482,6 +483,29 @@ use constant KNOWN_BROKEN => {
},
};
# This tracks things that are broken in different ways on Pg compared to
# MySQL. Actually, in some of these cases, Pg is behaving correctly
# where MySQL isn't, but the result is still a bit surprising to the user.
use constant PG_BROKEN => {
'attach_data.thedata' => {
allwords => { },
allwordssubstr => { },
anywords => { },
notregexp => { contains => [5] },
nowords => { contains => [5] },
},
percentage_complete => {
'allwordssubstr-<1>' => { contains => [3] },
anywordssubstr => { contains => [2,3] },
casesubstring => { contains => [3] },
'notregexp-<1>' => { contains => [3] },
notsubstring => { contains => [3] },
nowordssubstr => { contains => [3] },
'regexp-<1>' => { contains => [3] },
substring => { contains => [3] },
},
};
#############
# Overrides #
#############

View File

@ -184,8 +184,15 @@ sub _known_broken {
my $type = $self->field_object->type;
my $operator = $self->operator;
my $value = $self->main_value;
my $value_name = "$operator-$value";
if (Bugzilla->dbh->isa('Bugzilla::DB::Pg')) {
my $field_broken = PG_BROKEN->{$field}->{$operator};
return $field_broken if $field_broken;
my $pg_value_broken = PG_BROKEN->{$field}->{$value_name};
return $pg_value_broken if $pg_value_broken;
}
my $value_broken = KNOWN_BROKEN->{$value_name}->{$field};
$value_broken ||= KNOWN_BROKEN->{$value_name}->{$type};
return $value_broken if $value_broken;