From 0b1e410c81430711a602adc56e4fc7667d1c841e Mon Sep 17 00:00:00 2001 From: Byron Jones Date: Tue, 21 May 2013 01:54:06 +0800 Subject: Bug 828344: "contains all of the words" no longer looks for all words within the same comment or flag r=LpSolit, a=LpSolit --- xt/lib/Bugzilla/Test/Search/FieldTest.pm | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) (limited to 'xt/lib/Bugzilla/Test/Search/FieldTest.pm') diff --git a/xt/lib/Bugzilla/Test/Search/FieldTest.pm b/xt/lib/Bugzilla/Test/Search/FieldTest.pm index 283a90d16..ee25f2dc6 100644 --- a/xt/lib/Bugzilla/Test/Search/FieldTest.pm +++ b/xt/lib/Bugzilla/Test/Search/FieldTest.pm @@ -28,6 +28,7 @@ use strict; use warnings; use Bugzilla::Search; use Bugzilla::Test::Search::Constants; +use Bugzilla::Util qw(trim); use Data::Dumper; use Scalar::Util qw(blessed); @@ -72,6 +73,13 @@ sub bug { my $self = shift; return $self->search_test->bug(@_); } +sub number { + my ($self, $id) = @_; + foreach my $number (1..NUM_BUGS) { + return $number if $self->search_test->bug($number)->id == $id; + } + return 0; +} # The name displayed for this test by Test::More. Used in test descriptions. sub name { @@ -147,9 +155,18 @@ sub translated_value { return $self->{translated_value}; } # Used in failure diagnostic messages. -sub debug_value { - my ($self) = @_; - return "Value: '" . $self->translated_value . "'"; +sub debug_fail { + my ($self, $number, $results, $sql) = @_; + my @expected = @{ $self->test->{contains} }; + my @results = sort + map { $self->number($_) } + map { $_->[0] } + @$results; + return + " Value: '" . $self->translated_value . "'\n" . + "Expected: [" . join(',', @expected) . "]\n" . + " Results: [" . join(',', @results) . "]\n" . + trim($sql) . "\n"; } # True for a bug if we ran the "transform" function on it and the @@ -184,6 +201,7 @@ sub bug_is_contained { # The tests we know are broken for this operator/field combination. sub _known_broken { my ($self, $constant, $skip_pg_check) = @_; + $constant ||= KNOWN_BROKEN; my $field = $self->field; my $type = $self->field_object->type; @@ -192,8 +210,8 @@ sub _known_broken { my $value_name = "$operator-$value"; if (my $extra_name = $self->test->{extra_name}) { $value_name .= "-$extra_name"; - } - + } + my $value_broken = $constant->{$value_name}->{$field}; $value_broken ||= $constant->{$value_name}->{$type}; return $value_broken if $value_broken; @@ -601,12 +619,12 @@ sub _test_content_for_bug { if ($self->bug_is_contained($number)) { ok($result_ids{$bug_id}, "$name: contains bug $number ($bug_id)") - or diag Dumper($results) . $self->debug_value . "\n\nSQL: $sql"; + or diag $self->debug_fail($number, $results, $sql); } else { ok(!$result_ids{$bug_id}, "$name: does not contain bug $number ($bug_id)") - or diag Dumper($results) . $self->debug_value . "\n\nSQL: $sql"; + or diag $self->debug_fail($number, $results, $sql); } } } -- cgit v1.2.3-24-g4f1b