aboutsummaryrefslogtreecommitdiffstats
path: root/integration
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-02-13 22:44:17 +0100
committerJon Bratseth <bratseth@gmail.com>2022-02-13 22:44:17 +0100
commitc197c97e70262daaaa6a1f70c98e41daee3a1bbc (patch)
tree364f5489eb1dd158d034b83c140c159c1d9fb1b4 /integration
parent3f0f376e90a45c987200fb0ba78451cf1cc976e3 (diff)
Find usages test
Diffstat (limited to 'integration')
-rw-r--r--integration/intellij/src/main/java/ai/vespa/intellij/schema/SdCompletionContributor.java3
-rw-r--r--integration/intellij/src/main/java/ai/vespa/intellij/schema/findUsages/SdFindUsagesHandler.java2
-rw-r--r--integration/intellij/src/main/java/ai/vespa/intellij/schema/utils/AST.java1
-rw-r--r--integration/intellij/src/test/applications/rankprofilemodularity/test.sd10
-rw-r--r--integration/intellij/src/test/applications/rankprofilemodularity/test/outside_schema1.profile12
-rw-r--r--integration/intellij/src/test/java/ai/vespa/intellij/PluginTestBase.java31
-rw-r--r--integration/intellij/src/test/java/ai/vespa/intellij/findUsages/FindUsagesTest.java47
-rw-r--r--integration/intellij/src/test/java/ai/vespa/intellij/model/SchemaTest.java25
8 files changed, 104 insertions, 27 deletions
diff --git a/integration/intellij/src/main/java/ai/vespa/intellij/schema/SdCompletionContributor.java b/integration/intellij/src/main/java/ai/vespa/intellij/schema/SdCompletionContributor.java
index 43feb26bbe4..75300c915a5 100644
--- a/integration/intellij/src/main/java/ai/vespa/intellij/schema/SdCompletionContributor.java
+++ b/integration/intellij/src/main/java/ai/vespa/intellij/schema/SdCompletionContributor.java
@@ -18,14 +18,13 @@ import ai.vespa.intellij.schema.psi.SdTypes;
*/
public class SdCompletionContributor extends CompletionContributor {
-
public SdCompletionContributor() {
extend(CompletionType.BASIC,
PlatformPatterns.psiElement(SdTypes.IDENTIFIER_VAL),
new CompletionProvider<>() {
public void addCompletions(CompletionParameters parameters, //completion parameters contain details of the cursor position
ProcessingContext context,
- CompletionResultSet resultSet) { //result set contains completion details to suggest
+ CompletionResultSet resultSet) { // result set contains completion details to suggest
resultSet.addElement(LookupElementBuilder.create(""));
}
}
diff --git a/integration/intellij/src/main/java/ai/vespa/intellij/schema/findUsages/SdFindUsagesHandler.java b/integration/intellij/src/main/java/ai/vespa/intellij/schema/findUsages/SdFindUsagesHandler.java
index fd872b1a364..e7b4e280eed 100644
--- a/integration/intellij/src/main/java/ai/vespa/intellij/schema/findUsages/SdFindUsagesHandler.java
+++ b/integration/intellij/src/main/java/ai/vespa/intellij/schema/findUsages/SdFindUsagesHandler.java
@@ -30,7 +30,7 @@ public class SdFindUsagesHandler extends FindUsagesHandler {
private final Map<String, List<Function>> functionsMap;
- protected SdFindUsagesHandler(PsiElement psiElement) {
+ public SdFindUsagesHandler(PsiElement psiElement) {
super(psiElement);
PsiFile file = psiElement.getContainingFile();
functionsMap = file instanceof SdFile ? SdUtil.functionsIn((SdFile) psiElement.getContainingFile())
diff --git a/integration/intellij/src/main/java/ai/vespa/intellij/schema/utils/AST.java b/integration/intellij/src/main/java/ai/vespa/intellij/schema/utils/AST.java
index 0edf7d1f93c..ea161fe3c17 100644
--- a/integration/intellij/src/main/java/ai/vespa/intellij/schema/utils/AST.java
+++ b/integration/intellij/src/main/java/ai/vespa/intellij/schema/utils/AST.java
@@ -18,7 +18,6 @@ public class AST {
/** Returns the nodes following "inherits" in the given element. */
public static List<ASTNode> inherits(PsiElement element) {
Tokens tokens = Tokens.of(element);
- tokens.dump();
tokens.requireElement();
tokens.requireWhitespace();
tokens.require(SdTypes.IDENTIFIER_VAL, SdTypes.IDENTIFIER_WITH_DASH_VAL);
diff --git a/integration/intellij/src/test/applications/rankprofilemodularity/test.sd b/integration/intellij/src/test/applications/rankprofilemodularity/test.sd
index d6c8e649b90..17ee9f57ad6 100644
--- a/integration/intellij/src/test/applications/rankprofilemodularity/test.sd
+++ b/integration/intellij/src/test/applications/rankprofilemodularity/test.sd
@@ -41,12 +41,16 @@ schema test {
rank-profile in_schema2 inherits outside_schema2 {
+ first-phase {
+ expression: f2 + ff1
+ }
+
function f2() {
- expression: fieldMatch(title) + fo2
+ expression: fieldMatch(title) + fo2 + ff1
}
- first-phase {
- expression: f2
+ function ff1() {
+ expression: random
}
}
diff --git a/integration/intellij/src/test/applications/rankprofilemodularity/test/outside_schema1.profile b/integration/intellij/src/test/applications/rankprofilemodularity/test/outside_schema1.profile
index a8092689b7f..388ec4155cd 100644
--- a/integration/intellij/src/test/applications/rankprofilemodularity/test/outside_schema1.profile
+++ b/integration/intellij/src/test/applications/rankprofilemodularity/test/outside_schema1.profile
@@ -1,7 +1,19 @@
rank-profile outside_schema1 inherits in_schema1 {
function fo1() {
+ expression: local1 + 2
+ }
+
+ function local1() {
+ expression: local2 + local3
+ }
+
+ function local2() {
expression: now
}
+ function local3() {
+ expression: local2
+ }
+
} \ No newline at end of file
diff --git a/integration/intellij/src/test/java/ai/vespa/intellij/PluginTestBase.java b/integration/intellij/src/test/java/ai/vespa/intellij/PluginTestBase.java
new file mode 100644
index 00000000000..9407e6794c0
--- /dev/null
+++ b/integration/intellij/src/test/java/ai/vespa/intellij/PluginTestBase.java
@@ -0,0 +1,31 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package ai.vespa.intellij;
+
+import ai.vespa.intellij.model.TestProjectDescriptor;
+import com.intellij.testFramework.LightProjectDescriptor;
+import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase;
+
+/**
+ * Parent of unit tests. This is an antipattern, but mandated by IntelliJ.
+ *
+ * @author bratseth
+ */
+public class PluginTestBase extends LightJavaCodeInsightFixtureTestCase {
+
+ private final TestProjectDescriptor descriptor;
+
+ public PluginTestBase() {
+ descriptor = new TestProjectDescriptor(); // Expensive instance
+ }
+
+ @Override
+ protected LightProjectDescriptor getProjectDescriptor() { return descriptor; }
+
+ @Override
+ protected String getTestDataPath() { return "."; }
+
+ protected void useDir(String dir) {
+ myFixture.copyDirectoryToProject(dir, "/");
+ }
+
+}
diff --git a/integration/intellij/src/test/java/ai/vespa/intellij/findUsages/FindUsagesTest.java b/integration/intellij/src/test/java/ai/vespa/intellij/findUsages/FindUsagesTest.java
new file mode 100644
index 00000000000..ede86906a3e
--- /dev/null
+++ b/integration/intellij/src/test/java/ai/vespa/intellij/findUsages/FindUsagesTest.java
@@ -0,0 +1,47 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package ai.vespa.intellij.findUsages;
+
+import ai.vespa.intellij.PluginTestBase;
+import ai.vespa.intellij.schema.SdUtil;
+import ai.vespa.intellij.schema.findUsages.SdFindUsagesHandler;
+import ai.vespa.intellij.schema.model.Schema;
+import ai.vespa.intellij.schema.utils.Path;
+import com.intellij.find.findUsages.FindUsagesOptions;
+import com.intellij.usageView.UsageInfo;
+import com.intellij.util.Processor;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author bratseth
+ */
+public class FindUsagesTest extends PluginTestBase {
+
+ @Test
+ public void testFindUsages() {
+ useDir("src/test/applications/rankprofilemodularity");
+ Schema schema = Schema.fromProjectFile(getProject(), Path.fromString("test.sd"));
+ var handler = new SdFindUsagesHandler(schema.definition());
+ var function = SdUtil.functionsIn(schema.rankProfile("in_schema2").get()).get("ff1").get(0).definition();
+ var usageProcessor = new MockUsageProcessor();
+ var options = new FindUsagesOptions(getProject());
+ options.isUsages = true;
+ handler.processElementUsages(function, usageProcessor, options);
+ assertEquals(3, usageProcessor.usages.size());
+ }
+
+ private static class MockUsageProcessor implements Processor<UsageInfo> {
+
+ List<UsageInfo> usages = new ArrayList<>();
+
+ @Override
+ public boolean process(UsageInfo usageInfo) {
+ usages.add(usageInfo);
+ return true;
+ }
+
+ }
+
+}
diff --git a/integration/intellij/src/test/java/ai/vespa/intellij/model/SchemaTest.java b/integration/intellij/src/test/java/ai/vespa/intellij/model/SchemaTest.java
index ba670d1c732..f6e1ec3bdf9 100644
--- a/integration/intellij/src/test/java/ai/vespa/intellij/model/SchemaTest.java
+++ b/integration/intellij/src/test/java/ai/vespa/intellij/model/SchemaTest.java
@@ -1,35 +1,20 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package ai.vespa.intellij.model;
+import ai.vespa.intellij.PluginTestBase;
import ai.vespa.intellij.schema.model.RankProfile;
import ai.vespa.intellij.schema.model.Schema;
import ai.vespa.intellij.schema.utils.Path;
-import com.intellij.testFramework.LightProjectDescriptor;
-import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase;
import org.junit.Test;
-import java.util.List;
-
/**
* @author bratseth
*/
-public class SchemaTest extends LightJavaCodeInsightFixtureTestCase {
-
- private final TestProjectDescriptor descriptor;
-
- public SchemaTest() {
- descriptor = new TestProjectDescriptor(); // Expensive instance
- }
-
- @Override
- protected LightProjectDescriptor getProjectDescriptor() { return descriptor; }
-
- @Override
- protected String getTestDataPath() { return "."; }
+public class SchemaTest extends PluginTestBase {
@Test
public void testSimple() {
- super.myFixture.copyDirectoryToProject("src/test/applications/simple", "/");
+ useDir("src/test/applications/simple");
Schema schema = Schema.fromProjectFile(getProject(), Path.fromString("simple.sd"));
assertNotNull(schema);
assertEquals("simple", schema.name());
@@ -42,7 +27,7 @@ public class SchemaTest extends LightJavaCodeInsightFixtureTestCase {
@Test
public void testSchemaInheritance() {
- super.myFixture.copyDirectoryToProject("src/test/applications/schemainheritance", "/");
+ useDir("src/test/applications/schemaInheritance");
Schema schema = Schema.fromProjectFile(getProject(), Path.fromString("child.sd"));
assertNotNull(schema);
assertEquals("child", schema.name());
@@ -55,7 +40,7 @@ public class SchemaTest extends LightJavaCodeInsightFixtureTestCase {
@Test
public void testRankProfileModularity() {
- super.myFixture.copyDirectoryToProject("src/test/applications/rankprofilemodularity", "/");
+ useDir("src/test/applications/rankProfileModularity");
Schema schema = Schema.fromProjectFile(getProject(), Path.fromString("test.sd"));
assertNotNull(schema);
assertEquals("test", schema.name());