20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/ruby_lsp/test_helper.rb', line 20
def with_server(source = nil, uri = Kernel.URI("file:///fake.rb"), stub_no_typechecker: false, load_addons: true,
&block)
server = RubyLsp::Server.new(test_mode: true)
server.global_state.stubs(:has_type_checker).returns(false) if stub_no_typechecker
server.global_state.apply_options({ initializationOptions: { experimentalFeaturesEnabled: true } })
language_id = uri.to_s.end_with?(".erb") ? "erb" : "ruby"
if source
server.process_message({
method: "textDocument/didOpen",
params: {
textDocument: {
uri: uri,
text: source,
version: 1,
languageId: language_id,
},
},
})
end
server.global_state.index.index_single(
RubyIndexer::IndexablePath.new(nil, T.must(uri.to_standardized_path)),
source,
)
server.load_addons if load_addons
block.call(server, uri)
ensure
if load_addons
RubyLsp::Addon.addons.each(&:deactivate)
RubyLsp::Addon.addons.clear
end
T.must(server).run_shutdown
end
|