rubocop-rspec 2.29.1 → 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: 2976f1fdb5dd0fd25296bbe1047e74370ab9b55e19253c07bb539ea6a0e9f4af
4
- data.tar.gz: 8dd9818e414fcb26a04b0dfd434d2f13840784e159245c5c76dc0a4367b1ee96
3
+ metadata.gz: 037e1076040acc6d3c7efbeecf672ffbbff0b14752f2732681b67ea901c46086
4
+ data.tar.gz: 052a969aeaebe429e598643005f9cf0a950a1f1a9e0d7e28af59db13094fb22a
5
5
  SHA512:
6
- metadata.gz: c12a53d2803229bbee98f80fc966fb2899d563d6b82fa4bef3dfcd7b8a571a9831fdeb2c6fff121c8b994ed28aeb5785e829aba5c709ede5afba20622b8dca54
7
- data.tar.gz: 796c6ad8481aafcff4f7f1b9b0ae789dbd9df4ea54b70f166171579e5d0f15e333c8c627b9979e7c2f9fcc5d89195f84c31db4ae28922bd8207f1f8c341335d7
6
+ metadata.gz: abdcaf4cd68964da364c146762c911b54f33b1e244b6216fc79496b45dc9181a3ef87338a98c4559f244d1e49047427b7acbfc2e470b6f14a0a2331a8139d285
7
+ data.tar.gz: 0fb5243859ef17f6fe01e3eb2bc814079a6b84f53f230f421bfdce8ed8371aab76f29aa24f174f98506cfc7566e3338b0b4d7fc98dbf3954ffce1f93ba620b4d
data/CHANGELOG.md CHANGED
@@ -2,6 +2,15 @@
2
2
 
3
3
  ## Master (Unreleased)
4
4
 
5
+ ## 2.30.0 (2024-06-03)
6
+
7
+ - Add new `RSpec/ExpectInLet` cop. ([@yasu551])
8
+
9
+ ## 2.29.2 (2024-05-02)
10
+
11
+ - Fix beginless and endless range bug for RepeatedIncludeExample cop. ([@hasghari])
12
+ - Fix a false positive for `RSpec/RepeatedSubjectCall` when subject is used as argument to function call. ([@K-S-A])
13
+
5
14
  ## 2.29.1 (2024-04-05)
6
15
 
7
16
  - Fix an error in the default configuration. ([@ydah])
@@ -895,6 +904,7 @@ Compatibility release so users can upgrade RuboCop to 0.51.0. No new features.
895
904
  [@gsamokovarov]: https://github.com/gsamokovarov
896
905
  [@harry-graham]: https://github.com/harry-graham
897
906
  [@harrylewis]: https://github.com/harrylewis
907
+ [@hasghari]: https://github.com/hasghari
898
908
  [@hosamaly]: https://github.com/hosamaly
899
909
  [@ignaciovillaverde]: https://github.com/ignaciovillaverde
900
910
  [@jaredbeck]: https://github.com/jaredbeck
@@ -907,6 +917,7 @@ Compatibility release so users can upgrade RuboCop to 0.51.0. No new features.
907
917
  [@jojos003]: https://github.com/jojos003
908
918
  [@jonatas]: https://github.com/jonatas
909
919
  [@jtannas]: https://github.com/jtannas
920
+ [@k-s-a]: https://github.com/K-S-A
910
921
  [@kellysutton]: https://github.com/kellysutton
911
922
  [@koic]: https://github.com/koic
912
923
  [@kuahyeow]: https://github.com/kuahyeow
@@ -969,6 +980,7 @@ Compatibility release so users can upgrade RuboCop to 0.51.0. No new features.
969
980
  [@twalpole]: https://github.com/twalpole
970
981
  [@vzvu3k6k]: https://github.com/vzvu3k6k
971
982
  [@walf443]: https://github.com/walf443
983
+ [@yasu551]: https://github.com/yasu551
972
984
  [@ybiquitous]: https://github.com/ybiquitous
973
985
  [@ydah]: https://github.com/ydah
974
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
@@ -72,6 +72,7 @@ module RuboCop
72
72
 
73
73
  def detect_offense(subject_node)
74
74
  return if subject_node.chained?
75
+ return if subject_node.parent.send_type?
75
76
  return unless (block_node = expect_block(subject_node))
76
77
 
77
78
  add_offense(block_node)
@@ -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'
@@ -9,7 +9,7 @@ module RuboCop
9
9
  def recursive_literal_or_const?
10
10
  case type
11
11
  when :begin, :pair, *AST::Node::COMPOSITE_LITERALS
12
- children.all?(&:recursive_literal_or_const?)
12
+ children.compact.all?(&:recursive_literal_or_const?)
13
13
  else
14
14
  literal? || const_type?
15
15
  end
@@ -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.1'
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.1
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-04-04 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
@@ -269,7 +270,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
269
270
  - !ruby/object:Gem::Version
270
271
  version: '0'
271
272
  requirements: []
272
- rubygems_version: 3.5.3
273
+ rubygems_version: 3.5.9
273
274
  signing_key:
274
275
  specification_version: 4
275
276
  summary: Code style checking for RSpec files