rubocop-rspec 2.29.2 → 2.30.0

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: 3f4865ebd50bfe7df9833f2c5321a46dcac8631087062605b7e077e6b633099a
4
- data.tar.gz: 4520e7bdaae0270de34922c53f08d23679b9ac66a89bad29a52485bcdc49432d
3
+ metadata.gz: 037e1076040acc6d3c7efbeecf672ffbbff0b14752f2732681b67ea901c46086
4
+ data.tar.gz: 052a969aeaebe429e598643005f9cf0a950a1f1a9e0d7e28af59db13094fb22a
5
5
  SHA512:
6
- metadata.gz: 202e33ab3927087a3e59917c1a73edc28f13054e668bbefeb5451799f373304b0a5d703e3a0564cf72df2f8afe86d0be1b5a1ffc06bfe2f145c4b2645474a653
7
- data.tar.gz: ad0cb220b35590ffc7911e149d9754af5185b83fe597a2212a4dca2927617f4269af80f19cfeabd147e2b06181c9ce37a44998822d9a3f2fd7c27395fca18b0d
6
+ metadata.gz: abdcaf4cd68964da364c146762c911b54f33b1e244b6216fc79496b45dc9181a3ef87338a98c4559f244d1e49047427b7acbfc2e470b6f14a0a2331a8139d285
7
+ data.tar.gz: 0fb5243859ef17f6fe01e3eb2bc814079a6b84f53f230f421bfdce8ed8371aab76f29aa24f174f98506cfc7566e3338b0b4d7fc98dbf3954ffce1f93ba620b4d
data/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## Master (Unreleased)
4
4
 
5
+ ## 2.30.0 (2024-06-03)
6
+
7
+ - Add new `RSpec/ExpectInLet` cop. ([@yasu551])
8
+
5
9
  ## 2.29.2 (2024-05-02)
6
10
 
7
11
  - Fix beginless and endless range bug for RepeatedIncludeExample cop. ([@hasghari])
@@ -976,6 +980,7 @@ Compatibility release so users can upgrade RuboCop to 0.51.0. No new features.
976
980
  [@twalpole]: https://github.com/twalpole
977
981
  [@vzvu3k6k]: https://github.com/vzvu3k6k
978
982
  [@walf443]: https://github.com/walf443
983
+ [@yasu551]: https://github.com/yasu551
979
984
  [@ybiquitous]: https://github.com/ybiquitous
980
985
  [@ydah]: https://github.com/ydah
981
986
  [@yevhene]: https://github.com/yevhene
data/config/default.yml CHANGED
@@ -447,6 +447,12 @@ RSpec/ExpectInHook:
447
447
  VersionAdded: '1.16'
448
448
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ExpectInHook
449
449
 
450
+ RSpec/ExpectInLet:
451
+ Description: Do not use `expect` in let.
452
+ Enabled: pending
453
+ VersionAdded: '2.30'
454
+ Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ExpectInLet
455
+
450
456
  RSpec/ExpectOutput:
451
457
  Description: Checks for opportunities to use `expect { ... }.to output`.
452
458
  Enabled: true
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module RSpec
6
+ # Do not use `expect` in let.
7
+ #
8
+ # @example
9
+ # # bad
10
+ # let(:foo) do
11
+ # expect(something).to eq 'foo'
12
+ # end
13
+ #
14
+ # # good
15
+ # it do
16
+ # expect(something).to eq 'foo'
17
+ # end
18
+ #
19
+ class ExpectInLet < Base
20
+ MSG = 'Do not use `%<expect>s` in let'
21
+
22
+ # @!method expectation(node)
23
+ def_node_search :expectation, '(send nil? #Expectations.all ...)'
24
+
25
+ def on_block(node)
26
+ return unless let?(node)
27
+ return if node.body.nil?
28
+
29
+ expectation(node.body) do |expect|
30
+ add_offense(expect.loc.selector, message: message(expect))
31
+ end
32
+ end
33
+
34
+ alias on_numblock on_block
35
+
36
+ private
37
+
38
+ def message(expect)
39
+ format(MSG, expect: expect.method_name)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -72,7 +72,7 @@ module RuboCop
72
72
  MSG = 'Example has too many expectations [%<total>d/%<max>d].'
73
73
 
74
74
  ANYTHING = ->(_node) { true }
75
- TRUE = ->(node) { node.true_type? }
75
+ TRUE = lambda(&:true_type?)
76
76
 
77
77
  # @!method aggregate_failures?(node)
78
78
  def_node_matcher :aggregate_failures?, <<~PATTERN
@@ -63,6 +63,7 @@ require_relative 'rspec/excessive_docstring_spacing'
63
63
  require_relative 'rspec/expect_actual'
64
64
  require_relative 'rspec/expect_change'
65
65
  require_relative 'rspec/expect_in_hook'
66
+ require_relative 'rspec/expect_in_let'
66
67
  require_relative 'rspec/expect_output'
67
68
  require_relative 'rspec/file_path'
68
69
  require_relative 'rspec/focus'
@@ -4,7 +4,7 @@ module RuboCop
4
4
  module RSpec
5
5
  # Version information for the RSpec RuboCop plugin.
6
6
  module Version
7
- STRING = '2.29.2'
7
+ STRING = '2.30.0'
8
8
  end
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop-rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.29.2
4
+ version: 2.30.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Backus
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2024-05-02 00:00:00.000000000 Z
13
+ date: 2024-06-03 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rubocop
@@ -136,6 +136,7 @@ files:
136
136
  - lib/rubocop/cop/rspec/expect_actual.rb
137
137
  - lib/rubocop/cop/rspec/expect_change.rb
138
138
  - lib/rubocop/cop/rspec/expect_in_hook.rb
139
+ - lib/rubocop/cop/rspec/expect_in_let.rb
139
140
  - lib/rubocop/cop/rspec/expect_output.rb
140
141
  - lib/rubocop/cop/rspec/factory_bot/attribute_defined_statically.rb
141
142
  - lib/rubocop/cop/rspec/factory_bot/consistent_parentheses_style.rb