diff --git a/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/BoshDeploymentManifestSchema.java b/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/BoshDeploymentManifestSchema.java index 78a9a4c38..cbd3907d4 100644 --- a/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/BoshDeploymentManifestSchema.java +++ b/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/BoshDeploymentManifestSchema.java @@ -50,18 +50,18 @@ public class BoshDeploymentManifestSchema implements YamlSchema { TYPE_UTIL = f.TYPE_UTIL; TOPLEVEL_TYPE = f.ybean("BoshDeploymentManifest"); - addProp(TOPLEVEL_TYPE, "name", t_ne_string); - addProp(TOPLEVEL_TYPE, "director_uuid", t_ne_string); + addProp(TOPLEVEL_TYPE, "name", t_ne_string).isRequired(true); + addProp(TOPLEVEL_TYPE, "director_uuid", t_ne_string).isRequired(true); YAtomicType t_version = f.yatomic("Version"); t_version.addHints("latest"); t_version.parseWith(ValueParsers.NE_STRING); YBeanType t_release = f.ybean("Release"); - addProp(t_release, "name", t_ne_string); - addProp(t_release, "version", t_version); + addProp(t_release, "name", t_ne_string).isRequired(true); + addProp(t_release, "version", t_version).isRequired(true); - addProp(TOPLEVEL_TYPE, "releases", f.yseq(t_release)); + addProp(TOPLEVEL_TYPE, "releases", f.yseq(t_release)).isRequired(true); } @Override diff --git a/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/concourse/BoshEditorTest.java b/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/concourse/BoshEditorTest.java index defdc2e9c..7261103f0 100644 --- a/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/concourse/BoshEditorTest.java +++ b/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/concourse/BoshEditorTest.java @@ -14,6 +14,7 @@ import org.junit.Before; import org.junit.Test; import org.springframework.ide.vscode.bosh.BoshLanguageServer; import org.springframework.ide.vscode.commons.util.text.LanguageId; +import org.springframework.ide.vscode.commons.yaml.reconcile.YamlSchemaProblems; import org.springframework.ide.vscode.languageserver.testharness.Editor; import org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness; @@ -70,4 +71,42 @@ public class BoshEditorTest { ); } + @Test public void releasesBlockCompletions() throws Exception { + Editor editor = harness.newEditor( + "releases:\n" + + "- <*>" + ); + editor.ignoreProblem(YamlSchemaProblems.MISSING_PROPERTY); + editor.assertCompletions( + "releases:\n" + + "- name: <*>" + , //======== + "releases:\n" + + "- version: <*>" + ); + } + + @Test public void releasesBlockReconcileAndHovers() throws Exception { + Editor editor = harness.newEditor( + "releases:\n" + + "- name: some-release\n" + + " version: some-version\n" + + " woot: dunno\n" + ); + editor.ignoreProblem(YamlSchemaProblems.MISSING_PROPERTY); + editor.assertProblems( + "woot|Unknown property" + ); + + editor.assertHoverContains("name", "Name of a release used in the deployment"); + editor.assertHoverContains("version", "The version of the release to use"); + + editor = harness.newEditor( + "releases:\n" + + "- name: some-release\n" + + " version: <*>\n" + ); + editor.assertCompletionLabels("latest"); + } + }