diff --git a/vscode-extensions/commons/language-server-test-harness/src/main/java/org/springframework/ide/vscode/languageserver/testharness/Editor.java b/vscode-extensions/commons/language-server-test-harness/src/main/java/org/springframework/ide/vscode/languageserver/testharness/Editor.java index cb7c69b0f..7061a150a 100644 --- a/vscode-extensions/commons/language-server-test-harness/src/main/java/org/springframework/ide/vscode/languageserver/testharness/Editor.java +++ b/vscode-extensions/commons/language-server-test-harness/src/main/java/org/springframework/ide/vscode/languageserver/testharness/Editor.java @@ -343,6 +343,20 @@ public class Editor { assertContains(expectSnippet, hover.getContents().toString()); } + /** + * Verifies an expected textSnippet is contained in the hover text that is + * computed when hovering mouse at position at the end of first occurrence of + * a given string in the editor. + */ + public void assertHoverExactText(String afterString, String expectSnippet) throws Exception { + int pos = getRawText().indexOf(afterString); + if (pos>=0) { + pos += afterString.length(); + } + Hover hover = harness.getHover(document, document.toPosition(pos)); + assertEquals(expectSnippet, hover.getContents().toString()); + } + public void assertCompletionDetails(String expectLabel, String expectDetail, String expectDocSnippet) throws Exception { CompletionItem it = harness.resolveCompletionItem(assertCompletionWithLabel(expectLabel)); if (expectDetail!=null) { diff --git a/vscode-extensions/vscode-boot-properties/src/main/java/org/springframework/ide/vscode/boot/common/InformationTemplates.java b/vscode-extensions/vscode-boot-properties/src/main/java/org/springframework/ide/vscode/boot/common/InformationTemplates.java index f84c193fd..4ae8484bd 100644 --- a/vscode-extensions/vscode-boot-properties/src/main/java/org/springframework/ide/vscode/boot/common/InformationTemplates.java +++ b/vscode-extensions/vscode-boot-properties/src/main/java/org/springframework/ide/vscode/boot/common/InformationTemplates.java @@ -24,12 +24,14 @@ public class InformationTemplates { public static Renderable createHover(PropertyInfo info) { Deprecation deprecation = createDeprecation(info); - return InformationTemplates.createHover(info.getId(), info.getType(), info.getDefaultValue(), text(info.getDescription()), deprecation); + Renderable description = info.getDescription() == null ? null : text(info.getDescription()); + return InformationTemplates.createHover(info.getId(), info.getType(), info.getDefaultValue(), description, deprecation); } public static Renderable createCompletionDocumentation(PropertyInfo info) { Deprecation deprecation = createDeprecation(info); - return InformationTemplates.createCompletionDocumentation(text(info.getDescription()), info.getDefaultValue(), deprecation); + Renderable description = info.getDescription() == null ? null : text(info.getDescription()); + return InformationTemplates.createCompletionDocumentation(description, info.getDefaultValue(), deprecation); } public static Renderable createHover(String id, String type, Object defaultValue, Renderable description, Deprecation deprecation) { diff --git a/vscode-extensions/vscode-boot-properties/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationPropertiesEditorTest.java b/vscode-extensions/vscode-boot-properties/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationPropertiesEditorTest.java index 7ce70df72..025fa51b8 100644 --- a/vscode-extensions/vscode-boot-properties/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationPropertiesEditorTest.java +++ b/vscode-extensions/vscode-boot-properties/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationPropertiesEditorTest.java @@ -1577,6 +1577,14 @@ public class ApplicationPropertiesEditorTest extends AbstractPropsEditorTest { editor.assertNoHover("ggggg.kkkk"); } + @Test public void testEmptyDescriptionHover() throws Exception { + data("debug", "java.lang.String", null, null); + Editor editor = newEditor( + "debug=something\n" + ); + editor.assertHoverExactText("debug", "[**debug** \n[java.lang.String](null)]"); + } + @Override protected SimpleLanguageServer newLanguageServer() { BootPropertiesLanguageServer server = new BootPropertiesLanguageServer(md.getIndexProvider(), typeUtilProvider, javaProjectFinder);