summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--xt/lib/Bugzilla/Test/Search/Constants.pm22
-rw-r--r--xt/lib/Bugzilla/Test/Search/InjectionTest.pm17
2 files changed, 36 insertions, 3 deletions
diff --git a/xt/lib/Bugzilla/Test/Search/Constants.pm b/xt/lib/Bugzilla/Test/Search/Constants.pm
index 2a53780b7..4a287eeb3 100644
--- a/xt/lib/Bugzilla/Test/Search/Constants.pm
+++ b/xt/lib/Bugzilla/Test/Search/Constants.pm
@@ -885,6 +885,28 @@ use constant TESTS => {
# operator_ok overrides the "brokenness" of certain operators, so that they
# are always OK for that field/operator combination.
use constant INJECTION_BROKEN_FIELD => {
+ # Pg can't run injection tests against integer or date fields. See bug 577557.
+ 'attachments.isobsolete' => { db_skip => ['Pg'] },
+ 'attachments.ispatch' => { db_skip => ['Pg'] },
+ 'attachments.isprivate' => { db_skip => ['Pg'] },
+ 'attachments.isurl' => { db_skip => ['Pg'] },
+ blocked => { db_skip => ['Pg'] },
+ bug_id => { db_skip => ['Pg'] },
+ cclist_accessible => { db_skip => ['Pg'] },
+ creation_ts => { db_skip => ['Pg'] },
+ days_elapsed => { db_skip => ['Pg'] },
+ dependson => { db_skip => ['Pg'] },
+ deadline => { db_skip => ['Pg'] },
+ delta_ts => { db_skip => ['Pg'] },
+ estimated_time => { db_skip => ['Pg'] },
+ everconfirmed => { db_skip => ['Pg'] },
+ 'longdescs.isprivate' => { db_skip => ['Pg'] },
+ percentage_complete => { db_skip => ['Pg'] },
+ remaining_time => { db_skip => ['Pg'] },
+ reporter_accessible => { db_skip => ['Pg'] },
+ work_time => { db_skip => ['Pg'] },
+ FIELD_TYPE_BUG_ID, { db_skip => ['Pg'] },
+ FIELD_TYPE_DATETIME, { db_skip => ['Pg'] },
owner_idle_time => { search => 1 },
keywords => {
search => 1,
diff --git a/xt/lib/Bugzilla/Test/Search/InjectionTest.pm b/xt/lib/Bugzilla/Test/Search/InjectionTest.pm
index 211026232..1ee83c57c 100644
--- a/xt/lib/Bugzilla/Test/Search/InjectionTest.pm
+++ b/xt/lib/Bugzilla/Test/Search/InjectionTest.pm
@@ -40,7 +40,8 @@ sub _known_broken {
return {} if grep { $_ eq $self->field } @field_ok;
- my $field_broken = INJECTION_BROKEN_FIELD->{$self->field};
+ my $field_broken = INJECTION_BROKEN_FIELD->{$self->field}
+ || INJECTION_BROKEN_FIELD->{$self->field_object->type};
# We don't want to auto-vivify $field_broken and thus make it true.
my @operator_ok = $field_broken ? @{ $field_broken->{operator_ok} || [] }
: ();
@@ -51,8 +52,18 @@ sub _known_broken {
sub sql_error_ok { return $_[0]->_known_broken->{sql_error} }
-# Injection tests don't have to skip any fields.
-sub field_not_yet_implemented { undef }
+# Injection tests only skip fields on certain dbs.
+sub field_not_yet_implemented {
+ my ($self) = @_;
+ my $skip_for_dbs = $self->_known_broken->{db_skip};
+ return undef if !$skip_for_dbs;
+ my $dbh = Bugzilla->dbh;
+ if (my ($skip) = grep { $dbh->isa("Bugzilla::DB::$_") } @$skip_for_dbs) {
+ my $field = $self->field;
+ return "$field injection testing is not supported with $skip";
+ }
+ return undef;
+}
# Injection tests don't do translation.
sub translated_value { $_[0]->test_value }