Sha256: 49cb52c9328d1febe17596ee0023cdc6ef92c1b20615e98332748c5a8b708006

Contents?: true

Size: 1.55 KB

Versions: 7

Compression:

Stored size: 1.55 KB

Contents

#!/usr/bin/env ruby
# frozen_string_literal: true

# This executable checks if all automatic LSP requests run successfully on every Ruby file under the current directory

require "sorbet-runtime"

begin
  T::Configuration.default_checked_level = :never
  T::Configuration.call_validation_error_handler = ->(*) {}
  T::Configuration.inline_type_error_handler = ->(*) {}
  T::Configuration.sig_validation_error_handler = ->(*) {}
rescue
  nil
end

require_relative "../lib/ruby_lsp/internal"

RubyLsp::Extension.load_extensions

T::Utils.run_all_sig_blocks

files = Dir.glob("#{Dir.pwd}/**/*.rb")

puts "Verifying that all automatic LSP requests execute successfully. This may take a while..."

errors = {}
store = RubyLsp::Store.new
message_queue = Thread::Queue.new
executor = RubyLsp::Executor.new(store, message_queue)

files.each_with_index do |file, index|
  uri = "file://#{file}"
  store.set(uri: uri, source: File.read(file), version: 1)

  # Executing any of the automatic requests will execute all of them, so here we just pick one
  result = executor.execute({
    method: "textDocument/documentSymbol",
    params: { textDocument: { uri: uri } },
  })

  error = result.error
  errors[file] = error if error
ensure
  store.delete(uri)
  print("\033[M\033[0KCompleted #{index + 1}/#{files.length}") unless ENV["CI"]
end

puts "\n"
message_queue.close

if errors.empty?
  puts "All automatic LSP requests executed successfully"
  exit
end

puts <<~ERRORS
  Errors while executing requests:

  #{errors.map { |file, error| "#{file}: #{error.message}" }.join("\n")}
ERRORS
exit!

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
ruby-lsp-0.7.6 exe/ruby-lsp-check
ruby-lsp-0.7.5 exe/ruby-lsp-check
ruby-lsp-0.7.4 exe/ruby-lsp-check
ruby-lsp-0.7.3 exe/ruby-lsp-check
ruby-lsp-0.7.2 exe/ruby-lsp-check
ruby-lsp-0.7.1 exe/ruby-lsp-check
ruby-lsp-0.7.0 exe/ruby-lsp-check