diff options
-rw-r--r-- | xt/lib/Bugzilla/Test/Search/Constants.pm | 24 | ||||
-rw-r--r-- | xt/lib/Bugzilla/Test/Search/FieldTest.pm | 9 |
2 files changed, 32 insertions, 1 deletions
diff --git a/xt/lib/Bugzilla/Test/Search/Constants.pm b/xt/lib/Bugzilla/Test/Search/Constants.pm index 28f0a3f93..c9d2ef088 100644 --- a/xt/lib/Bugzilla/Test/Search/Constants.pm +++ b/xt/lib/Bugzilla/Test/Search/Constants.pm @@ -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 # ############# diff --git a/xt/lib/Bugzilla/Test/Search/FieldTest.pm b/xt/lib/Bugzilla/Test/Search/FieldTest.pm index b0307dec4..7ebf760d1 100644 --- a/xt/lib/Bugzilla/Test/Search/FieldTest.pm +++ b/xt/lib/Bugzilla/Test/Search/FieldTest.pm @@ -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; |