Add support to test harness for checking highlights.

This commit is contained in:
Kris De Volder
2017-10-24 12:52:49 -07:00
parent 5652e8402e
commit c71d4cbf02
7 changed files with 115 additions and 13 deletions

View File

@@ -127,7 +127,7 @@ public class BootJavaLanguageServer extends SimpleLanguageServer {
projectFinder = serverParams.projectFinder;
projectObserver = serverParams.projectObserver;
liveHoverWatchdog = new SpringLiveHoverWatchdog(this, hoverInfoProvider, serverParams.runningAppProvider, projectFinder, projectObserver);
liveHoverWatchdog = new SpringLiveHoverWatchdog(this, hoverInfoProvider, serverParams.runningAppProvider, projectFinder, projectObserver, serverParams.watchDogInterval);
documents.onDidChangeContent(params -> {
TextDocument doc = params.getDocument();
if (testHightlighter != null) {

View File

@@ -10,10 +10,12 @@
*******************************************************************************/
package org.springframework.ide.vscode.boot.java;
import java.time.Duration;
import java.util.Arrays;
import org.springframework.ide.vscode.boot.java.handlers.RunningAppProvider;
import org.springframework.ide.vscode.boot.java.utils.BootProjectUtil;
import org.springframework.ide.vscode.boot.java.utils.SpringLiveHoverWatchdog;
import org.springframework.ide.vscode.boot.metadata.DefaultSpringPropertyIndexProvider;
import org.springframework.ide.vscode.boot.metadata.SpringPropertyIndexProvider;
import org.springframework.ide.vscode.commons.gradle.GradleCore;
@@ -36,17 +38,21 @@ public class BootJavaLanguageServerParams {
public final ProjectObserver projectObserver;
public final SpringPropertyIndexProvider indexProvider;
public final RunningAppProvider runningAppProvider;
public final Duration watchDogInterval;
public BootJavaLanguageServerParams(
JavaProjectFinder projectFinder,
ProjectObserver projectObserver,
SpringPropertyIndexProvider indexProvider,
RunningAppProvider runningAppProvider) {
RunningAppProvider runningAppProvider,
Duration watchDogInterval
) {
super();
this.projectFinder = projectFinder;
this.projectObserver = projectObserver;
this.indexProvider = indexProvider;
this.runningAppProvider = runningAppProvider;
this.watchDogInterval = watchDogInterval;
}
public static LSFactory<BootJavaLanguageServerParams> createDefault() {
@@ -66,7 +72,8 @@ public class BootJavaLanguageServerParams {
javaProjectFinder.filter(BootProjectUtil::isBootProject),
projectObserver,
new DefaultSpringPropertyIndexProvider(javaProjectFinder, projectObserver),
RunningAppProvider.DEFAULT
RunningAppProvider.DEFAULT,
SpringLiveHoverWatchdog.DEFAULT_INTERVAL
);
};
}

View File

@@ -10,6 +10,7 @@
*******************************************************************************/
package org.springframework.ide.vscode.boot.java.utils;
import java.time.Duration;
import java.util.Arrays;
import java.util.Set;
import java.util.Timer;
@@ -35,8 +36,10 @@ import org.springframework.ide.vscode.commons.util.text.TextDocument;
*/
public class SpringLiveHoverWatchdog {
private static final int POLLING_INTERVAL_MILLISECONDS = 5000;
public static final Duration DEFAULT_INTERVAL = Duration.ofMillis(5000);
private final long POLLING_INTERVAL_MILLISECONDS;
private final Set<String> watchedDocs;
private final SimpleLanguageServer server;
private final BootJavaHoverProvider hoverProvider;
@@ -61,7 +64,15 @@ public class SpringLiveHoverWatchdog {
return uris.anyMatch(uri -> projectFinder.find(new TextDocumentIdentifier(uri)).isPresent());
}
public SpringLiveHoverWatchdog(SimpleLanguageServer server, BootJavaHoverProvider hoverProvider, RunningAppProvider runningAppProvider, JavaProjectFinder projectFinder, ProjectObserver projectChanges) {
public SpringLiveHoverWatchdog(
SimpleLanguageServer server,
BootJavaHoverProvider hoverProvider,
RunningAppProvider runningAppProvider,
JavaProjectFinder projectFinder,
ProjectObserver projectChanges,
Duration pollingInterval
) {
this.POLLING_INTERVAL_MILLISECONDS = pollingInterval == null ? DEFAULT_INTERVAL.toMillis() : pollingInterval.toMillis();
this.server = server;
this.hoverProvider = hoverProvider;
this.runningAppProvider = runningAppProvider;

View File

@@ -10,6 +10,8 @@
*******************************************************************************/
package org.springframework.ide.vscode.boot.java.profile;
import java.time.Duration;
import org.junit.Before;
import org.junit.Test;
import org.springframework.ide.vscode.commons.util.text.LanguageId;
@@ -31,6 +33,7 @@ public class ActiveProfilesHoverTest {
harness = BootLanguageServerHarness.builder()
.mockDefaults()
.runningAppProvider(mockAppProvider.provider)
.watchDogInterval(Duration.ofMillis(100))
.build();
harness.useProject(projects.mavenProject("empty-boot-15-web-app"));
harness.intialize(null);
@@ -60,6 +63,10 @@ public class ActiveProfilesHoverTest {
editor.assertHoverContains("@Profile", "local-profile");
editor.assertHoverContains("@Profile", "foo.bar.RunningApp");
editor.assertHoverContains("@Profile", "22022");
editor.assertHighlights(
"@Profile(\"local\")"
);
}

View File

@@ -10,6 +10,8 @@
*******************************************************************************/
package org.springframework.ide.vscode.project.harness;
import java.time.Duration;
import org.junit.Assert;
import org.springframework.ide.vscode.boot.java.BootJavaLanguageServer;
import org.springframework.ide.vscode.boot.java.BootJavaLanguageServerParams;
@@ -46,6 +48,7 @@ public class BootLanguageServerHarness extends LanguageServerHarness<BootJavaLan
private SpringPropertyIndexProvider indexProvider = null;
private RunningAppProvider runningAppProvider = null;
private PropertyIndexHarness indexHarness = null;
private Duration watchDogInterval = null;
public BootLanguageServerHarness build() throws Exception {
BootLanguageServerHarness harness = new BootLanguageServerHarness(this);
@@ -75,6 +78,11 @@ public class BootLanguageServerHarness extends LanguageServerHarness<BootJavaLan
this.indexProvider = propertyIndexProvider;
return this;
}
public Builder watchDogInterval(Duration watchDogInterval) {
this.watchDogInterval = watchDogInterval;
return this;
}
}
/**
@@ -88,7 +96,8 @@ public class BootLanguageServerHarness extends LanguageServerHarness<BootJavaLan
builder.projectFinder==null?defaults.projectFinder:builder.projectFinder,
builder.projectObserver==null?defaults.projectObserver:builder.projectObserver,
builder.indexProvider==null?defaults.indexProvider:builder.indexProvider,
builder.runningAppProvider==null?defaults.runningAppProvider:builder.runningAppProvider
builder.runningAppProvider==null?defaults.runningAppProvider:builder.runningAppProvider,
builder.watchDogInterval==null?defaults.watchDogInterval:builder.watchDogInterval
);
};
return new BootJavaLanguageServer(params);