summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Borowitz <dborowitz@google.com>2018-12-18 10:50:22 -0500
committerPaladox none <thomasmulhall410@yahoo.com>2019-03-06 23:26:00 +0000
commitee722302b329a948fec1fbe50a4a87abeac0cf97 (patch)
treefa244fb2eb2fd39af1b95955a9f497b9807623c8
parent0c42b39b0bfc8662e868f55df9dd63b1b4e0a1e2 (diff)
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 c8d1c47f1fe2b8807850c35af5dcdb1a5ca10862)
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/query/change/HashtagPredicate.java4
-rw-r--r--gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java4
2 files changed, 6 insertions, 2 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/HashtagPredicate.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/HashtagPredicate.java
index bea56884e2..95ecf89469 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/HashtagPredicate.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/HashtagPredicate.java
@@ -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
diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java
index 934d893d00..36a869fd7a 100644
--- a/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java
+++ b/gerrit-server/src/test/java/com/google/gerrit/server/query/change/AbstractQueryChangesTest.java
@@ -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