rubocop-rspec 2.29.1 → 2.30.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: 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