Fix case-insensitive searching of hashtags
The index field has always been stored lowercase, since we intended
hashtag searches to be case-insensitive. However, we never converted the
input string to lower case, with the unexpected result that searching
for [hashtag:ACamelCaseTag] would not return results for changes who
contain that exact hashtag.
Bug: Issue 10564
Change-Id: I86019d18fd0d183d857d5a91d2af20d3445c6c25
(cherry picked from commit c8d1c47f1f
)
This commit is contained in:

committed by
Paladox none

parent
0c42b39b0b
commit
ee722302b3
@@ -20,7 +20,9 @@ import com.google.gwtorm.server.OrmException;
|
||||
|
||||
public class HashtagPredicate extends ChangeIndexPredicate {
|
||||
public HashtagPredicate(String hashtag) {
|
||||
super(ChangeField.HASHTAG, HashtagsUtil.cleanupHashtag(hashtag));
|
||||
// Use toLowerCase without locale to match behavior in ChangeField.
|
||||
// TODO(dborowitz): Change both.
|
||||
super(ChangeField.HASHTAG, HashtagsUtil.cleanupHashtag(hashtag).toLowerCase());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -1512,7 +1512,7 @@ public abstract class AbstractQueryChangesTest extends GerritServerTests {
|
||||
in.add = ImmutableSet.of("foo");
|
||||
gApi.changes().id(change1.getId().get()).setHashtags(in);
|
||||
|
||||
in.add = ImmutableSet.of("foo", "bar", "a tag");
|
||||
in.add = ImmutableSet.of("foo", "bar", "a tag", "ACamelCaseTag");
|
||||
gApi.changes().id(change2.getId().get()).setHashtags(in);
|
||||
|
||||
return ImmutableList.of(change1, change2);
|
||||
@@ -1529,6 +1529,8 @@ public abstract class AbstractQueryChangesTest extends GerritServerTests {
|
||||
assertQuery("hashtag:\" a tag \"", changes.get(1));
|
||||
assertQuery("hashtag:\"#a tag\"", changes.get(1));
|
||||
assertQuery("hashtag:\"# #a tag\"", changes.get(1));
|
||||
assertQuery("hashtag:acamelcasetag", changes.get(1));
|
||||
assertQuery("hashtag:ACamelCaseTAg", changes.get(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Reference in New Issue
Block a user