rubocop-rspec 3.0.3 → 3.0.4

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: cc86eb0b71fda4e28260323fd53987730be73074de0011d50c43429f8de531e0
4
- data.tar.gz: 2b65f66de5fb68f06f752227a5c2376a4680a1984b5f21880b35325031160d24
3
+ metadata.gz: 169d3c16af254654f25f5b2d91abbee972be45feaa9b9103c54c00ce6592e41f
4
+ data.tar.gz: 140cfd9fe9b060eaaf697aa3eb7e94667ea089635cf2910047c1c63c90c55d76
5
5
  SHA512:
6
- metadata.gz: 835a6f93ad56ee749027bfcfa9f717a6c92ec5ab3fbbd2c0e47a5ddcad89de0f80381d06635e82d7c6c55f7d22d0b3a39dd514e02ae5dc3b840e5023070485da
7
- data.tar.gz: '093d0cb926c5e3c5d2f0aaab4b56f2e6855dca2dd40200590cb4629dbd448450bca32c0c3c7e40102518f92b30574481f6a06c69e738e776bb5ca268be2649ce'
6
+ metadata.gz: ecb48dd3947d2e830c205bf170ba47a9d81bafa685ecfafcbfbd23baa7dc9bee1cdb0002d9de44f8fd3fd3f9249187c4764676259f465f5bb2d0b9b5b3ea38f9
7
+ data.tar.gz: 4d63767133ef37bebba948f952b120cb4ef95b891ecbfca78cf0450f9df8e0f712a10a272eb7e6b477869d0c50323926b9791f7afdc8c64df18f8ba03e2f5359
data/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## Master (Unreleased)
4
4
 
5
+ ## 3.0.4 (2024-08-05)
6
+
7
+ - Fix false-negative for `UnspecifiedException` when matcher is chained. ([@r7kamura])
8
+
5
9
  ## 3.0.3 (2024-07-12)
6
10
 
7
11
  - Add support for Unicode RIGHT SINGLE QUOTATION MARK in `RSpec/ExampleWording`. ([@jdufresne])
@@ -32,34 +32,39 @@ module RuboCop
32
32
  #
33
33
  class UnspecifiedException < Base
34
34
  MSG = 'Specify the exception being captured'
35
- RESTRICT_ON_SEND = %i[to].freeze
36
35
 
37
- # @!method empty_raise_error_or_exception(node)
38
- def_node_matcher :empty_raise_error_or_exception, <<~PATTERN
39
- (send
40
- (block
41
- (send nil? :expect) ...)
42
- :to
43
- (send nil? {:raise_error :raise_exception})
44
- )
36
+ RESTRICT_ON_SEND = %i[
37
+ raise_exception
38
+ raise_error
39
+ ].freeze
40
+
41
+ # @!method expect_to?(node)
42
+ def_node_matcher :expect_to?, <<~PATTERN
43
+ (send (block (send nil? :expect) ...) :to ...)
45
44
  PATTERN
46
45
 
47
46
  def on_send(node)
48
47
  return unless empty_exception_matcher?(node)
49
48
 
50
- add_offense(node.children.last)
49
+ add_offense(node)
51
50
  end
52
51
 
53
52
  private
54
53
 
55
54
  def empty_exception_matcher?(node)
56
- empty_raise_error_or_exception(node) && !block_with_args?(node.parent)
57
- end
55
+ return false if node.arguments? || node.block_literal?
58
56
 
59
- def block_with_args?(node)
60
- return false unless node&.block_type?
57
+ expect_to = find_expect_to(node)
58
+ return false unless expect_to
59
+ return false if expect_to.block_node&.arguments?
60
+
61
+ true
62
+ end
61
63
 
62
- node.arguments?
64
+ def find_expect_to(node)
65
+ node.each_ancestor(:send).find do |ancestor|
66
+ expect_to?(ancestor)
67
+ end
63
68
  end
64
69
  end
65
70
  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 = '3.0.3'
7
+ STRING = '3.0.4'
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: 3.0.3
4
+ version: 3.0.4
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-07-12 00:00:00.000000000 Z
13
+ date: 2024-08-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rubocop