ruby-lsp-shoulda-context 0.3.2 → 0.4.0

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: 8507f756d0b208adca8b52c8d852897a5d641eafc10e4f426d52a1f996e77be4
4
- data.tar.gz: 2ce268a5a67e65f5dedb35ef95e4a0f5007c3fa87e0a39c774214e88fc2d9910
3
+ metadata.gz: 8112ca7fa20b49f281d1b3b89975e7cab08adbdc93d753daaa0b275423adff19
4
+ data.tar.gz: 7a175a8727300cc49bedf73b82e7263330262e319a8df36083215b4deed11f23
5
5
  SHA512:
6
- metadata.gz: 6f3b09e7a7d238b18adddbd2d76cce47d2b4d0c97064ad3ea4344a1c6344a0a7eb81eee4dbe7d6378e83b2c1c694c78acd2ecea3e904798e5865b54f730dabcb
7
- data.tar.gz: 3caae73f44f1d790c0336369ae3ac28f00ad2dc9cf742b254c57b3ece19842fdb5b696ceed6916cf7b7eb453a0a05e217ff29d774d410cd0e89fcf7b268d7c43
6
+ metadata.gz: 443dcb56b9542410765f47fc3a22d7135fa09ad71abb6e9d2308eee42566b5854c16564abc2f515e4e0433be5e830d1de5ff18c25b41e6612f6d3991129139dc
7
+ data.tar.gz: 1d9353e3befef9ee4b5f9e7f11cca6e44034fd8cd64c2af0250bacd7716b1113f7eaba9985003a909038c7d2dbddcac021fa5041eb26506c777776a9cdb72833
data/Readme.md CHANGED
@@ -44,5 +44,6 @@ Everyone interacting in the RubyLsp::ShouldaContext project's codebases, issue t
44
44
  - [ ] Make exec method conditional to rails or Minitest setup
45
45
  - [x] Make inner context or inner should with collissions with outer DSL not collide using full name of the test (Currently if 2 tests have the same name both are executed)
46
46
  - [x] Provide grouping with classes that ends with "..Test" syntax (Note: The codelens is duplicated becuase lsp support minitest by default and LSP responses are merged)
47
+ - [ ] Provide support for Inner Classes
47
48
 
48
49
  **Note**: This project is in very early stage and could have major bugs
@@ -11,11 +11,12 @@ module RubyLsp
11
11
 
12
12
  BASE_COMMAND = T.let(
13
13
  begin
14
+ cmd = File.exist?(File.join(Dir.pwd, "bin", "rails")) ? "bin/rails test" : "ruby -ITest"
14
15
  Bundler.with_original_env { Bundler.default_lockfile }
15
- "bundle exec ruby"
16
+ "bundle exec #{cmd}"
16
17
  rescue Bundler::GemfileNotFound
17
- "ruby"
18
- end + " -ITest",
18
+ cmd
19
+ end,
19
20
  String,
20
21
  )
21
22
 
@@ -31,6 +32,7 @@ module RubyLsp
31
32
  @_response = T.let([], ResponseType)
32
33
  # Listener is only initialized if uri.to_standardized_path is valid
33
34
  @path = T.let(T.must(uri.to_standardized_path), String)
35
+ @class_name = T.let("", String)
34
36
  @group_id = T.let(1, Integer)
35
37
  @group_id_stack = T.let([], T::Array[Integer])
36
38
  @pattern = T.let("test_: ", String)
@@ -46,6 +48,12 @@ module RubyLsp
46
48
  case node.message
47
49
  when "should"
48
50
  name = generate_name(node)
51
+
52
+ # If is top level should without context the DSL is different
53
+ if @group_id_stack.length == 1
54
+ @pattern += "#{@class_name} "
55
+ end
56
+
49
57
  @pattern += "should #{name} "
50
58
  add_test_code_lens(node, name: name, kind: :example)
51
59
  when "context"
@@ -65,7 +73,13 @@ module RubyLsp
65
73
  case node.message
66
74
  when "should"
67
75
  name = generate_name(node)
76
+
68
77
  @pattern = remove_last_pattern_in_string(@pattern, "should #{name} ")
78
+
79
+ # If is top level should without context the DSL is different
80
+ if @group_id_stack.length == 1
81
+ @pattern = remove_last_pattern_in_string(@pattern, "#{@class_name} ")
82
+ end
69
83
  when "context"
70
84
  return unless valid_group?(node)
71
85
 
@@ -78,12 +92,13 @@ module RubyLsp
78
92
  sig { params(node: Prism::ClassNode).void }
79
93
  def on_class_node_enter(node)
80
94
  class_name = node.constant_path.slice
95
+ @class_name = remove_last_pattern_in_string(class_name, "Test")
81
96
 
82
97
  if @path && class_name.end_with?("Test")
83
98
  add_test_code_lens(
84
99
  node,
85
100
  name: class_name,
86
- kind: :group,
101
+ kind: :class,
87
102
  )
88
103
  end
89
104
 
@@ -102,10 +117,6 @@ module RubyLsp
102
117
  string.sub(/#{pattern}$/, "")
103
118
  end
104
119
 
105
- def pattern_only_has_test?(pattern)
106
- pattern == "test_: "
107
- end
108
-
109
120
  sig { params(node: Prism::CallNode).returns(T::Boolean) }
110
121
  def valid_group?(node)
111
122
  !node.block.nil?
@@ -137,7 +148,13 @@ module RubyLsp
137
148
  def add_test_code_lens(node, name:, kind:)
138
149
  return unless DependencyDetector.instance.dependencies.include?(REQUIRED_LIBRARY)
139
150
 
140
- command = "#{@base_command} #{@path} -n \"/#{@pattern.strip}/\""
151
+ if kind == :class
152
+ pattern = "#{@class_name}Test"
153
+ kind = :group
154
+ else
155
+ pattern = @pattern.strip
156
+ end
157
+ command = "#{@base_command} #{@path} --name \"/#{pattern}/\""
141
158
 
142
159
  grouping_data = { group_id: @group_id_stack.last, kind: kind }
143
160
  grouping_data[:id] = @group_id if kind == :group
@@ -3,6 +3,6 @@
3
3
 
4
4
  module RubyLsp
5
5
  module ShouldaContext
6
- VERSION = "0.3.2"
6
+ VERSION = "0.4.0"
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-lsp-shoulda-context
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Domingo Edwards
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-02-10 00:00:00.000000000 Z
11
+ date: 2024-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-lsp