private static LanguageServerTarget CreateLanguageServer(Stream inputStream, Stream outputStream, TestWorkspace workspace, WellKnownLspServerKinds serverKind) { var listenerProvider = workspace.ExportProvider.GetExportedValue <IAsynchronousOperationListenerProvider>(); var capabilitiesProvider = workspace.ExportProvider.GetExportedValue <ExperimentalCapabilitiesProvider>(); var servicesProvider = workspace.ExportProvider.GetExportedValue <CSharpVisualBasicLspServiceProvider>(); var jsonRpc = new JsonRpc(new HeaderDelimitedMessageHandler(outputStream, inputStream, CreateJsonMessageFormatter())) { ExceptionStrategy = ExceptionProcessing.ISerializable, }; var languageServer = new LanguageServerTarget( servicesProvider, jsonRpc, capabilitiesProvider, listenerProvider, NoOpLspLogger.Instance, ProtocolConstants.RoslynLspLanguages, serverKind); jsonRpc.StartListening(); return(languageServer); }
private TestLspServer(TestWorkspace testWorkspace, Dictionary <string, IList <LSP.Location> > locations, LSP.ClientCapabilities clientCapabilities, WellKnownLspServerKinds serverKind) { TestWorkspace = testWorkspace; ClientCapabilities = clientCapabilities; _locations = locations; var(clientStream, serverStream) = FullDuplexStream.CreatePair(); _languageServer = CreateLanguageServer(serverStream, serverStream, TestWorkspace, serverKind); _clientRpc = new JsonRpc(new HeaderDelimitedMessageHandler(clientStream, clientStream, CreateJsonMessageFormatter())) { ExceptionStrategy = ExceptionProcessing.ISerializable, }; _clientRpc.StartListening(); var workspaceWaiter = GetWorkspaceWaiter(testWorkspace); Assert.False(workspaceWaiter.HasPendingWork); // Clear any LSP solutions that were created when the workspace was initialized. // This ensures that the workspace manager starts with a clean slate. GetManagerAccessor().ResetLspSolutions(); }