rubocop-rspec 2.24.1 → 2.26.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.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +19 -0
  3. data/config/default.yml +19 -2
  4. data/lib/rubocop/cop/rspec/around_block.rb +3 -3
  5. data/lib/rubocop/cop/rspec/be.rb +1 -1
  6. data/lib/rubocop/cop/rspec/be_eq.rb +1 -1
  7. data/lib/rubocop/cop/rspec/be_eql.rb +1 -1
  8. data/lib/rubocop/cop/rspec/be_nil.rb +2 -2
  9. data/lib/rubocop/cop/rspec/before_after_all.rb +7 -13
  10. data/lib/rubocop/cop/rspec/capybara/feature_methods.rb +2 -2
  11. data/lib/rubocop/cop/rspec/change_by_zero.rb +3 -3
  12. data/lib/rubocop/cop/rspec/context_method.rb +2 -2
  13. data/lib/rubocop/cop/rspec/context_wording.rb +1 -1
  14. data/lib/rubocop/cop/rspec/describe_symbol.rb +1 -1
  15. data/lib/rubocop/cop/rspec/described_class.rb +5 -5
  16. data/lib/rubocop/cop/rspec/empty_example_group.rb +2 -2
  17. data/lib/rubocop/cop/rspec/empty_line_after_example.rb +2 -2
  18. data/lib/rubocop/cop/rspec/example_length.rb +11 -5
  19. data/lib/rubocop/cop/rspec/example_wording.rb +11 -2
  20. data/lib/rubocop/cop/rspec/excessive_docstring_spacing.rb +1 -1
  21. data/lib/rubocop/cop/rspec/expect_change.rb +2 -2
  22. data/lib/rubocop/cop/rspec/focus.rb +2 -2
  23. data/lib/rubocop/cop/rspec/hook_argument.rb +2 -2
  24. data/lib/rubocop/cop/rspec/hooks_before_examples.rb +1 -1
  25. data/lib/rubocop/cop/rspec/implicit_block_expectation.rb +2 -2
  26. data/lib/rubocop/cop/rspec/implicit_expect.rb +1 -1
  27. data/lib/rubocop/cop/rspec/implicit_subject.rb +2 -2
  28. data/lib/rubocop/cop/rspec/instance_spy.rb +2 -2
  29. data/lib/rubocop/cop/rspec/instance_variable.rb +2 -2
  30. data/lib/rubocop/cop/rspec/iterated_expectation.rb +3 -3
  31. data/lib/rubocop/cop/rspec/let_before_examples.rb +1 -1
  32. data/lib/rubocop/cop/rspec/let_setup.rb +1 -1
  33. data/lib/rubocop/cop/rspec/message_expectation.rb +1 -1
  34. data/lib/rubocop/cop/rspec/metadata_style.rb +5 -0
  35. data/lib/rubocop/cop/rspec/mixin/metadata.rb +3 -3
  36. data/lib/rubocop/cop/rspec/mixin/skip_or_pending.rb +2 -2
  37. data/lib/rubocop/cop/rspec/multiple_expectations.rb +2 -2
  38. data/lib/rubocop/cop/rspec/pending.rb +1 -1
  39. data/lib/rubocop/cop/rspec/pending_without_reason.rb +1 -1
  40. data/lib/rubocop/cop/rspec/predicate_matcher.rb +6 -6
  41. data/lib/rubocop/cop/rspec/rails/avoid_setup_hook.rb +1 -1
  42. data/lib/rubocop/cop/rspec/rails/have_http_status.rb +1 -1
  43. data/lib/rubocop/cop/rspec/rails/http_status.rb +13 -19
  44. data/lib/rubocop/cop/rspec/rails/minitest_assertions.rb +2 -2
  45. data/lib/rubocop/cop/rspec/receive_counts.rb +1 -1
  46. data/lib/rubocop/cop/rspec/receive_messages.rb +1 -1
  47. data/lib/rubocop/cop/rspec/redundant_predicate_matcher.rb +65 -0
  48. data/lib/rubocop/cop/rspec/remove_const.rb +40 -0
  49. data/lib/rubocop/cop/rspec/repeated_example_group_body.rb +1 -1
  50. data/lib/rubocop/cop/rspec/repeated_example_group_description.rb +2 -2
  51. data/lib/rubocop/cop/rspec/repeated_include_example.rb +1 -1
  52. data/lib/rubocop/cop/rspec/return_from_stub.rb +1 -1
  53. data/lib/rubocop/cop/rspec/shared_context.rb +1 -1
  54. data/lib/rubocop/cop/rspec/shared_examples.rb +63 -16
  55. data/lib/rubocop/cop/rspec/single_argument_message_chain.rb +1 -1
  56. data/lib/rubocop/cop/rspec/spec_file_path_format.rb +5 -5
  57. data/lib/rubocop/cop/rspec/stubbed_mock.rb +1 -1
  58. data/lib/rubocop/cop/rspec/subject_stub.rb +4 -4
  59. data/lib/rubocop/cop/rspec/unspecified_exception.rb +2 -2
  60. data/lib/rubocop/cop/rspec/variable_definition.rb +2 -2
  61. data/lib/rubocop/cop/rspec/verified_doubles.rb +1 -1
  62. data/lib/rubocop/cop/rspec/void_expect.rb +3 -3
  63. data/lib/rubocop/cop/rspec_cops.rb +2 -0
  64. data/lib/rubocop/rspec/language.rb +8 -8
  65. data/lib/rubocop/rspec/version.rb +1 -1
  66. data/lib/rubocop/rspec/wording.rb +8 -0
  67. metadata +10 -8
@@ -68,7 +68,7 @@ module RuboCop
68
68
  # @param node [RuboCop::AST::Node]
69
69
  #
70
70
  # @yield [Symbol] subject name
71
- def_node_matcher :subject?, <<-PATTERN
71
+ def_node_matcher :subject?, <<~PATTERN
72
72
  (block
73
73
  (send nil?
74
74
  { #Subjects.all (sym $_) | $#Subjects.all }
@@ -77,7 +77,7 @@ module RuboCop
77
77
 
78
78
  # @!method let?(node)
79
79
  # Find a memoized helper
80
- def_node_matcher :let?, <<-PATTERN
80
+ def_node_matcher :let?, <<~PATTERN
81
81
  (block
82
82
  (send nil? :let (sym $_)
83
83
  ) args ...)
@@ -94,7 +94,7 @@ module RuboCop
94
94
  # expect(foo).to receive(:bar).with(1)
95
95
  # expect(foo).to receive(:bar).with(1).and_return(2)
96
96
  #
97
- def_node_matcher :message_expectation?, <<-PATTERN
97
+ def_node_matcher :message_expectation?, <<~PATTERN
98
98
  (send
99
99
  {
100
100
  (send nil? { :expect :allow } (send nil? %))
@@ -106,7 +106,7 @@ module RuboCop
106
106
  PATTERN
107
107
 
108
108
  # @!method message_expectation_matcher?(node)
109
- def_node_search :message_expectation_matcher?, <<-PATTERN
109
+ def_node_search :message_expectation_matcher?, <<~PATTERN
110
110
  (send nil? {
111
111
  :receive :receive_messages :receive_message_chain :have_received
112
112
  } ...)
@@ -35,7 +35,7 @@ module RuboCop
35
35
  RESTRICT_ON_SEND = %i[to].freeze
36
36
 
37
37
  # @!method empty_raise_error_or_exception(node)
38
- def_node_matcher :empty_raise_error_or_exception, <<-PATTERN
38
+ def_node_matcher :empty_raise_error_or_exception, <<~PATTERN
39
39
  (send
40
40
  (block
41
41
  (send nil? :expect) ...)
@@ -57,7 +57,7 @@ module RuboCop
57
57
  end
58
58
 
59
59
  def block_with_args?(node)
60
- return unless node&.block_type?
60
+ return false unless node&.block_type?
61
61
 
62
62
  node.arguments?
63
63
  end
@@ -60,8 +60,8 @@ module RuboCop
60
60
  end
61
61
 
62
62
  def style_offense?(variable)
63
- style == :symbols && string?(variable) ||
64
- style == :strings && symbol?(variable)
63
+ (style == :symbols && string?(variable)) ||
64
+ (style == :strings && symbol?(variable))
65
65
  end
66
66
 
67
67
  def string?(node)
@@ -28,7 +28,7 @@ module RuboCop
28
28
  RESTRICT_ON_SEND = %i[double spy].freeze
29
29
 
30
30
  # @!method unverified_double(node)
31
- def_node_matcher :unverified_double, <<-PATTERN
31
+ def_node_matcher :unverified_double, <<~PATTERN
32
32
  {(send nil? {:double :spy} $...)}
33
33
  PATTERN
34
34
 
@@ -18,12 +18,12 @@ module RuboCop
18
18
  RESTRICT_ON_SEND = %i[expect].freeze
19
19
 
20
20
  # @!method expect?(node)
21
- def_node_matcher :expect?, <<-PATTERN
21
+ def_node_matcher :expect?, <<~PATTERN
22
22
  (send nil? :expect ...)
23
23
  PATTERN
24
24
 
25
25
  # @!method expect_block?(node)
26
- def_node_matcher :expect_block?, <<-PATTERN
26
+ def_node_matcher :expect_block?, <<~PATTERN
27
27
  (block #expect? (args) _body)
28
28
  PATTERN
29
29
 
@@ -52,7 +52,7 @@ module RuboCop
52
52
  return true unless parent
53
53
  return true if parent.begin_type?
54
54
 
55
- true if parent.block_type? && parent.body == expect
55
+ parent.block_type? && parent.body == expect
56
56
  end
57
57
  end
58
58
  end
@@ -106,6 +106,8 @@ require_relative 'rspec/receive_counts'
106
106
  require_relative 'rspec/receive_messages'
107
107
  require_relative 'rspec/receive_never'
108
108
  require_relative 'rspec/redundant_around'
109
+ require_relative 'rspec/redundant_predicate_matcher'
110
+ require_relative 'rspec/remove_const'
109
111
  require_relative 'rspec/repeated_description'
110
112
  require_relative 'rspec/repeated_example'
111
113
  require_relative 'rspec/repeated_example_group_body'
@@ -42,7 +42,7 @@ module RuboCop
42
42
  PATTERN
43
43
 
44
44
  # @!method example_group_with_body?(node)
45
- def_node_matcher :example_group_with_body?, <<-PATTERN
45
+ def_node_matcher :example_group_with_body?, <<~PATTERN
46
46
  (block (send #rspec? #ExampleGroups.all ...) args !nil?)
47
47
  PATTERN
48
48
 
@@ -50,15 +50,15 @@ module RuboCop
50
50
  def_node_matcher :example?, '(block (send nil? #Examples.all ...) ...)'
51
51
 
52
52
  # @!method hook?(node)
53
- def_node_matcher :hook?, <<-PATTERN
54
- {
55
- (numblock (send nil? #Hooks.all ...) ...)
56
- (block (send nil? #Hooks.all ...) ...)
57
- }
53
+ def_node_matcher :hook?, <<~PATTERN
54
+ {
55
+ (numblock (send nil? #Hooks.all ...) ...)
56
+ (block (send nil? #Hooks.all ...) ...)
57
+ }
58
58
  PATTERN
59
59
 
60
60
  # @!method let?(node)
61
- def_node_matcher :let?, <<-PATTERN
61
+ def_node_matcher :let?, <<~PATTERN
62
62
  {
63
63
  (block (send nil? #Helpers.all ...) ...)
64
64
  (send nil? #Helpers.all _ block_pass)
@@ -66,7 +66,7 @@ module RuboCop
66
66
  PATTERN
67
67
 
68
68
  # @!method include?(node)
69
- def_node_matcher :include?, <<-PATTERN
69
+ def_node_matcher :include?, <<~PATTERN
70
70
  {
71
71
  (block (send nil? #Includes.all ...) ...)
72
72
  (send nil? #Includes.all ...)
@@ -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.24.1'
7
+ STRING = '2.26.0'
8
8
  end
9
9
  end
10
10
  end
@@ -6,6 +6,8 @@ module RuboCop
6
6
  class Wording
7
7
  SHOULDNT_PREFIX = /\Ashould(?:n't| not)\b/i.freeze
8
8
  SHOULDNT_BE_PREFIX = /#{SHOULDNT_PREFIX} be\b/i.freeze
9
+ WILL_NOT_PREFIX = /\Awill not\b/i.freeze
10
+ WONT_PREFIX = /\Awon't\b/i.freeze
9
11
  ES_SUFFIX_PATTERN = /(?:o|s|x|ch|sh|z)\z/i.freeze
10
12
  IES_SUFFIX_PATTERN = /[^aeou]y\z/i.freeze
11
13
 
@@ -15,16 +17,22 @@ module RuboCop
15
17
  @replacements = replace
16
18
  end
17
19
 
20
+ # rubocop:disable Metrics/MethodLength
18
21
  def rewrite
19
22
  case text
20
23
  when SHOULDNT_BE_PREFIX
21
24
  replace_prefix(SHOULDNT_BE_PREFIX, 'is not')
22
25
  when SHOULDNT_PREFIX
23
26
  replace_prefix(SHOULDNT_PREFIX, 'does not')
27
+ when WILL_NOT_PREFIX
28
+ replace_prefix(WILL_NOT_PREFIX, 'does not')
29
+ when WONT_PREFIX
30
+ replace_prefix(WONT_PREFIX, 'does not')
24
31
  else
25
32
  remove_should_and_pluralize
26
33
  end
27
34
  end
35
+ # rubocop:enable Metrics/MethodLength
28
36
 
29
37
  private
30
38
 
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.24.1
4
+ version: 2.26.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: 2023-09-23 00:00:00.000000000 Z
13
+ date: 2024-01-04 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rubocop
@@ -18,14 +18,14 @@ dependencies:
18
18
  requirements:
19
19
  - - "~>"
20
20
  - !ruby/object:Gem::Version
21
- version: '1.33'
21
+ version: '1.40'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - "~>"
27
27
  - !ruby/object:Gem::Version
28
- version: '1.33'
28
+ version: '1.40'
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: rubocop-capybara
31
31
  requirement: !ruby/object:Gem::Requirement
@@ -54,9 +54,9 @@ dependencies:
54
54
  - - "~>"
55
55
  - !ruby/object:Gem::Version
56
56
  version: '2.22'
57
- description: |2
58
- Code style checking for RSpec files.
59
- A plugin for the RuboCop code style enforcing & linting tool.
57
+ description: |
58
+ Code style checking for RSpec files.
59
+ A plugin for the RuboCop code style enforcing & linting tool.
60
60
  email:
61
61
  - johncbackus@gmail.com
62
62
  - ian@nevir.net
@@ -185,6 +185,8 @@ files:
185
185
  - lib/rubocop/cop/rspec/receive_messages.rb
186
186
  - lib/rubocop/cop/rspec/receive_never.rb
187
187
  - lib/rubocop/cop/rspec/redundant_around.rb
188
+ - lib/rubocop/cop/rspec/redundant_predicate_matcher.rb
189
+ - lib/rubocop/cop/rspec/remove_const.rb
188
190
  - lib/rubocop/cop/rspec/repeated_description.rb
189
191
  - lib/rubocop/cop/rspec/repeated_example.rb
190
192
  - lib/rubocop/cop/rspec/repeated_example_group_body.rb
@@ -249,7 +251,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
249
251
  - !ruby/object:Gem::Version
250
252
  version: '0'
251
253
  requirements: []
252
- rubygems_version: 3.4.12
254
+ rubygems_version: 3.4.21
253
255
  signing_key:
254
256
  specification_version: 4
255
257
  summary: Code style checking for RSpec files