Bosh LS no more subclass of SimpleLanguageServer
This commit is contained in:
@@ -37,15 +37,8 @@
|
||||
</dependency>
|
||||
<!-- Test harness -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.ide.vscode</groupId>
|
||||
<artifactId>language-server-test-harness</artifactId>
|
||||
<version>${dependencies.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mockito</groupId>
|
||||
<artifactId>mockito-all</artifactId>
|
||||
<version>${mockito-version}</version>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
||||
@@ -20,6 +20,7 @@ import org.apache.commons.lang3.tuple.Pair;
|
||||
import org.eclipse.lsp4j.Location;
|
||||
import org.eclipse.lsp4j.TextDocumentPositionParams;
|
||||
import org.springframework.ide.vscode.commons.languageserver.definition.SimpleDefinitionFinder;
|
||||
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
|
||||
import org.springframework.ide.vscode.commons.util.BadLocationException;
|
||||
import org.springframework.ide.vscode.commons.util.Log;
|
||||
import org.springframework.ide.vscode.commons.util.text.TextDocument;
|
||||
@@ -35,7 +36,7 @@ import com.google.common.collect.ImmutableList.Builder;
|
||||
|
||||
import reactor.core.publisher.Flux;
|
||||
|
||||
public class BoshDefintionFinder extends SimpleDefinitionFinder<BoshLanguageServer> {
|
||||
public class BoshDefintionFinder extends SimpleDefinitionFinder<SimpleLanguageServer> {
|
||||
|
||||
//TODO: lots of common code between BoshDefintionFinder and ConcourseDefinitionFinder.
|
||||
// should be possible to pull up into a common super class.
|
||||
@@ -51,7 +52,7 @@ public class BoshDefintionFinder extends SimpleDefinitionFinder<BoshLanguageServ
|
||||
List<Location> handle(Node refNode, TextDocument doc, YamlFileAST ast);
|
||||
}
|
||||
|
||||
public BoshDefintionFinder(BoshLanguageServer server, BoshSchemas schema, YamlAstCache asts, ASTTypeCache astTypes) {
|
||||
public BoshDefintionFinder(SimpleLanguageServer server, BoshSchemas schema, YamlAstCache asts, ASTTypeCache astTypes) {
|
||||
super(server);
|
||||
this.schema = schema;
|
||||
this.asts = asts;
|
||||
|
||||
@@ -12,6 +12,7 @@ package org.springframework.ide.vscode.bosh;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.ide.vscode.bosh.models.BoshCommandCloudConfigProvider;
|
||||
import org.springframework.ide.vscode.bosh.models.BoshCommandReleasesProvider;
|
||||
@@ -32,13 +33,19 @@ public class BoshLanguageServerBootApp {
|
||||
return SERVER_NAME;
|
||||
}
|
||||
|
||||
@Bean BoshLanguageServer languageServer(BoshCliConfig cliConfig) {
|
||||
return new BoshLanguageServer(
|
||||
cliConfig,
|
||||
new BoshCommandCloudConfigProvider(cliConfig),
|
||||
new BoshCommandStemcellsProvider(cliConfig),
|
||||
new BoshCommandReleasesProvider(cliConfig)
|
||||
);
|
||||
@ConditionalOnMissingClass("org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness")
|
||||
@Bean BoshCommandCloudConfigProvider cloudConfg(BoshCliConfig cliConfig) {
|
||||
return new BoshCommandCloudConfigProvider(cliConfig);
|
||||
}
|
||||
|
||||
@ConditionalOnMissingClass("org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness")
|
||||
@Bean BoshCommandStemcellsProvider stemcels(BoshCliConfig cliConfig) {
|
||||
return new BoshCommandStemcellsProvider(cliConfig);
|
||||
}
|
||||
|
||||
@ConditionalOnMissingClass("org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness")
|
||||
@Bean BoshCommandReleasesProvider releases(BoshCliConfig cliConfig) {
|
||||
return new BoshCommandReleasesProvider(cliConfig);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ import org.springframework.ide.vscode.bosh.models.DynamicModelProvider;
|
||||
import org.springframework.ide.vscode.bosh.models.ReleasesModel;
|
||||
import org.springframework.ide.vscode.bosh.models.StemcellsModel;
|
||||
import org.springframework.ide.vscode.commons.languageserver.completion.VscodeCompletionEngineAdapter;
|
||||
import org.springframework.ide.vscode.commons.languageserver.config.LanguageServerInitializer;
|
||||
import org.springframework.ide.vscode.commons.languageserver.hover.HoverInfoProvider;
|
||||
import org.springframework.ide.vscode.commons.languageserver.hover.VscodeHoverEngineAdapter;
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.IReconcileEngine;
|
||||
@@ -36,21 +37,38 @@ import org.springframework.ide.vscode.commons.yaml.reconcile.TypeBasedYamlSymbol
|
||||
import org.springframework.ide.vscode.commons.yaml.reconcile.YamlSchemaBasedReconcileEngine;
|
||||
import org.springframework.ide.vscode.commons.yaml.snippet.SchemaBasedSnippetGenerator;
|
||||
import org.springframework.ide.vscode.commons.yaml.structure.YamlStructureProvider;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
public class BoshLanguageServer extends SimpleLanguageServer {
|
||||
@Component
|
||||
public class BoshLanguageServerInitializer implements LanguageServerInitializer {
|
||||
|
||||
private final VscodeCompletionEngineAdapter completionEngine;
|
||||
private BoshCliConfig cliConfig;
|
||||
private DynamicModelProvider<CloudConfigModel> cloudConfigProvider;
|
||||
private DynamicModelProvider<StemcellsModel> stemcellsProvider;
|
||||
private DynamicModelProvider<ReleasesModel> releasesProvider;
|
||||
|
||||
private SimpleLanguageServer server;
|
||||
private BoshSchemas schema;
|
||||
private VscodeCompletionEngineAdapter completionEngine;
|
||||
|
||||
public BoshLanguageServer(BoshCliConfig cliConfig,
|
||||
public BoshLanguageServerInitializer(BoshCliConfig cliConfig,
|
||||
DynamicModelProvider<CloudConfigModel> cloudConfigProvider,
|
||||
DynamicModelProvider<StemcellsModel> stemcellsProvider,
|
||||
DynamicModelProvider<ReleasesModel> releasesProvider
|
||||
) {
|
||||
super("vscode-bosh");
|
||||
BoshModels models = new BoshModels(cloudConfigProvider, stemcellsProvider, releasesProvider);
|
||||
SimpleTextDocumentService documents = getTextDocumentService();
|
||||
this.cliConfig = cliConfig;
|
||||
this.cloudConfigProvider= cloudConfigProvider;
|
||||
this.stemcellsProvider = stemcellsProvider;
|
||||
this.releasesProvider = releasesProvider;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize(SimpleLanguageServer server) throws Exception {
|
||||
Assert.isNull(this.server, "This initializer should only be used once");
|
||||
this.server = server;
|
||||
BoshModels models = new BoshModels(cloudConfigProvider, stemcellsProvider, releasesProvider);
|
||||
SimpleTextDocumentService documents = server.getTextDocumentService();
|
||||
schema = new BoshSchemas(models);
|
||||
YamlAstCache asts = models.asts;
|
||||
ASTTypeCache astTypeCache = models.astTypes;
|
||||
@@ -59,10 +77,10 @@ public class BoshLanguageServer extends SimpleLanguageServer {
|
||||
YamlAssistContextProvider contextProvider = new SchemaBasedYamlAssistContextProvider(schema);
|
||||
enableSnippets(true);
|
||||
YamlCompletionEngine yamlCompletionEngine = new YamlCompletionEngine(structureProvider, contextProvider, YamlCompletionEngineOptions.DEFAULT);
|
||||
completionEngine = createCompletionEngineAdapter(this, yamlCompletionEngine);
|
||||
completionEngine = server.createCompletionEngineAdapter(server, yamlCompletionEngine);
|
||||
HoverInfoProvider infoProvider = new YamlHoverInfoProvider(asts.getAstProvider(true), structureProvider, contextProvider);
|
||||
VscodeHoverEngineAdapter hoverEngine = new VscodeHoverEngineAdapter(this, infoProvider);
|
||||
YamlQuickfixes quickfixes = new YamlQuickfixes(getQuickfixRegistry(), getTextDocumentService(), structureProvider);
|
||||
VscodeHoverEngineAdapter hoverEngine = new VscodeHoverEngineAdapter(server, infoProvider);
|
||||
YamlQuickfixes quickfixes = new YamlQuickfixes(server.getQuickfixRegistry(), server.getTextDocumentService(), structureProvider);
|
||||
YamlSchemaBasedReconcileEngine engine = new YamlSchemaBasedReconcileEngine(asts.getAstProvider(false), schema, quickfixes);
|
||||
engine.setTypeCollector(astTypeCache);
|
||||
documents.onDocumentSymbol(new TypeBasedYamlSymbolHandler(documents, astTypeCache, schema.getDefinitionTypes()));
|
||||
@@ -73,27 +91,27 @@ public class BoshLanguageServer extends SimpleLanguageServer {
|
||||
documents.onCompletion(completionEngine::getCompletions);
|
||||
documents.onCompletionResolve(completionEngine::resolveCompletion);
|
||||
documents.onHover(hoverEngine);
|
||||
documents.onDefinition(new BoshDefintionFinder(this, schema, asts, astTypeCache));
|
||||
documents.onDefinition(new BoshDefintionFinder(server, schema, asts, astTypeCache));
|
||||
|
||||
SimpleWorkspaceService workspace = getWorkspaceService();
|
||||
SimpleWorkspaceService workspace = server.getWorkspaceService();
|
||||
workspace.onDidChangeConfiguraton((Settings settings) -> {
|
||||
cliConfig.handleConfigurationChange(settings);
|
||||
});
|
||||
}
|
||||
|
||||
private void validateOnDocumentChange(IReconcileEngine engine, TextDocument doc) {
|
||||
validateWith(doc.getId(), engine);
|
||||
server.validateWith(doc.getId(), engine);
|
||||
}
|
||||
|
||||
public void enableSnippets(boolean enable) {
|
||||
if (enable) {
|
||||
schema.f.setSnippetProvider(new SchemaBasedSnippetGenerator(schema.getTypeUtil(), this::createSnippetBuilder));
|
||||
schema.f.setSnippetProvider(new SchemaBasedSnippetGenerator(schema.getTypeUtil(), server::createSnippetBuilder));
|
||||
} else {
|
||||
schema.f.setSnippetProvider(null);
|
||||
}
|
||||
}
|
||||
|
||||
public BoshLanguageServer setMaxCompletions(int maxCompletions) {
|
||||
public BoshLanguageServerInitializer setMaxCompletions(int maxCompletions) {
|
||||
completionEngine.setMaxCompletions(maxCompletions);
|
||||
return this;
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
languageserver:
|
||||
extension-id: vscode-bosh
|
||||
@@ -11,7 +11,7 @@
|
||||
package org.springframework.ide.vscode.bosh;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.mockito.Matchers.any;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
import static org.springframework.ide.vscode.languageserver.testharness.Editor.DEDENTED_COMPLETION;
|
||||
@@ -29,6 +29,10 @@ import org.eclipse.lsp4j.Diagnostic;
|
||||
import org.eclipse.lsp4j.DiagnosticSeverity;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||
import org.springframework.ide.vscode.bosh.bootiful.BoshLanguageServerTest;
|
||||
import org.springframework.ide.vscode.bosh.mocks.MockCloudConfigProvider;
|
||||
import org.springframework.ide.vscode.bosh.models.BoshCommandReleasesProvider;
|
||||
import org.springframework.ide.vscode.bosh.models.BoshCommandStemcellsProvider;
|
||||
@@ -37,35 +41,32 @@ import org.springframework.ide.vscode.bosh.models.ReleaseData;
|
||||
import org.springframework.ide.vscode.bosh.models.ReleasesModel;
|
||||
import org.springframework.ide.vscode.bosh.models.StemcellData;
|
||||
import org.springframework.ide.vscode.bosh.models.StemcellsModel;
|
||||
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
|
||||
import org.springframework.ide.vscode.commons.util.ExternalCommand;
|
||||
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.CodeAction;
|
||||
import org.springframework.ide.vscode.languageserver.testharness.Editor;
|
||||
import org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
import com.google.common.collect.ImmutableMultiset;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@BoshLanguageServerTest
|
||||
public class BoshEditorTest {
|
||||
|
||||
LanguageServerHarness<BoshLanguageServer> harness;
|
||||
@Autowired LanguageServerHarness<SimpleLanguageServer> harness;
|
||||
|
||||
private BoshCliConfig cliConfig = new BoshCliConfig();
|
||||
private MockCloudConfigProvider cloudConfigProvider = new MockCloudConfigProvider(cliConfig);
|
||||
private DynamicModelProvider<StemcellsModel> stemcellsProvider = mock(DynamicModelProvider.class);
|
||||
private DynamicModelProvider<ReleasesModel> releasesProvider = mock(DynamicModelProvider.class);
|
||||
@Autowired BoshLanguageServerInitializer serverInitializer;
|
||||
@Autowired BoshCliConfig cliConfig;
|
||||
@Autowired MockCloudConfigProvider cloudConfigProvider;
|
||||
|
||||
@MockBean DynamicModelProvider<StemcellsModel> stemcellsProvider;
|
||||
@MockBean DynamicModelProvider<ReleasesModel> releasesProvider;
|
||||
|
||||
@Before public void setup() throws Exception {
|
||||
harness = new LanguageServerHarness<BoshLanguageServer>(() -> {
|
||||
return new BoshLanguageServer(cliConfig, cloudConfigProvider,
|
||||
(dc) -> stemcellsProvider.getModel(dc),
|
||||
(dc) -> releasesProvider.getModel(dc)
|
||||
)
|
||||
.setMaxCompletions(100);
|
||||
},
|
||||
LanguageId.BOSH_DEPLOYMENT
|
||||
);
|
||||
harness.intialize(null);
|
||||
System.setProperty("lsp.yaml.completions.errors.disable", "false");
|
||||
}
|
||||
@@ -277,7 +278,7 @@ public class BoshEditorTest {
|
||||
}
|
||||
|
||||
@Test public void releasesBlockCompletions() throws Exception {
|
||||
harness.getServerWrapper().enableSnippets(false);
|
||||
serverInitializer.enableSnippets(false);
|
||||
Editor editor = harness.newEditor(
|
||||
"releases:\n" +
|
||||
"- <*>"
|
||||
@@ -360,7 +361,7 @@ public class BoshEditorTest {
|
||||
}
|
||||
|
||||
@Test public void instanceGroupsCompletions() throws Exception {
|
||||
harness.getServerWrapper().enableSnippets(false);
|
||||
serverInitializer.enableSnippets(false);
|
||||
Editor editor = harness.newEditor(
|
||||
"instance_groups:\n" +
|
||||
"- <*>"
|
||||
@@ -544,7 +545,7 @@ public class BoshEditorTest {
|
||||
}
|
||||
|
||||
@Test public void updateBlockCompletions() throws Exception {
|
||||
harness.getServerWrapper().enableSnippets(false);
|
||||
serverInitializer.enableSnippets(false);
|
||||
Editor editor = harness.newEditor(
|
||||
"update:\n" +
|
||||
" <*>"
|
||||
@@ -584,7 +585,7 @@ public class BoshEditorTest {
|
||||
}
|
||||
|
||||
@Test public void variablesBlockCompletions() throws Exception {
|
||||
harness.getServerWrapper().enableSnippets(false);
|
||||
serverInitializer.enableSnippets(false);
|
||||
Editor editor = harness.newEditor(
|
||||
"variables:\n" +
|
||||
"- <*>"
|
||||
@@ -991,7 +992,6 @@ public class BoshEditorTest {
|
||||
|
||||
@Test public void contentAssistStemcellNameNoDirector() throws Exception {
|
||||
Editor editor;
|
||||
stemcellsProvider = mock(DynamicModelProvider.class);
|
||||
when(stemcellsProvider.getModel(any())).thenThrow(new IOException("Couldn't connect to bosh"));
|
||||
editor = harness.newEditor(
|
||||
"stemcells:\n" +
|
||||
@@ -1008,7 +1008,6 @@ public class BoshEditorTest {
|
||||
@SuppressWarnings("unchecked")
|
||||
@Test public void contentAssistStemcellVersionNoDirector() throws Exception {
|
||||
Editor editor;
|
||||
stemcellsProvider = mock(DynamicModelProvider.class);
|
||||
when(stemcellsProvider.getModel(any())).thenThrow(new IOException("Couldn't connect to bosh"));
|
||||
editor = harness.newEditor(
|
||||
"stemcells:\n" +
|
||||
@@ -1023,7 +1022,7 @@ public class BoshEditorTest {
|
||||
|
||||
@Test public void contentAssistStemcellVersionFromDirector() throws Exception {
|
||||
Editor editor;
|
||||
stemcellsProvider = provideStemcellsFrom(
|
||||
provideStemcellsFrom(
|
||||
new StemcellData("ubuntu-agent", "123.4", "ubuntu"),
|
||||
new StemcellData("ubuntu-agent", "222.2", "ubuntu"),
|
||||
new StemcellData("centos-agent", "222.2", "centos"),
|
||||
@@ -1121,7 +1120,7 @@ public class BoshEditorTest {
|
||||
|
||||
@Test public void reconcileStemcellVersionFromDirector() throws Exception {
|
||||
Editor editor;
|
||||
stemcellsProvider = provideStemcellsFrom(
|
||||
provideStemcellsFrom(
|
||||
new StemcellData("ubuntu-agent", "123.4", "ubuntu"),
|
||||
new StemcellData("ubuntu-agent", "222.2", "ubuntu"),
|
||||
new StemcellData("centos-agent", "222.2", "centos"),
|
||||
@@ -1150,8 +1149,8 @@ public class BoshEditorTest {
|
||||
);
|
||||
}
|
||||
|
||||
private DynamicModelProvider<StemcellsModel> provideStemcellsFrom(StemcellData... stemcellData) {
|
||||
return new BoshCommandStemcellsProvider(cliConfig) {
|
||||
private void provideStemcellsFrom(StemcellData... stemcellData) throws Exception {
|
||||
BoshCommandStemcellsProvider stemcells = new BoshCommandStemcellsProvider(cliConfig) {
|
||||
@Override
|
||||
protected String executeCommand(ExternalCommand command) throws Exception {
|
||||
String rows = gson.toJson(stemcellData);
|
||||
@@ -1164,10 +1163,13 @@ public class BoshEditorTest {
|
||||
"}";
|
||||
}
|
||||
};
|
||||
when(stemcellsProvider.getModel(any())).then(inv -> {
|
||||
return stemcells.getModel(null);
|
||||
});
|
||||
}
|
||||
|
||||
@Test public void contentAssistReleaseNameDef() throws Exception {
|
||||
releasesProvider = provideReleasesFrom(
|
||||
provideReleasesFrom(
|
||||
new ReleaseData("foo", "123.4"),
|
||||
new ReleaseData("foo", "222.2"),
|
||||
new ReleaseData("bar", "222.2"),
|
||||
@@ -1185,7 +1187,7 @@ public class BoshEditorTest {
|
||||
}
|
||||
|
||||
@Test public void reconcileReleaseNameDef() throws Exception {
|
||||
releasesProvider = provideReleasesFrom(
|
||||
provideReleasesFrom(
|
||||
new ReleaseData("foo", "123.4"),
|
||||
new ReleaseData("foo", "222.2"),
|
||||
new ReleaseData("bar", "222.2"),
|
||||
@@ -1205,7 +1207,7 @@ public class BoshEditorTest {
|
||||
}
|
||||
|
||||
@Test public void contentAssistReleaseVersion() throws Exception {
|
||||
releasesProvider = provideReleasesFrom(
|
||||
provideReleasesFrom(
|
||||
new ReleaseData("foo", "123.4"),
|
||||
new ReleaseData("foo", "222.2"),
|
||||
new ReleaseData("bar", "222.2"),
|
||||
@@ -1264,7 +1266,7 @@ public class BoshEditorTest {
|
||||
|
||||
@Test public void reconcileReleaseVersion() throws Exception {
|
||||
Editor editor;
|
||||
releasesProvider = provideReleasesFrom(
|
||||
provideReleasesFrom(
|
||||
new ReleaseData("foo", "123.4"),
|
||||
new ReleaseData("foo", "222.2"),
|
||||
new ReleaseData("bar", "222.2"),
|
||||
@@ -1319,8 +1321,8 @@ public class BoshEditorTest {
|
||||
}
|
||||
|
||||
|
||||
private DynamicModelProvider<ReleasesModel> provideReleasesFrom(ReleaseData... stemcellData) {
|
||||
return new BoshCommandReleasesProvider(cliConfig) {
|
||||
private void provideReleasesFrom(ReleaseData... stemcellData) throws Exception {
|
||||
BoshCommandReleasesProvider releases = new BoshCommandReleasesProvider(cliConfig) {
|
||||
@Override
|
||||
protected String executeCommand(ExternalCommand command) throws Exception {
|
||||
String rows = gson.toJson(stemcellData);
|
||||
@@ -1333,6 +1335,9 @@ public class BoshEditorTest {
|
||||
"}";
|
||||
}
|
||||
};
|
||||
when(releasesProvider.getModel(any())).then(in -> {
|
||||
return releases.getModel(null);
|
||||
});
|
||||
}
|
||||
|
||||
@Test public void contentAssistVMtype() throws Exception {
|
||||
|
||||
@@ -20,24 +20,36 @@ import java.nio.file.Paths;
|
||||
import org.eclipse.lsp4j.InitializeResult;
|
||||
import org.eclipse.lsp4j.TextDocumentSyncKind;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||
import org.springframework.ide.vscode.bosh.bootiful.BoshLanguageServerTest;
|
||||
import org.springframework.ide.vscode.bosh.mocks.MockCloudConfigProvider;
|
||||
import org.springframework.ide.vscode.bosh.models.CloudConfigModel;
|
||||
import org.springframework.ide.vscode.bosh.models.DynamicModelProvider;
|
||||
import org.springframework.ide.vscode.bosh.models.ReleasesModel;
|
||||
import org.springframework.ide.vscode.bosh.models.StemcellsModel;
|
||||
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
|
||||
import org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public class BoshLanguageServerTest {
|
||||
@RunWith(SpringRunner.class)
|
||||
@BoshLanguageServerTest
|
||||
public class BoshLanguageServerInitializerTest {
|
||||
|
||||
public static File getTestResource(String name) throws URISyntaxException {
|
||||
return Paths.get(BoshLanguageServerTest.class.getResource(name).toURI()).toFile();
|
||||
return Paths.get(BoshLanguageServerInitializerTest.class.getResource(name).toURI()).toFile();
|
||||
}
|
||||
|
||||
private BoshCliConfig cliConfig = new BoshCliConfig();
|
||||
@MockBean DynamicModelProvider<CloudConfigModel> cloudConfigProvider;
|
||||
@MockBean DynamicModelProvider<StemcellsModel> stemcellsProvider;
|
||||
@MockBean DynamicModelProvider<ReleasesModel> releasesProvider;
|
||||
|
||||
@Autowired
|
||||
LanguageServerHarness<SimpleLanguageServer> harness;
|
||||
|
||||
@Test
|
||||
public void createAndInitializeServerWithWorkspace() throws Exception {
|
||||
LanguageServerHarness harness = new LanguageServerHarness(() ->
|
||||
new BoshLanguageServer(cliConfig, new MockCloudConfigProvider(cliConfig), mock(DynamicModelProvider.class), mock(DynamicModelProvider.class))
|
||||
);
|
||||
File workspaceRoot = getTestResource("/workspace/");
|
||||
assertExpectedInitResult(harness.intialize(workspaceRoot));
|
||||
}
|
||||
@@ -45,9 +57,6 @@ public class BoshLanguageServerTest {
|
||||
@Test
|
||||
public void createAndInitializeServerWithoutWorkspace() throws Exception {
|
||||
File workspaceRoot = null;
|
||||
LanguageServerHarness harness = new LanguageServerHarness(() ->
|
||||
new BoshLanguageServer(cliConfig, new MockCloudConfigProvider(cliConfig), mock(DynamicModelProvider.class), mock(DynamicModelProvider.class))
|
||||
);
|
||||
assertExpectedInitResult(harness.intialize(workspaceRoot));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (c) 2018 Pivotal, Inc.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Pivotal, Inc. - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.springframework.ide.vscode.bosh.bootiful;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
|
||||
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
|
||||
import org.springframework.boot.test.autoconfigure.OverrideAutoConfiguration;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.ide.vscode.bosh.BoshLanguageServerBootApp;
|
||||
import org.springframework.ide.vscode.languageserver.starter.LanguageServerAutoConf;
|
||||
import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.test.annotation.DirtiesContext.ClassMode;
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@OverrideAutoConfiguration(enabled=false)
|
||||
@ImportAutoConfiguration(classes=LanguageServerAutoConf.class)
|
||||
@SpringBootTest(classes={
|
||||
BoshLanguageServerBootApp.class,
|
||||
BoshLanguageServerTestConfiguration.class
|
||||
})
|
||||
@DirtiesContext(classMode=ClassMode.AFTER_EACH_TEST_METHOD)
|
||||
public @interface BoshLanguageServerTest {
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (c) 2018 Pivotal, Inc.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Pivotal, Inc. - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.springframework.ide.vscode.bosh.bootiful;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.ide.vscode.bosh.BoshCliConfig;
|
||||
import org.springframework.ide.vscode.bosh.mocks.MockCloudConfigProvider;
|
||||
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
|
||||
import org.springframework.ide.vscode.commons.util.text.LanguageId;
|
||||
import org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness;
|
||||
|
||||
@Configuration
|
||||
public class BoshLanguageServerTestConfiguration {
|
||||
|
||||
@Bean MockCloudConfigProvider cloudConfig(BoshCliConfig cliConfig) {
|
||||
return new MockCloudConfigProvider(cliConfig);
|
||||
}
|
||||
|
||||
@Bean public LanguageServerHarness<SimpleLanguageServer> harness(SimpleLanguageServer server) throws Exception {
|
||||
LanguageServerHarness<SimpleLanguageServer> harness = new LanguageServerHarness<>(
|
||||
()-> server,
|
||||
LanguageId.BOSH_DEPLOYMENT
|
||||
);
|
||||
return harness;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
spring.main.banner-mode=off
|
||||
@@ -12,8 +12,6 @@
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.ide.vscode</groupId>
|
||||
|
||||
@@ -10,8 +10,6 @@
|
||||
*******************************************************************************/
|
||||
package org.springframework.ide.vscode.commons.languageserver.composable;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.ide.vscode.commons.languageserver.completion.ICompletionEngine;
|
||||
import org.springframework.ide.vscode.commons.languageserver.completion.VscodeCompletionEngineAdapter;
|
||||
import org.springframework.ide.vscode.commons.languageserver.hover.VscodeHoverEngineAdapter;
|
||||
|
||||
Reference in New Issue
Block a user