ruby-lsp-rspec 0.1.8 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 14dfb45f32aa9c2a4041da7e65a851fb7c78928ec3fe29663092b2511c186ada
|
4
|
+
data.tar.gz: 382982a793771a83e0ac9da31756244eca80750b1f35d7ed146fe01c3168514b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e9404a0138a746c552480bada9b04869a2a3f2935db75a785669a0bbb9c15f5d87f25c3e11b16041f87c5bb432693afc8e960abab05b1b9efd43b040050f090a
|
7
|
+
data.tar.gz: 22abcfadc79d4de2aecca269cce28ec987f64ee20df4afdc94fc334d565bc524ca8afaf384cf6a50481705762653e5633b2a9eff2e3f23f56b91753702354c55
|
@@ -5,6 +5,7 @@ require "ruby_lsp/addon"
|
|
5
5
|
require "ruby_lsp/internal"
|
6
6
|
|
7
7
|
require_relative "code_lens"
|
8
|
+
require_relative "document_symbol"
|
8
9
|
|
9
10
|
module RubyLsp
|
10
11
|
module RSpec
|
@@ -20,14 +21,25 @@ module RubyLsp
|
|
20
21
|
# Creates a new CodeLens listener. This method is invoked on every CodeLens request
|
21
22
|
sig do
|
22
23
|
override.params(
|
24
|
+
response_builder: ResponseBuilders::CollectionResponseBuilder[Interface::CodeLens],
|
23
25
|
uri: URI::Generic,
|
24
26
|
emitter: Prism::Dispatcher,
|
25
|
-
).
|
27
|
+
).void
|
26
28
|
end
|
27
|
-
def create_code_lens_listener(uri, emitter)
|
29
|
+
def create_code_lens_listener(response_builder, uri, emitter)
|
28
30
|
return unless uri.to_standardized_path&.end_with?("_test.rb") || uri.to_standardized_path&.end_with?("_spec.rb")
|
29
31
|
|
30
|
-
CodeLens.new(uri, emitter)
|
32
|
+
CodeLens.new(response_builder, uri, emitter)
|
33
|
+
end
|
34
|
+
|
35
|
+
sig do
|
36
|
+
override.params(
|
37
|
+
response_builder: ResponseBuilders::DocumentSymbol,
|
38
|
+
dispatcher: Prism::Dispatcher,
|
39
|
+
).void
|
40
|
+
end
|
41
|
+
def create_document_symbol_listener(response_builder, dispatcher)
|
42
|
+
DocumentSymbol.new(response_builder, dispatcher)
|
31
43
|
end
|
32
44
|
|
33
45
|
sig { override.returns(String) }
|
@@ -3,20 +3,20 @@
|
|
3
3
|
|
4
4
|
module RubyLsp
|
5
5
|
module RSpec
|
6
|
-
class CodeLens
|
6
|
+
class CodeLens
|
7
7
|
extend T::Sig
|
8
|
-
extend T::Generic
|
9
8
|
|
10
9
|
include ::RubyLsp::Requests::Support::Common
|
11
10
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
11
|
+
sig do
|
12
|
+
params(
|
13
|
+
response_builder: ResponseBuilders::CollectionResponseBuilder[Interface::CodeLens],
|
14
|
+
uri: URI::Generic,
|
15
|
+
dispatcher: Prism::Dispatcher,
|
16
|
+
).void
|
17
|
+
end
|
18
|
+
def initialize(response_builder, uri, dispatcher)
|
19
|
+
@response_builder = response_builder
|
20
20
|
# Listener is only initialized if uri.to_standardized_path is valid
|
21
21
|
@path = T.let(T.must(uri.to_standardized_path), String)
|
22
22
|
@group_id = T.let(1, Integer)
|
@@ -39,8 +39,6 @@ module RubyLsp
|
|
39
39
|
end,
|
40
40
|
String,
|
41
41
|
)
|
42
|
-
|
43
|
-
super(dispatcher)
|
44
42
|
end
|
45
43
|
|
46
44
|
sig { params(node: Prism::CallNode).void }
|
@@ -50,7 +48,7 @@ module RubyLsp
|
|
50
48
|
name = generate_name(node)
|
51
49
|
add_test_code_lens(node, name: name, kind: :example)
|
52
50
|
when "context", "describe"
|
53
|
-
return
|
51
|
+
return unless valid_group?(node)
|
54
52
|
|
55
53
|
name = generate_name(node)
|
56
54
|
add_test_code_lens(node, name: name, kind: :group)
|
@@ -64,12 +62,19 @@ module RubyLsp
|
|
64
62
|
def on_call_node_leave(node)
|
65
63
|
case node.message
|
66
64
|
when "context", "describe"
|
67
|
-
return
|
65
|
+
return unless valid_group?(node)
|
68
66
|
|
69
67
|
@group_id_stack.pop
|
70
68
|
end
|
71
69
|
end
|
72
70
|
|
71
|
+
private
|
72
|
+
|
73
|
+
sig { params(node: Prism::CallNode).returns(T::Boolean) }
|
74
|
+
def valid_group?(node)
|
75
|
+
!(node.block.nil? || (node.receiver && node.receiver&.slice != "RSpec"))
|
76
|
+
end
|
77
|
+
|
73
78
|
sig { params(node: Prism::CallNode).returns(String) }
|
74
79
|
def generate_name(node)
|
75
80
|
arguments = node.arguments&.arguments
|
@@ -92,8 +97,6 @@ module RubyLsp
|
|
92
97
|
end
|
93
98
|
end
|
94
99
|
|
95
|
-
private
|
96
|
-
|
97
100
|
sig { params(node: Prism::Node, name: String, kind: Symbol).void }
|
98
101
|
def add_test_code_lens(node, name:, kind:)
|
99
102
|
line_number = node.location.start_line
|
@@ -114,7 +117,7 @@ module RubyLsp
|
|
114
117
|
},
|
115
118
|
]
|
116
119
|
|
117
|
-
@
|
120
|
+
@response_builder << create_code_lens(
|
118
121
|
node,
|
119
122
|
title: "Run",
|
120
123
|
command_name: "rubyLsp.runTest",
|
@@ -122,7 +125,7 @@ module RubyLsp
|
|
122
125
|
data: { type: "test", **grouping_data },
|
123
126
|
)
|
124
127
|
|
125
|
-
@
|
128
|
+
@response_builder << create_code_lens(
|
126
129
|
node,
|
127
130
|
title: "Run In Terminal",
|
128
131
|
command_name: "rubyLsp.runTestInTerminal",
|
@@ -130,7 +133,7 @@ module RubyLsp
|
|
130
133
|
data: { type: "test_in_terminal", **grouping_data },
|
131
134
|
)
|
132
135
|
|
133
|
-
@
|
136
|
+
@response_builder << create_code_lens(
|
134
137
|
node,
|
135
138
|
title: "Debug",
|
136
139
|
command_name: "rubyLsp.debugTest",
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# typed: strict
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module RubyLsp
|
5
|
+
module RSpec
|
6
|
+
class DocumentSymbol
|
7
|
+
extend T::Sig
|
8
|
+
|
9
|
+
include ::RubyLsp::Requests::Support::Common
|
10
|
+
|
11
|
+
sig do
|
12
|
+
params(
|
13
|
+
response_builder: ResponseBuilders::DocumentSymbol,
|
14
|
+
dispatcher: Prism::Dispatcher,
|
15
|
+
).void
|
16
|
+
end
|
17
|
+
def initialize(response_builder, dispatcher)
|
18
|
+
@response_builder = response_builder
|
19
|
+
|
20
|
+
dispatcher.register(self, :on_call_node_enter, :on_call_node_leave)
|
21
|
+
end
|
22
|
+
|
23
|
+
sig { params(node: Prism::CallNode).void }
|
24
|
+
def on_call_node_enter(node)
|
25
|
+
case node.message
|
26
|
+
when "example", "it", "specify"
|
27
|
+
name = generate_name(node)
|
28
|
+
|
29
|
+
return unless name
|
30
|
+
|
31
|
+
@response_builder.last.children << RubyLsp::Interface::DocumentSymbol.new(
|
32
|
+
name: name,
|
33
|
+
kind: LanguageServer::Protocol::Constant::SymbolKind::METHOD,
|
34
|
+
selection_range: range_from_node(node),
|
35
|
+
range: range_from_node(node),
|
36
|
+
)
|
37
|
+
when "context", "describe"
|
38
|
+
return if node.receiver && node.receiver&.slice != "RSpec"
|
39
|
+
|
40
|
+
name = generate_name(node)
|
41
|
+
|
42
|
+
return unless name
|
43
|
+
|
44
|
+
symbol = RubyLsp::Interface::DocumentSymbol.new(
|
45
|
+
name: name,
|
46
|
+
kind: LanguageServer::Protocol::Constant::SymbolKind::MODULE,
|
47
|
+
selection_range: range_from_node(node),
|
48
|
+
range: range_from_node(node),
|
49
|
+
children: [],
|
50
|
+
)
|
51
|
+
|
52
|
+
@response_builder.last.children << symbol
|
53
|
+
@response_builder.push(symbol)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
sig { params(node: Prism::CallNode).void }
|
58
|
+
def on_call_node_leave(node)
|
59
|
+
case node.message
|
60
|
+
when "context", "describe"
|
61
|
+
return if node.receiver && node.receiver&.slice != "RSpec"
|
62
|
+
|
63
|
+
@response_builder.pop
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
sig { params(node: Prism::CallNode).returns(T.nilable(String)) }
|
68
|
+
def generate_name(node)
|
69
|
+
arguments = node.arguments&.arguments
|
70
|
+
|
71
|
+
return unless arguments
|
72
|
+
|
73
|
+
argument = arguments.first
|
74
|
+
|
75
|
+
case argument
|
76
|
+
when Prism::StringNode
|
77
|
+
argument.content.dump
|
78
|
+
when Prism::CallNode
|
79
|
+
"<#{argument.name}>"
|
80
|
+
when nil
|
81
|
+
nil
|
82
|
+
else
|
83
|
+
argument.slice
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-lsp-rspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stan Lo
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ruby-lsp
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.14.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.14.0
|
27
27
|
description: RSpec addon for ruby-lsp
|
28
28
|
email:
|
29
29
|
- stan001212@gmail.com
|
@@ -41,6 +41,7 @@ files:
|
|
41
41
|
- lib/ruby-lsp-rspec.rb
|
42
42
|
- lib/ruby_lsp/ruby_lsp_rspec/addon.rb
|
43
43
|
- lib/ruby_lsp/ruby_lsp_rspec/code_lens.rb
|
44
|
+
- lib/ruby_lsp/ruby_lsp_rspec/document_symbol.rb
|
44
45
|
- lib/ruby_lsp_rspec/version.rb
|
45
46
|
homepage: https://github.com/st0012/ruby-lsp-rspec
|
46
47
|
licenses:
|
@@ -64,7 +65,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
64
65
|
- !ruby/object:Gem::Version
|
65
66
|
version: '0'
|
66
67
|
requirements: []
|
67
|
-
rubygems_version: 3.
|
68
|
+
rubygems_version: 3.5.1
|
68
69
|
signing_key:
|
69
70
|
specification_version: 4
|
70
71
|
summary: RSpec addon for ruby-lsp
|