Class: RubyLsp::RSpec::TestDiscovery

Inherits:
Object
  • Object
show all
Includes:
RubyLsp::Requests::Support::Common
Defined in:
lib/ruby_lsp/ruby_lsp_rspec/test_discovery.rb

Instance Method Summary collapse

Constructor Details

#initialize(response_builder, dispatcher, uri, workspace_path) ⇒ TestDiscovery

: (ResponseBuilders::TestCollection, Prism::Dispatcher, URI::Generic, String) -> void



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/ruby_lsp/ruby_lsp_rspec/test_discovery.rb', line 10

def initialize(response_builder, dispatcher, uri, workspace_path)
  @response_builder = response_builder
  @dispatcher = dispatcher
  @uri = uri

  path = uri.to_standardized_path #: as !nil
  @path = path #: String
  @workspace_path = workspace_path #: String
  @group_stack = [] #: Array[::RubyLsp::Requests::Support::TestItem]

  dispatcher.register(
    self,
    :on_call_node_enter,
    :on_call_node_leave,
  )
end

Instance Method Details

#on_call_node_enter(node) ⇒ Object

: (Prism::CallNode) -> void



28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/ruby_lsp/ruby_lsp_rspec/test_discovery.rb', line 28

def on_call_node_enter(node)
  return unless ["describe", "context", "it", "specify", "example", "feature", "scenario"].include?(node.message)

  case node.message
  when "describe", "context", "feature"
    return unless valid_group?(node)

    handle_describe(node)
  when "it", "specify", "example", "scenario"
    handle_example(node)
  end
end

#on_call_node_leave(node) ⇒ Object

: (Prism::CallNode) -> void



42
43
44
45
46
47
48
49
# File 'lib/ruby_lsp/ruby_lsp_rspec/test_discovery.rb', line 42

def on_call_node_leave(node)
  case node.message
  when "context", "describe", "feature"
    return unless valid_group?(node)

    @group_stack.pop
  end
end