ruby-lsp-rspec 0.1.6 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 94c72f8fcd6ded9ad2ce93a0d55b9358bd96f82d8bd33fcffe7bc0a8e871fe49
4
- data.tar.gz: d91f21f2f77423d171239cb4a030447d2ab930f95b50209c6672cdb6c9bd1601
3
+ metadata.gz: 4a2c9365c60f18ec5838ef6b616a1f19de7b28333ea6816a2a730866239baf7d
4
+ data.tar.gz: 195bbb73070d07492a8e873e0374b453e025ed496916f9df51e14e1fa808c609
5
5
  SHA512:
6
- metadata.gz: 5ba68d0ac94f0fdd1ca3c738899c7f6fb3b4bf19af6fefd2c8fd8cc8eeb85192c6a8268cd60bd7b638fbee9008cefd8bdfefe7b50d99de4bd8ecb92d726e7818
7
- data.tar.gz: 3271d7a453a7cd4623b69626a49b9de22c32d6fdd04b714fea4a8d6b0d2afc4ce4b11046169e79eff4b97f8b172b303378167c0a52b5d5a600a18c09b005f80f
6
+ metadata.gz: c77f5457e8100cf08eab07c26607f00bb85683d15d69ccb87f85f09a53000c3ffb973365106a2498ba128055e2451ef58c20f9be7267a2b0daea0e5c2e87465c
7
+ data.tar.gz: a194c571edb9bc0ae68766a2ad6b30b7e245670bd8be66ef82a8796d329edf6e7a92d021b1321ef53e8f14e1d851917414b35dbdc826c749bf41f42712f08e77
@@ -3,7 +3,6 @@
3
3
 
4
4
  require "sorbet-runtime"
5
5
  require "ruby_lsp_rspec/version"
6
- require "ruby_lsp/ruby_lsp_rspec/addon"
7
6
 
8
7
  module RubyLsp
9
8
  module RSpec
@@ -11,8 +11,8 @@ module RubyLsp
11
11
  class Addon < ::RubyLsp::Addon
12
12
  extend T::Sig
13
13
 
14
- sig { override.void }
15
- def activate; end
14
+ sig { override.params(message_queue: Thread::Queue).void }
15
+ def activate(message_queue); end
16
16
 
17
17
  sig { override.void }
18
18
  def deactivate; end
@@ -22,13 +22,12 @@ module RubyLsp
22
22
  override.params(
23
23
  uri: URI::Generic,
24
24
  emitter: Prism::Dispatcher,
25
- message_queue: Thread::Queue,
26
25
  ).returns(T.nilable(Listener[T::Array[Interface::CodeLens]]))
27
26
  end
28
- def create_code_lens_listener(uri, emitter, message_queue)
27
+ def create_code_lens_listener(uri, emitter)
29
28
  return unless uri.to_standardized_path&.end_with?("_test.rb") || uri.to_standardized_path&.end_with?("_spec.rb")
30
29
 
31
- CodeLens.new(uri, emitter, message_queue)
30
+ CodeLens.new(uri, emitter)
32
31
  end
33
32
 
34
33
  sig { override.returns(String) }
@@ -14,12 +14,14 @@ module RubyLsp
14
14
  sig { override.returns(ResponseType) }
15
15
  attr_reader :_response
16
16
 
17
- sig { params(uri: URI::Generic, dispatcher: Prism::Dispatcher, message_queue: Thread::Queue).void }
18
- def initialize(uri, dispatcher, message_queue)
17
+ sig { params(uri: URI::Generic, dispatcher: Prism::Dispatcher).void }
18
+ def initialize(uri, dispatcher)
19
19
  @_response = T.let([], ResponseType)
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
- dispatcher.register(self, :on_call_node_enter)
22
+ @group_id = T.let(1, Integer)
23
+ @group_id_stack = T.let([], T::Array[Integer])
24
+ dispatcher.register(self, :on_call_node_enter, :on_call_node_leave)
23
25
 
24
26
  @base_command = T.let(
25
27
  begin
@@ -38,7 +40,7 @@ module RubyLsp
38
40
  String,
39
41
  )
40
42
 
41
- super(dispatcher, message_queue)
43
+ super(dispatcher)
42
44
  end
43
45
 
44
46
  sig { params(node: Prism::CallNode).void }
@@ -48,17 +50,32 @@ module RubyLsp
48
50
  name = generate_name(node)
49
51
  add_test_code_lens(node, name: name, kind: :example)
50
52
  when "context", "describe"
51
- return if node.receiver && node.receiver.name.to_s != "RSpec"
53
+ return if node.receiver && node.receiver&.slice != "RSpec"
52
54
 
53
55
  name = generate_name(node)
54
56
  add_test_code_lens(node, name: name, kind: :group)
57
+
58
+ @group_id_stack.push(@group_id)
59
+ @group_id += 1
60
+ end
61
+ end
62
+
63
+ sig { params(node: Prism::CallNode).void }
64
+ def on_call_node_leave(node)
65
+ case node.message
66
+ when "context", "describe"
67
+ return if node.receiver && node.receiver&.slice != "RSpec"
68
+
69
+ @group_id_stack.pop
55
70
  end
56
71
  end
57
72
 
58
73
  sig { params(node: Prism::CallNode).returns(String) }
59
74
  def generate_name(node)
60
- if node.arguments
61
- argument = node.arguments.arguments.first
75
+ arguments = node.arguments&.arguments
76
+
77
+ if arguments
78
+ argument = arguments.first
62
79
 
63
80
  case argument
64
81
  when Prism::StringNode
@@ -82,6 +99,9 @@ module RubyLsp
82
99
  line_number = node.location.start_line
83
100
  command = "#{@base_command} #{@path}:#{line_number}"
84
101
 
102
+ grouping_data = { group_id: @group_id_stack.last, kind: kind }
103
+ grouping_data[:id] = @group_id if kind == :group
104
+
85
105
  arguments = [
86
106
  @path,
87
107
  name,
@@ -99,7 +119,7 @@ module RubyLsp
99
119
  title: "Run",
100
120
  command_name: "rubyLsp.runTest",
101
121
  arguments: arguments,
102
- data: { type: "test", kind: kind },
122
+ data: { type: "test", **grouping_data },
103
123
  )
104
124
 
105
125
  @_response << create_code_lens(
@@ -107,7 +127,7 @@ module RubyLsp
107
127
  title: "Run In Terminal",
108
128
  command_name: "rubyLsp.runTestInTerminal",
109
129
  arguments: arguments,
110
- data: { type: "test_in_terminal", kind: kind },
130
+ data: { type: "test_in_terminal", **grouping_data },
111
131
  )
112
132
 
113
133
  @_response << create_code_lens(
@@ -115,7 +135,7 @@ module RubyLsp
115
135
  title: "Debug",
116
136
  command_name: "rubyLsp.debugTest",
117
137
  arguments: arguments,
118
- data: { type: "debug", kind: kind },
138
+ data: { type: "debug", **grouping_data },
119
139
  )
120
140
  end
121
141
  end
@@ -3,6 +3,6 @@
3
3
 
4
4
  module RubyLsp
5
5
  module RSpec
6
- VERSION = "0.1.6"
6
+ VERSION = "0.1.8"
7
7
  end
8
8
  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.6
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stan Lo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-11-28 00:00:00.000000000 Z
11
+ date: 2023-12-02 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.12.0
19
+ version: 0.13.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.12.0
26
+ version: 0.13.0
27
27
  description: RSpec addon for ruby-lsp
28
28
  email:
29
29
  - stan001212@gmail.com