Skip to content

Commit 74d7837

Browse files
authored
Merge pull request #1953 from Earlopain/offense-message-indexed-let
Improve offense message for `RSpec/IndexedLet`
2 parents e02576f + f31b268 commit 74d7837

File tree

4 files changed

+22
-20
lines changed

4 files changed

+22
-20
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
## Master (Unreleased)
44

55
- Fix false-negative and error for `RSpec/MetadataStyle` when non-literal args are used in metadata in `EnforceStyle: hash`. ([@cbliard])
6+
- Improve offense message for `RSpec/IndexedLet`. ([@earlopain])
67

78
## 3.0.4 (2024-08-05)
89

lib/rubocop/cop/rspec/indexed_let.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ class IndexedLet < Base
4848
include AllowedIdentifiers
4949
include AllowedPattern
5050

51-
MSG = 'This `let` statement uses index in its name. Please give it ' \
52-
'a meaningful name.'
51+
MSG = 'This `let` statement uses `%<index>s` in its name. ' \
52+
'Please give it a meaningful name.'
5353

5454
# @!method let_name(node)
5555
def_node_matcher :let_name, <<~PATTERN
@@ -66,7 +66,8 @@ def on_block(node) # rubocop:disable InternalAffairs/NumblockHandler
6666
return unless children
6767

6868
filter_indexed_lets(children).each do |let_node|
69-
add_offense(let_node)
69+
index = let_name(let_node)[INDEX_REGEX]
70+
add_offense(let_node, message: format(MSG, index: index))
7071
end
7172
end
7273

spec/rubocop/cli/run_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@
3939
== spec/example.rb ==
4040
C: 2: 7: Naming/VariableNumber: Use normalcase for symbol numbers.
4141
C: 3: 7: Naming/VariableNumber: Use normalcase for symbol numbers.
42-
C: 6: 3: RSpec/IndexedLet: This let statement uses index in its name. Please give it a meaningful name.
42+
C: 6: 3: RSpec/IndexedLet: This let statement uses 1 in its name. Please give it a meaningful name.
4343
C: 6: 7: Naming/VariableNumber: Use normalcase for symbol numbers.
44-
C: 7: 3: RSpec/IndexedLet: This let statement uses index in its name. Please give it a meaningful name.
44+
C: 7: 3: RSpec/IndexedLet: This let statement uses 2 in its name. Please give it a meaningful name.
4545
C: 7: 7: Naming/VariableNumber: Use normalcase for symbol numbers.
4646
4747
1 file inspected, 6 offenses detected
@@ -82,9 +82,9 @@
8282
== spec/example.rb ==
8383
C: 2: 7: Naming/VariableNumber: Use normalcase for symbol numbers.
8484
C: 3: 7: Naming/VariableNumber: Use normalcase for symbol numbers.
85-
C: 6: 3: RSpec/IndexedLet: This let statement uses index in its name. Please give it a meaningful name.
85+
C: 6: 3: RSpec/IndexedLet: This let statement uses 1 in its name. Please give it a meaningful name.
8686
C: 6: 7: Naming/VariableNumber: Use normalcase for symbol numbers.
87-
C: 7: 3: RSpec/IndexedLet: This let statement uses index in its name. Please give it a meaningful name.
87+
C: 7: 3: RSpec/IndexedLet: This let statement uses 2 in its name. Please give it a meaningful name.
8888
C: 7: 7: Naming/VariableNumber: Use normalcase for symbol numbers.
8989
9090
1 file inspected, 6 offenses detected

spec/rubocop/cop/rspec/indexed_let_spec.rb

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
expect_offense(<<~RUBY)
1717
describe SomeService do
1818
let(:item_1) { create(:item) }
19-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This `let` statement uses index in its name. Please give it a meaningful name.
19+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This `let` statement uses `1` in its name. Please give it a meaningful name.
2020
let(:item_2) { create(:item) }
21-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This `let` statement uses index in its name. Please give it a meaningful name.
21+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This `let` statement uses `2` in its name. Please give it a meaningful name.
2222
end
2323
RUBY
2424
end
@@ -27,9 +27,9 @@
2727
expect_offense(<<~RUBY)
2828
describe SomeService do
2929
let("item_1") { create(:item) }
30-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This `let` statement uses index in its name. Please give it a meaningful name.
30+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This `let` statement uses `1` in its name. Please give it a meaningful name.
3131
let("item_2") { create(:item) }
32-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This `let` statement uses index in its name. Please give it a meaningful name.
32+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This `let` statement uses `2` in its name. Please give it a meaningful name.
3333
end
3434
RUBY
3535
end
@@ -38,9 +38,9 @@
3838
expect_offense(<<~RUBY)
3939
describe SomeService do
4040
let(:item1) { create(:item) }
41-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This `let` statement uses index in its name. Please give it a meaningful name.
41+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This `let` statement uses `1` in its name. Please give it a meaningful name.
4242
let(:item2) { create(:item) }
43-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This `let` statement uses index in its name. Please give it a meaningful name.
43+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This `let` statement uses `2` in its name. Please give it a meaningful name.
4444
end
4545
RUBY
4646
end
@@ -49,9 +49,9 @@
4949
expect_offense(<<~RUBY)
5050
describe SomeService do
5151
let(:item_1, &block)
52-
^^^^^^^^^^^^^^^^^^^^ This `let` statement uses index in its name. Please give it a meaningful name.
52+
^^^^^^^^^^^^^^^^^^^^ This `let` statement uses `1` in its name. Please give it a meaningful name.
5353
let(:item_2, &block)
54-
^^^^^^^^^^^^^^^^^^^^ This `let` statement uses index in its name. Please give it a meaningful name.
54+
^^^^^^^^^^^^^^^^^^^^ This `let` statement uses `2` in its name. Please give it a meaningful name.
5555
end
5656
RUBY
5757
end
@@ -72,11 +72,11 @@
7272
expect_offense(<<~RUBY)
7373
context SomeService do
7474
let(:user_1_item_1) { create(:item) }
75-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This `let` statement uses index in its name. Please give it a meaningful name.
75+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This `let` statement uses `1` in its name. Please give it a meaningful name.
7676
let(:user_1_item_2) { create(:item) }
77-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This `let` statement uses index in its name. Please give it a meaningful name.
77+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This `let` statement uses `1` in its name. Please give it a meaningful name.
7878
let(:user_2_item_1) { create(:item) }
79-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This `let` statement uses index in its name. Please give it a meaningful name.
79+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This `let` statement uses `2` in its name. Please give it a meaningful name.
8080
end
8181
RUBY
8282
end
@@ -112,9 +112,9 @@
112112
expect_offense(<<~RUBY)
113113
describe SomeService do
114114
let(:item_1) { create(:item) }
115-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This `let` statement uses index in its name. Please give it a meaningful name.
115+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This `let` statement uses `1` in its name. Please give it a meaningful name.
116116
let("item_2") { create(:item) }
117-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This `let` statement uses index in its name. Please give it a meaningful name.
117+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This `let` statement uses `2` in its name. Please give it a meaningful name.
118118
end
119119
RUBY
120120
end

0 commit comments

Comments
 (0)