Merge branch 'master' of github.com:spring-projects/sts4
This commit is contained in:
@@ -41,7 +41,7 @@ public class ExceptionUtil {
|
||||
* @return the throwable instance of the given type, or null if nothing found.
|
||||
*/
|
||||
public static Throwable getThrowable(Throwable e, Class<? extends Throwable> toLookFor) {
|
||||
if (e.getClass().equals(toLookFor)) {
|
||||
if (toLookFor.isAssignableFrom(e.getClass())) {
|
||||
return e;
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ public class ExceptionUtil {
|
||||
while (parent != null && parent != e) {
|
||||
cause = parent;
|
||||
parent = cause.getCause();
|
||||
if (cause.getClass().equals(toLookFor)) {
|
||||
if (toLookFor.isAssignableFrom(cause.getClass())) {
|
||||
return cause;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,6 +55,17 @@ public class BasicCfClientHarness {
|
||||
return paramsProvider;
|
||||
}
|
||||
|
||||
public void addServiceInstances(String... serviceInstances) {
|
||||
List<CFServiceInstance> services = null;
|
||||
if (serviceInstances != null) {
|
||||
services = new ArrayList<CFServiceInstance>();
|
||||
for (String name : serviceInstances) {
|
||||
services.add(createServiceInstance(name));
|
||||
}
|
||||
}
|
||||
getBasicClientFactory().getExistingClientInHarness().setServices(services);
|
||||
}
|
||||
|
||||
public void addBuildpacks(String... buildpacks) {
|
||||
|
||||
// Allow testing of null condition when vscode asks for buildpacks from
|
||||
@@ -71,6 +82,13 @@ public class BasicCfClientHarness {
|
||||
getBasicClientFactory().getExistingClientInHarness().setBuildPacks(asList);
|
||||
}
|
||||
|
||||
protected CFServiceInstance createServiceInstance(String name) {
|
||||
return CFEntities.createServiceInstance(name, null, null, null, null, null);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////
|
||||
// "Mocked" CF client types
|
||||
|
||||
public static final class BasicCFClientFactory implements CloudFoundryClientFactory {
|
||||
|
||||
/*
|
||||
|
||||
@@ -10,11 +10,27 @@
|
||||
*******************************************************************************/
|
||||
package org.springframework.ide.vscode.manifest.yaml;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import org.eclipse.lsp4j.Diagnostic;
|
||||
import org.eclipse.lsp4j.DiagnosticSeverity;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.springframework.ide.vscode.languageserver.testharness.Editor;
|
||||
import org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness;
|
||||
|
||||
/**
|
||||
* Basic CF tests for services and buildpacks, using a basic CF client that
|
||||
* requires no actual CF connection.
|
||||
*
|
||||
* <p/>
|
||||
* This is an alternative to using mockito, and also tests that the
|
||||
* vscode-manifest framework can take any clients, including the basic one used
|
||||
* in this test, and still function as expected for CF content assist and
|
||||
* reconcile
|
||||
*
|
||||
*/
|
||||
public class ManifestYamlEditorCFBasicTest {
|
||||
LanguageServerHarness harness;
|
||||
BasicCfClientHarness basicCfClientHarness = new BasicCfClientHarness();
|
||||
@@ -31,59 +47,71 @@ public class ManifestYamlEditorCFBasicTest {
|
||||
basicCfClientHarness.addBuildpacks("java_buildpack");
|
||||
assertContainsCompletions("buildpack: <*>", "buildpack: java_buildpack<*>");
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void contentAssistDoesNotContainBuildpack() throws Exception {
|
||||
basicCfClientHarness.addBuildpacks("java_buildpack");
|
||||
assertDoesNotContainCompletions("buildpack: <*>", "buildpack: wrong_buildpack<*>");
|
||||
}
|
||||
|
||||
// @Test
|
||||
// public void contentAssistServices() throws Exception {
|
||||
// basicCfClientHarness.addServices("mysql");
|
||||
// assertContainsCompletions("services:\n" + " - <*>", "mysql");
|
||||
// }
|
||||
//
|
||||
// @Test
|
||||
// public void reconcileCFService() throws Exception {
|
||||
// basicCfClientHarness.addServices("myservice");
|
||||
// Editor editor = harness.newEditor("applications:\n" //
|
||||
// + "- name: foo\n" //
|
||||
// + " services:\n" //
|
||||
// + " - myservice\n" //
|
||||
// );
|
||||
// // Should have no problems
|
||||
// editor.assertProblems(/* none */);
|
||||
// }
|
||||
//
|
||||
// @Test
|
||||
// public void reconcileShowsWarningOnUnknownService() throws Exception {
|
||||
// basicCfClientHarness.addServices("myservice");
|
||||
// Editor editor = harness.newEditor("applications:\n" //
|
||||
// + "- name: foo\n" //
|
||||
// + " services:\n" //
|
||||
// + " - bad-service\n" //
|
||||
//
|
||||
// );
|
||||
// editor.assertProblems("bad-service|There is no service instance called");
|
||||
//
|
||||
// Diagnostic problem = editor.assertProblem("bad-service");
|
||||
// assertEquals(DiagnosticSeverity.Warning, problem.getSeverity());
|
||||
// }
|
||||
//
|
||||
// @Test
|
||||
// public void reconcileShowsWarningOnEmptyServices() throws Exception {
|
||||
// // Add empty list of services
|
||||
// basicCfClientHarness.addServices();
|
||||
// Editor editor = harness.newEditor("applications:\n" //
|
||||
// + "- name: foo\n" //
|
||||
// + " services:\n" //
|
||||
// + " - bad-service\n");//
|
||||
// editor.assertProblems("bad-service|There is no service instance called");
|
||||
//
|
||||
// Diagnostic problem = editor.assertProblem("bad-service");
|
||||
// assertEquals(DiagnosticSeverity.Warning, problem.getSeverity());
|
||||
// }
|
||||
@Test
|
||||
public void contentAssistServices() throws Exception {
|
||||
basicCfClientHarness.addServiceInstances("mysql");
|
||||
assertContainsCompletions("services:\n" + " - <*>", "mysql");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void contentAssistDoesNotContainServices() throws Exception {
|
||||
basicCfClientHarness.addServiceInstances("mysql");
|
||||
assertDoesNotContainCompletions("services:\n" + " - <*>", "wrongsql");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void contentAssistDoesNotContainServicesEmptyServices() throws Exception {
|
||||
basicCfClientHarness.addServiceInstances(/*no services*/);
|
||||
assertDoesNotContainCompletions("services:\n" + " - <*>", "mysql");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void reconcileCFService() throws Exception {
|
||||
basicCfClientHarness.addServiceInstances("myservice");
|
||||
Editor editor = harness.newEditor("applications:\n" //
|
||||
+ "- name: foo\n" //
|
||||
+ " services:\n" //
|
||||
+ " - myservice\n" //
|
||||
);
|
||||
// Should have no problems
|
||||
editor.assertProblems(/* none */);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void reconcileShowsWarningOnUnknownService() throws Exception {
|
||||
basicCfClientHarness.addServiceInstances("myservice");
|
||||
Editor editor = harness.newEditor("applications:\n" //
|
||||
+ "- name: foo\n" //
|
||||
+ " services:\n" //
|
||||
+ " - bad-service\n" //
|
||||
|
||||
);
|
||||
editor.assertProblems("bad-service|There is no service instance called");
|
||||
|
||||
Diagnostic problem = editor.assertProblem("bad-service");
|
||||
assertEquals(DiagnosticSeverity.Warning, problem.getSeverity());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void reconcileShowsWarningOnEmptyServices() throws Exception {
|
||||
// Add empty list of services
|
||||
basicCfClientHarness.addServiceInstances();
|
||||
Editor editor = harness.newEditor("applications:\n" //
|
||||
+ "- name: foo\n" //
|
||||
+ " services:\n" //
|
||||
+ " - bad-service\n");//
|
||||
editor.assertProblems("bad-service|There is no service instance called");
|
||||
|
||||
Diagnostic problem = editor.assertProblem("bad-service");
|
||||
assertEquals(DiagnosticSeverity.Warning, problem.getSeverity());
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -91,7 +119,7 @@ public class ManifestYamlEditorCFBasicTest {
|
||||
Editor editor = harness.newEditor(textBefore);
|
||||
editor.assertContainsCompletions(textAfter);
|
||||
}
|
||||
|
||||
|
||||
private void assertDoesNotContainCompletions(String textBefore, String... notToBeFound) throws Exception {
|
||||
Editor editor = harness.newEditor(textBefore);
|
||||
editor.assertDoesNotContainCompletions(notToBeFound);
|
||||
|
||||
Reference in New Issue
Block a user