summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--xt/lib/Bugzilla/Test/Search/Constants.pm24
-rw-r--r--xt/lib/Bugzilla/Test/Search/FieldTest.pm9
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;