with_server(source = nil, uri = Kernel.URI("file:///fake.rb"), stub_no_typechecker: false, load_addons: true, &block)
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(:typechecker).returns(false) if stub_no_typechecker
if source
server.process_message({
method: "textDocument/didOpen",
params: {
textDocument: {
uri: uri,
text: source,
version: 1,
},
},
})
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