Sha256: 3d7cb46eb4ec426a046c7c02f0ccf713077a64e9c19317dac1e9cd8c274b5cdb

Contents?: true

Size: 1.97 KB

Versions: 8

Compression:

Stored size: 1.97 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 "ruby_lsp/load_sorbet"

$LOAD_PATH.unshift(File.expand_path("../lib", __dir__))
require "ruby_lsp/internal"

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 = {}
server = RubyLsp::Server.new(test_mode: true)

files.each_with_index do |file, index|
  uri = URI("file://#{file}")
  server.process_message({
    method: "textDocument/didOpen",
    params: { textDocument: { uri: uri, text: File.read(file), version: 1 } },
  })

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

  result = server.pop_response
  errors[file] = result.message if result.is_a?(RubyLsp::Error)
ensure
  server.process_message({ method: "textDocument/didClose", params: { textDocument: { uri: uri } } })
  server.pop_response
  print("\033[M\033[0KCompleted #{index + 1}/#{files.length}") unless ENV["CI"]
end
puts "\n"

# Indexing
puts "Verifying that indexing executes successfully. This may take a while..."

index = RubyIndexer::Index.new
indexables = RubyIndexer.configuration.indexables

indexables.each_with_index do |indexable, i|
  result = Prism.parse(File.read(indexable.full_path))
  collector = RubyIndexer::Collector.new(index, result, indexable.full_path)
  collector.collect(result.value)
rescue => e
  errors[indexable.full_path] = e
ensure
  print("\033[M\033[0KIndexed #{i + 1}/#{indexables.length}") unless ENV["CI"]
end
puts "\n"

if errors.empty?
  puts "All operations completed successfully!"
  exit
end

puts <<~ERRORS
  Errors while executing:

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

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
ruby-lsp-0.16.6 exe/ruby-lsp-check
ruby-lsp-0.16.5 exe/ruby-lsp-check
ruby-lsp-0.16.4 exe/ruby-lsp-check
ruby-lsp-0.16.3 exe/ruby-lsp-check
ruby-lsp-0.16.2 exe/ruby-lsp-check
ruby-lsp-0.16.1 exe/ruby-lsp-check
ruby-lsp-0.16.0 exe/ruby-lsp-check
ruby-lsp-0.15.0 exe/ruby-lsp-check