rubocop-rspec 2.29.0 → 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: 17925b2c404825ce202d012a1b5176358a7328cbdf5c956426b2be463c07707a
4
- data.tar.gz: bf216b0348237ccb7020b7dad2cb79c700c46f7bdbc85bdf65c5a2740aea12e8
3
+ metadata.gz: 037e1076040acc6d3c7efbeecf672ffbbff0b14752f2732681b67ea901c46086
4
+ data.tar.gz: 052a969aeaebe429e598643005f9cf0a950a1f1a9e0d7e28af59db13094fb22a
5
5
  SHA512:
6
- metadata.gz: fb4265f89166d4df1e75b2eef2a2b3d709e93834511dde371765cf21d0efb7af158bc2a165b98dc0106ffb979003b2d924543074c00268445df924a6d3ec8cc0
7
- data.tar.gz: 90fc7033f83e79d3aa77eab277247ce0c6b66b20db115d24834ed28940f584c656eb6588f93250e1abea901ad4b83cac012d0339e64b4a5633b48abed9c4b568
6
+ metadata.gz: abdcaf4cd68964da364c146762c911b54f33b1e244b6216fc79496b45dc9181a3ef87338a98c4559f244d1e49047427b7acbfc2e470b6f14a0a2331a8139d285
7
+ data.tar.gz: 0fb5243859ef17f6fe01e3eb2bc814079a6b84f53f230f421bfdce8ed8371aab76f29aa24f174f98506cfc7566e3338b0b4d7fc98dbf3954ffce1f93ba620b4d
data/CHANGELOG.md CHANGED
@@ -2,6 +2,19 @@
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
+
14
+ ## 2.29.1 (2024-04-05)
15
+
16
+ - Fix an error in the default configuration. ([@ydah])
17
+
5
18
  ## 2.29.0 (2024-04-04)
6
19
 
7
20
  - Fix an autocorrect error for `RSpec/ExpectActual`. ([@bquorning])
@@ -891,6 +904,7 @@ Compatibility release so users can upgrade RuboCop to 0.51.0. No new features.
891
904
  [@gsamokovarov]: https://github.com/gsamokovarov
892
905
  [@harry-graham]: https://github.com/harry-graham
893
906
  [@harrylewis]: https://github.com/harrylewis
907
+ [@hasghari]: https://github.com/hasghari
894
908
  [@hosamaly]: https://github.com/hosamaly
895
909
  [@ignaciovillaverde]: https://github.com/ignaciovillaverde
896
910
  [@jaredbeck]: https://github.com/jaredbeck
@@ -903,6 +917,7 @@ Compatibility release so users can upgrade RuboCop to 0.51.0. No new features.
903
917
  [@jojos003]: https://github.com/jojos003
904
918
  [@jonatas]: https://github.com/jonatas
905
919
  [@jtannas]: https://github.com/jtannas
920
+ [@k-s-a]: https://github.com/K-S-A
906
921
  [@kellysutton]: https://github.com/kellysutton
907
922
  [@koic]: https://github.com/koic
908
923
  [@kuahyeow]: https://github.com/kuahyeow
@@ -965,6 +980,7 @@ Compatibility release so users can upgrade RuboCop to 0.51.0. No new features.
965
980
  [@twalpole]: https://github.com/twalpole
966
981
  [@vzvu3k6k]: https://github.com/vzvu3k6k
967
982
  [@walf443]: https://github.com/walf443
983
+ [@yasu551]: https://github.com/yasu551
968
984
  [@ybiquitous]: https://github.com/ybiquitous
969
985
  [@ydah]: https://github.com/ydah
970
986
  [@yevhene]: https://github.com/yevhene
data/config/default.yml CHANGED
@@ -369,7 +369,7 @@ RSpec/EmptyMetadata:
369
369
  RSpec/EmptyOutput:
370
370
  Description: Check that the `output` matcher is not called with an empty string.
371
371
  Enabled: pending
372
- VersionAdded: "<<next>>"
372
+ VersionAdded: '2.29'
373
373
  Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/EmptyOutput
374
374
 
375
375
  RSpec/Eq:
@@ -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.0'
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.0
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