From 15b3db0dfa32b87df0e24a968335ccf5d690ed16 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Thu, 10 Nov 2022 20:59:00 +0100 Subject: Don't interpret ref: as a query profile ref unnecessarily --- .../prelude/query/parser/test/ParseTestCase.java | 3 ++- .../prelude/query/parser/test/ParsingTester.java | 6 ++---- .../query/profile/test/QueryProfileTestCase.java | 20 ++++++++++++++++++++ 3 files changed, 24 insertions(+), 5 deletions(-) (limited to 'container-search/src/test/java/com') diff --git a/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ParseTestCase.java b/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ParseTestCase.java index bd6b2f1f21d..583e89bacd6 100644 --- a/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ParseTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ParseTestCase.java @@ -12,6 +12,7 @@ import com.yahoo.prelude.query.CompositeItem; import com.yahoo.prelude.query.IntItem; import com.yahoo.prelude.query.Item; import com.yahoo.prelude.query.NotItem; +import com.yahoo.prelude.query.NullItem; import com.yahoo.prelude.query.OrItem; import com.yahoo.prelude.query.PhraseItem; import com.yahoo.prelude.query.PhraseSegmentItem; @@ -1475,7 +1476,7 @@ public class ParseTestCase { @Test void testLoneStar() { - assertNull(tester.parseQuery("*", null, Language.UNKNOWN, Query.Type.ANY, TestLinguistics.INSTANCE)); + assertTrue(tester.parseQuery("*", null, Language.UNKNOWN, Query.Type.ANY, TestLinguistics.INSTANCE) instanceof NullItem); } @Test diff --git a/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ParsingTester.java b/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ParsingTester.java index ab314c4c1e7..e37c5c03807 100644 --- a/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ParsingTester.java +++ b/container-search/src/test/java/com/yahoo/prelude/query/parser/test/ParsingTester.java @@ -117,7 +117,7 @@ public class ParsingTester { Language language, Linguistics linguistics) { Item root = parseQuery(toParse, filter, language, mode, linguistics); if (parsed == null) { - assertNull(root); + assertTrue(root instanceof NullItem, "root is " + root); } else { assertNotNull(root, "Got null from parsing " + toParse); assertEquals(parsed, root.toString(), "Parse of '" + toParse + "'"); @@ -135,9 +135,7 @@ public class ParsingTester { .setLinguistics(linguistics) .setSpecialTokens(tokenRegistry.getSpecialTokens("default"))); Item root = parser.parse(new Parsable().setQuery(query).setFilter(filter).setLanguage(language)).getRoot(); - if (root instanceof NullItem) { - return null; - } + if (root == null) throw new NullPointerException(); // Should be NullItem return root; } diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileTestCase.java index 7a4247f2584..c4541fe9f58 100644 --- a/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/query/profile/test/QueryProfileTestCase.java @@ -3,6 +3,10 @@ package com.yahoo.search.query.profile.test; import com.yahoo.jdisc.http.HttpRequest.Method; import com.yahoo.container.jdisc.HttpRequest; +import com.yahoo.prelude.Index; +import com.yahoo.prelude.IndexFacts; +import com.yahoo.prelude.IndexModel; +import com.yahoo.prelude.SearchDefinition; import com.yahoo.processing.request.CompoundName; import com.yahoo.processing.request.Properties; import com.yahoo.search.Query; @@ -12,6 +16,7 @@ import com.yahoo.search.query.profile.QueryProfileProperties; import com.yahoo.search.query.profile.QueryProfileRegistry; import com.yahoo.search.query.profile.compiled.CompiledQueryProfile; import com.yahoo.search.query.profile.compiled.ValueWithSource; +import com.yahoo.search.searchchain.Execution; import com.yahoo.yolean.trace.TraceNode; import org.junit.jupiter.api.Test; @@ -342,6 +347,21 @@ public class QueryProfileTestCase { assertEquals("de", query.getModel().getLanguage().languageCode()); } + /** Tests that the ref: here is not mistaken for a query profile reference. */ + @Test + void testReferenceAsQueryString() { + SearchDefinition sd = new SearchDefinition("test"); + sd.addIndex(new Index("someField")); + IndexFacts facts = new IndexFacts(new IndexModel(sd)); + + var profile = new QueryProfile("test"); + var registry = new QueryProfileRegistry(); + registry.register(profile); + var query = new Query("?query=ref:", registry.compile().findQueryProfile("test")); + query.getModel().setExecution(new Execution(Execution.Context.createContextStub(facts))); + assertEquals("WEAKAND(100) ref", query.getModel().getQueryTree().getRoot().toString()); + } + /** Dots are followed when setting overridability, also with variants */ @Test void testInstanceOverridableWithVariants() { -- cgit v1.2.3