@Test public void testInitialize_rootPathRootUri() throws Exception { InitializeParams rootPathParams = new InitializeParams(); rootPathParams.setRootPath(folder.getRoot().toPath().toString()); InitializeParams rootUriParams = new InitializeParams(); rootUriParams.setRootUri(folder.getRoot().toURI().toString()); GroovyLanguageServer pathServer = new GroovyLanguageServer(Mockito.mock(LanguageServerState.class), Mockito.mock(TextDocumentService.class), Mockito.mock(WorkspaceService.class)); pathServer.initialize(rootPathParams); GroovyLanguageServer uriServer = new GroovyLanguageServer(Mockito.mock(LanguageServerState.class), Mockito.mock(TextDocumentService.class), Mockito.mock(WorkspaceService.class)); uriServer.initialize(rootUriParams); assertThat(pathServer.getWorkspaceRoot()).isEqualTo(uriServer.getWorkspaceRoot()); }
@Override public CompletableFuture<Object> shutdown() { deleteDirectory(targetDirectory.toFile()); deleteDirectory(changedFilesDirectory.toFile()); return CompletableFuture.completedFuture(new Object()); }
@Before public void before() { server = new GroovyLanguageServer(Mockito.mock(LanguageServerState.class), Mockito.mock(TextDocumentService.class), Mockito.mock(WorkspaceService.class)); }
@Test public void testInitialize_absoluteWorkspacePath() throws InterruptedException, ExecutionException { InitializeParams initializeParams = getInitializeParams(Optional.empty()); InitializeResult result = server.initialize(initializeParams).get(); assertInitializeResultIsCorrect(folder.getRoot().toPath().toAbsolutePath().normalize(), result); // Test normalization initializeParams = getInitializeParams(Optional.of( folder.getRoot().toPath().toAbsolutePath().toString() + "/somethingelse/..")); result = server.initialize(initializeParams).get(); assertInitializeResultIsCorrect(folder.getRoot().toPath().toAbsolutePath().normalize(), result); }
private void assertInitializeResultIsCorrect(Path expectedWorkspaceRoot, InitializeResult result) { assertThat(server.getWorkspaceRoot()).isEqualTo(expectedWorkspaceRoot); assertThat(result.getCapabilities().getTextDocumentSync().getLeft()) .isEqualTo(TextDocumentSyncKind.Incremental); assertThat(result.getCapabilities().getDocumentSymbolProvider()).isTrue(); assertThat(result.getCapabilities().getWorkspaceSymbolProvider()).isTrue(); }
private void createAndLaunchLanguageServer(final InputStream in, final OutputStream out) { new Thread(() -> { LanguageServerState state = new DefaultLanguageServerState(); actualServer = new GroovyLanguageServer( state, new DefaultTextDocumentService(state), new DefaultWorkspaceService(state)); Launcher<LanguageClient> launcher = LSPLauncher.createServerLauncher( actualServer, in, out, false, new PrintWriter(System.out)); launcher.startListening(); }).start(); }
@Test public void testInitialize_uriWorkspacePath() throws InterruptedException, ExecutionException { InitializeParams params = getInitializeParams(Optional.empty()); InitializeResult result = server.initialize(params).get(); assertInitializeResultIsCorrect(folder.getRoot().toPath().toAbsolutePath().normalize(), result); // Test normalization params = getInitializeParams(Optional.of( folder.getRoot().toPath().toAbsolutePath().toString() + "/somethingelse/..")); result = server.initialize(params).get(); assertInitializeResultIsCorrect(folder.getRoot().toPath().toAbsolutePath().normalize(), result); }
public static void main(String[] args) { LanguageServerState state = new DefaultLanguageServerState(); LanguageServer server = new GroovyLanguageServer( state, new DefaultTextDocumentService(state), new DefaultWorkspaceService(state)); StreamLanguageServerLauncher launcher = new StreamLanguageServerLauncher(server, System.in, System.out); launcher.launch(); }
@Test public void testInitialize_relativeWorkspacePath() throws InterruptedException, ExecutionException, IOException { File workspaceRoot = Paths.get("").toAbsolutePath().resolve("test-directory-to-be-deleted").toFile(); // Create a directory in our working directory // If this fails, make sure ./groovy-language-server/test-directory-to-be-deleted doesn't exist. assertThat(workspaceRoot.mkdir()).isTrue(); InitializeParams params = getInitializeParams(Optional.of("test-directory-to-be-deleted")); InitializeResult result = server.initialize(params).get(); assertInitializeResultIsCorrect(workspaceRoot.toPath(), result); // Test normalization params = getInitializeParams(Optional.of("./test-directory-to-be-deleted")); result = server.initialize(params).get(); assertInitializeResultIsCorrect(workspaceRoot.toPath(), result); params = getInitializeParams(Optional.of("somethingelse/../something/../test-directory-to-be-deleted")); result = server.initialize(params).get(); assertInitializeResultIsCorrect(workspaceRoot.toPath(), result); // Delete the directory we created in our working directory assertThat(workspaceRoot.delete()).isTrue(); }
@Test public void testInitialize_noRootPathOrRootUri() throws Exception { InitializeParams params = new InitializeParams(); assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> server.initialize(params)); }