Module: RubyLsp::TestHelper
- Defined in:
- lib/ruby_lsp/test_helper.rb
Overview
@requires_ancestor: Kernel
Defined Under Namespace
Classes: TestError
Instance Method Summary collapse
- #pop_log_notification(message_queue, type) ⇒ Object
- #pop_message(outgoing_queue, &block) ⇒ Object
-
#pop_result(server) ⇒ Object
: (RubyLsp::Server server) -> RubyLsp::Result.
-
#with_server(source = nil, uri = Kernel.URI("file:///fake.rb"), stub_no_typechecker: false, load_addons: true, &block) ⇒ Object
: [T] (?String? source, ?URI::Generic uri, ?stub_no_typechecker: bool, ?load_addons: bool) { (RubyLsp::Server server, URI::Generic uri) -> T } -> T.
Instance Method Details
#pop_log_notification(message_queue, type) ⇒ Object
60 61 62 63 64 65 66 |
# File 'lib/ruby_lsp/test_helper.rb', line 60 def pop_log_notification(, type) log = .pop return log if log.params.type == type log = .pop until log.params.type == type log end |
#pop_message(outgoing_queue, &block) ⇒ Object
68 69 70 71 72 73 74 |
# File 'lib/ruby_lsp/test_helper.rb', line 68 def (outgoing_queue, &block) = outgoing_queue.pop return if block.call() = outgoing_queue.pop until block.call() end |
#pop_result(server) ⇒ Object
: (RubyLsp::Server server) -> RubyLsp::Result
49 50 51 52 53 54 55 56 57 58 |
# File 'lib/ruby_lsp/test_helper.rb', line 49 def pop_result(server) result = server.pop_response result = server.pop_response until result.is_a?(RubyLsp::Result) || result.is_a?(RubyLsp::Error) if result.is_a?(RubyLsp::Error) raise TestError, "Failed to execute request #{result.message}" else result end end |
#with_server(source = nil, uri = Kernel.URI("file:///fake.rb"), stub_no_typechecker: false, load_addons: true, &block) ⇒ Object
: [T] (?String? source, ?URI::Generic uri, ?stub_no_typechecker: bool, ?load_addons: bool) { (RubyLsp::Server server, URI::Generic uri) -> T } -> T
12 13 14 15 16 17 18 19 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 |
# File 'lib/ruby_lsp/test_helper.rb', line 12 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.({ initializationOptions: { experimentalFeaturesEnabled: true } }) server.global_state.instance_variable_set(:@has_type_checker, false) if stub_no_typechecker language_id = uri.to_s.end_with?(".erb") ? "erb" : "ruby" if source server.({ method: "textDocument/didOpen", params: { textDocument: { uri: uri, text: source, version: 1, languageId: language_id, }, }, }) server.global_state.index.index_single(uri, source) end server.load_addons(include_project_addons: false) if load_addons begin block.call(server, uri) ensure if load_addons RubyLsp::Addon.addons.each(&:deactivate) RubyLsp::Addon.addons.clear end server.run_shutdown end end |