From e3bf3e4521fa09a0d5dddcbb083282ec9c8e04b8 Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Tue, 17 Dec 2013 16:32:09 +0000 Subject: [PATCH] Bug 7518: regression test double-quote in search operand Under certain circumstances, namely where QueryParser is off, QueryWeightFields is on, and QueryFuzzy and QueryAutoTruncate are off, a search with a double-quote embedded in it can fail: for example web application would return results where web "application does not. This patch adds an automated regression test. To test: [1] Apply this patch and run prove -v t/db_dependent/Search.t; two tests should fail. [2] After applying the main patch that fixes the bug, the prove -v t/db_dependent/Search.t should succeed. Signed-off-by: Galen Charlton (cherry picked from commit 437f06624759c464d667107d9f73ec05283f6892) Signed-off-by: Fridolin Somers (cherry picked from commit 895f989dcaad44830bc85d855d71b654170dbb1d) Signed-off-by: Tomas Cohen Arazi Fixed some conflicts, the tests are they same overall. --- t/db_dependent/Search.t | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/t/db_dependent/Search.t b/t/db_dependent/Search.t index f17031e4a4..e84483b548 100644 --- a/t/db_dependent/Search.t +++ b/t/db_dependent/Search.t @@ -12,7 +12,7 @@ use YAML; use C4::Debug; require C4::Context; -use Test::More tests => 82; +use Test::More tests => 84; use Test::MockModule; use MARC::Record; use File::Spec; @@ -460,6 +460,24 @@ $stopwords_removed, $query_type ) = buildQuery([], [ 'medic' ], [ 'kw' ], [], [] ($error, $results_hashref, $facets_loop) = getRecords($query,$simple_query,[ ], [ 'biblioserver' ],20,0,undef,\%branches,\%itemtypes,$query_type,0); is($results_hashref->{biblioserver}->{hits}, 5, "Search for 'medic' returns matches with automatic truncation on"); +$QueryStemming = $QueryFuzzy = $QueryRemoveStopwords = $QueryAutoTruncate = 0; +$QueryWeightFields = 1; +( $error, $query, $simple_query, $query_cgi, +$query_desc, $limit, $limit_cgi, $limit_desc, +$stopwords_removed, $query_type ) = buildQuery([], [ 'web application' ], [ 'kw' ], [], [], 0, 'en'); +($error, $results_hashref, $facets_loop) = getRecords($query,$simple_query,[ ], [ 'biblioserver' ],20,0,undef,\%branches,\%itemtypes,$query_type,0); +is($results_hashref->{biblioserver}->{hits}, 1, "Search for 'web application' returns one hit with QueryWeightFields on"); + +( $error, $query, $simple_query, $query_cgi, +$query_desc, $limit, $limit_cgi, $limit_desc, +$stopwords_removed, $query_type ) = buildQuery([], [ 'web "application' ], [ 'kw' ], [], [], 0, 'en'); +($error, $results_hashref, $facets_loop) = getRecords($query,$simple_query,[ ], [ 'biblioserver' ],20,0,undef,\%branches,\%itemtypes,$query_type,0); +is($results_hashref->{biblioserver}->{hits}, 1, "Search for 'web \"application' returns one hit with QueryWeightFields on (bug 7518)"); + +$QueryStemming = $QueryWeightFields = $QueryFuzzy = $QueryRemoveStopwords = $QueryAutoTruncate = 0; +( $error, $query, $simple_query, $query_cgi, +$query_desc, $limit, $limit_cgi, $limit_desc, +$stopwords_removed, $query_type ) = buildQuery([], [ 'medic' ], [ 'kw' ], [], [], 0, 'en'); ( $error, $query, $simple_query, $query_cgi, $query_desc, $limit, $limit_cgi, $limit_desc, -- 2.39.5