rubocop-rspec 2.29.2 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +28 -0
  3. data/README.md +1 -1
  4. data/config/default.yml +62 -264
  5. data/config/obsoletion.yml +11 -0
  6. data/lib/rubocop/cop/rspec/base.rb +0 -1
  7. data/lib/rubocop/cop/rspec/dialect.rb +13 -0
  8. data/lib/rubocop/cop/rspec/expect_actual.rb +1 -1
  9. data/lib/rubocop/cop/rspec/expect_in_hook.rb +1 -1
  10. data/lib/rubocop/cop/rspec/expect_in_let.rb +42 -0
  11. data/lib/rubocop/cop/rspec/leaky_constant_declaration.rb +1 -1
  12. data/lib/rubocop/cop/rspec/missing_expectation_target_method.rb +54 -0
  13. data/lib/rubocop/cop/rspec/multiple_describes.rb +1 -1
  14. data/lib/rubocop/cop/rspec/multiple_expectations.rb +2 -2
  15. data/lib/rubocop/cop/rspec/multiple_memoized_helpers.rb +2 -4
  16. data/lib/rubocop/cop/rspec/named_subject.rb +5 -2
  17. data/lib/rubocop/cop/rspec/predicate_matcher.rb +1 -1
  18. data/lib/rubocop/cop/rspec/remove_const.rb +0 -1
  19. data/lib/rubocop/cop/rspec/scattered_setup.rb +1 -1
  20. data/lib/rubocop/cop/rspec/sort_metadata.rb +1 -1
  21. data/lib/rubocop/cop/rspec/stubbed_mock.rb +3 -1
  22. data/lib/rubocop/cop/rspec/subject_stub.rb +2 -2
  23. data/lib/rubocop/cop/rspec_cops.rb +2 -25
  24. data/lib/rubocop/rspec/concept.rb +0 -1
  25. data/lib/rubocop/rspec/config_formatter.rb +1 -24
  26. data/lib/rubocop/rspec/cop/generator.rb +25 -0
  27. data/lib/rubocop/rspec/language.rb +0 -1
  28. data/lib/rubocop/rspec/shared_contexts/default_rspec_language_config_context.rb +1 -1
  29. data/lib/rubocop/rspec/version.rb +1 -1
  30. data/lib/rubocop-rspec.rb +1 -17
  31. metadata +7 -69
  32. data/lib/rubocop/cop/rspec/capybara/current_path_expectation.rb +0 -39
  33. data/lib/rubocop/cop/rspec/capybara/feature_methods.rb +0 -104
  34. data/lib/rubocop/cop/rspec/capybara/match_style.rb +0 -38
  35. data/lib/rubocop/cop/rspec/capybara/negation_matcher.rb +0 -33
  36. data/lib/rubocop/cop/rspec/capybara/specific_actions.rb +0 -29
  37. data/lib/rubocop/cop/rspec/capybara/specific_finders.rb +0 -24
  38. data/lib/rubocop/cop/rspec/capybara/specific_matcher.rb +0 -35
  39. data/lib/rubocop/cop/rspec/capybara/visibility_matcher.rb +0 -36
  40. data/lib/rubocop/cop/rspec/factory_bot/attribute_defined_statically.rb +0 -35
  41. data/lib/rubocop/cop/rspec/factory_bot/consistent_parentheses_style.rb +0 -50
  42. data/lib/rubocop/cop/rspec/factory_bot/create_list.rb +0 -40
  43. data/lib/rubocop/cop/rspec/factory_bot/factory_class_name.rb +0 -29
  44. data/lib/rubocop/cop/rspec/factory_bot/factory_name_style.rb +0 -33
  45. data/lib/rubocop/cop/rspec/factory_bot/syntax_methods.rb +0 -55
  46. data/lib/rubocop/cop/rspec/file_path.rb +0 -179
  47. data/lib/rubocop/cop/rspec/rails/avoid_setup_hook.rb +0 -27
  48. data/lib/rubocop/cop/rspec/rails/have_http_status.rb +0 -35
  49. data/lib/rubocop/cop/rspec/rails/http_status.rb +0 -61
  50. data/lib/rubocop/cop/rspec/rails/inferred_spec_type.rb +0 -62
  51. data/lib/rubocop/cop/rspec/rails/minitest_assertions.rb +0 -39
  52. data/lib/rubocop/cop/rspec/rails/negation_be_valid.rb +0 -39
  53. data/lib/rubocop/cop/rspec/rails/travel_around.rb +0 -34
  54. data/lib/rubocop/rspec/language/node_pattern.rb +0 -48
@@ -6,7 +6,6 @@ module RuboCop
6
6
  # @abstract parent class to RSpec cops
7
7
  class Base < ::RuboCop::Cop::Base
8
8
  include RuboCop::RSpec::Language
9
- extend RuboCop::RSpec::Language::NodePattern
10
9
 
11
10
  exclude_from_registry
12
11
 
@@ -29,6 +29,19 @@ module RuboCop
29
29
  # PreferredMethods:
30
30
  # context: describe
31
31
  #
32
+ # If you were previously using the `RSpec/Capybara/FeatureMethods` cop and
33
+ # want to keep disabling all Capybara-specific methods that have the same
34
+ # native RSpec method (e.g. are just aliases), use the following config:
35
+ #
36
+ # RSpec/Dialect:
37
+ # PreferredMethods:
38
+ # background: :before
39
+ # scenario: :it
40
+ # xscenario: :xit
41
+ # given: :let
42
+ # given!: :let!
43
+ # feature: :describe
44
+ #
32
45
  # You can expect the following behavior:
33
46
  #
34
47
  # @example
@@ -97,7 +97,7 @@ module RuboCop
97
97
 
98
98
  def complex_literal?(node)
99
99
  COMPLEX_LITERALS.include?(node.type) &&
100
- node.each_child_node.all?(&method(:literal?))
100
+ node.each_child_node.all? { |child_node| literal?(child_node) }
101
101
  end
102
102
  end
103
103
  end
@@ -27,7 +27,7 @@ module RuboCop
27
27
  # @!method expectation(node)
28
28
  def_node_search :expectation, '(send nil? #Expectations.all ...)'
29
29
 
30
- def on_block(node) # rubocop:disable InternalAffairs/NumblockHandler
30
+ def on_block(node)
31
31
  return unless hook?(node)
32
32
  return if node.body.nil?
33
33
 
@@ -0,0 +1,42 @@
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) # rubocop:disable InternalAffairs/NumblockHandler
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
+ private
35
+
36
+ def message(expect)
37
+ format(MSG, expect: expect.method_name)
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -119,7 +119,7 @@ module RuboCop
119
119
  private
120
120
 
121
121
  def inside_describe_block?(node)
122
- node.each_ancestor(:block).any?(&method(:spec_group?))
122
+ node.each_ancestor(:block).any? { |ancestor| spec_group?(ancestor) }
123
123
  end
124
124
  end
125
125
  end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module RSpec
6
+ # Checks if `.to`, `not_to` or `to_not` are used.
7
+ #
8
+ # The RSpec::Expectations::ExpectationTarget must use `to`, `not_to` or
9
+ # `to_not` to run. Therefore, this cop checks if other methods are used.
10
+ #
11
+ # @example
12
+ # # bad
13
+ # expect(something).kind_of? Foo
14
+ # is_expected == 42
15
+ # expect{something}.eq? BarError
16
+ #
17
+ # # good
18
+ # expect(something).to be_a Foo
19
+ # is_expected.to eq 42
20
+ # expect{something}.to raise_error BarError
21
+ #
22
+ class MissingExpectationTargetMethod < Base
23
+ MSG = 'Use `.to`, `.not_to` or `.to_not` to set an expectation.'
24
+ RESTRICT_ON_SEND = %i[expect is_expected].freeze
25
+
26
+ # @!method expect?(node)
27
+ def_node_matcher :expect?, <<~PATTERN
28
+ {
29
+ (send nil? :expect ...)
30
+ (send nil? :is_expected)
31
+ }
32
+ PATTERN
33
+
34
+ # @!method expect_block?(node)
35
+ def_node_matcher :expect_block?, <<~PATTERN
36
+ (block #expect? (args) _body)
37
+ PATTERN
38
+
39
+ # @!method expectation_without_runner?(node)
40
+ def_node_matcher :expectation_without_runner?, <<~PATTERN
41
+ (send {#expect? #expect_block?} !#Runners.all ...)
42
+ PATTERN
43
+
44
+ def on_send(node)
45
+ node = node.parent if node.parent&.block_type?
46
+
47
+ expectation_without_runner?(node.parent) do
48
+ add_offense(node.parent.loc.selector)
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -30,7 +30,7 @@ module RuboCop
30
30
 
31
31
  def on_top_level_group(node)
32
32
  top_level_example_groups =
33
- top_level_groups.select(&method(:example_group?))
33
+ top_level_groups.select { |group| example_group?(group) }
34
34
 
35
35
  return if top_level_example_groups.one?
36
36
  return unless top_level_example_groups.first.equal?(node)
@@ -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_NODE = lambda(&:true_type?)
76
76
 
77
77
  # @!method aggregate_failures?(node)
78
78
  def_node_matcher :aggregate_failures?, <<~PATTERN
@@ -110,7 +110,7 @@ module RuboCop
110
110
  node_with_aggregate_failures = find_aggregate_failures(example_node)
111
111
  return false unless node_with_aggregate_failures
112
112
 
113
- aggregate_failures?(node_with_aggregate_failures, TRUE)
113
+ aggregate_failures?(node_with_aggregate_failures, TRUE_NODE)
114
114
  end
115
115
 
116
116
  def find_aggregate_failures(example_node)
@@ -108,10 +108,8 @@ module RuboCop
108
108
  attr_reader :example_group_memoized_helpers
109
109
 
110
110
  def all_helpers(node)
111
- [
112
- *helpers(node),
113
- *node.each_ancestor(:block).flat_map(&method(:helpers))
114
- ]
111
+ helpers(node) +
112
+ node.each_ancestor(:block).flat_map { |ancestor| helpers(ancestor) }
115
113
  end
116
114
 
117
115
  def helpers(node)
@@ -107,8 +107,11 @@ module RuboCop
107
107
  private
108
108
 
109
109
  def ignored_shared_example?(node)
110
- cop_config['IgnoreSharedExamples'] &&
111
- node.each_ancestor(:block).any?(&method(:shared_example?))
110
+ return false unless cop_config['IgnoreSharedExamples']
111
+
112
+ node.each_ancestor(:block).any? do |ancestor|
113
+ shared_example?(ancestor)
114
+ end
112
115
  end
113
116
 
114
117
  def check_explicit_subject(node)
@@ -174,7 +174,7 @@ module RuboCop
174
174
 
175
175
  def heredoc_argument?(matcher)
176
176
  matcher.arguments.select do |arg|
177
- %i[str dstr xstr].include?(arg.type)
177
+ arg.str_type? || arg.dstr_type? || arg.xstr_type?
178
178
  end.any?(&:heredoc?)
179
179
  end
180
180
 
@@ -17,7 +17,6 @@ module RuboCop
17
17
  #
18
18
  class RemoveConst < Base
19
19
  include RuboCop::RSpec::Language
20
- extend RuboCop::RSpec::Language::NodePattern
21
20
 
22
21
  MSG = 'Do not use remove_const in specs. ' \
23
22
  'Consider using e.g. `stub_const`.'
@@ -76,7 +76,7 @@ module RuboCop
76
76
  return if first_occurrence == occurrence || !first_occurrence.body
77
77
 
78
78
  corrector.insert_after(first_occurrence.body,
79
- "\n#{occurrence.body.source}")
79
+ "\n#{occurrence.body&.source}")
80
80
  corrector.remove(range_by_whole_lines(occurrence.source_range,
81
81
  include_final_newline: true))
82
82
  end
@@ -58,7 +58,7 @@ module RuboCop
58
58
 
59
59
  def sort_symbols(symbols)
60
60
  symbols.sort_by do |symbol|
61
- if %i[str sym].include?(symbol.type)
61
+ if symbol.str_type? || symbol.sym_type?
62
62
  symbol.value.to_s.downcase
63
63
  else
64
64
  symbol.source.downcase
@@ -136,7 +136,9 @@ module RuboCop
136
136
  RESTRICT_ON_SEND = %i[to].freeze
137
137
 
138
138
  def on_send(node)
139
- expectation(node, &method(:on_expectation))
139
+ expectation(node) do |expectation, method_name, matcher|
140
+ on_expectation(expectation, method_name, matcher)
141
+ end
140
142
  end
141
143
 
142
144
  private
@@ -113,8 +113,8 @@ module RuboCop
113
113
  PATTERN
114
114
 
115
115
  def on_top_level_group(node)
116
- @explicit_subjects = find_all_explicit(node, &method(:subject?))
117
- @subject_overrides = find_all_explicit(node, &method(:let?))
116
+ @explicit_subjects = find_all_explicit(node) { |n| subject?(n) }
117
+ @subject_overrides = find_all_explicit(node) { |n| let?(n) }
118
118
 
119
119
  find_subject_expectations(node) do |stub|
120
120
  add_offense(stub)
@@ -1,29 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'rspec/capybara/current_path_expectation'
4
- require_relative 'rspec/capybara/feature_methods'
5
- require_relative 'rspec/capybara/match_style'
6
- require_relative 'rspec/capybara/negation_matcher'
7
- require_relative 'rspec/capybara/specific_actions'
8
- require_relative 'rspec/capybara/specific_finders'
9
- require_relative 'rspec/capybara/specific_matcher'
10
- require_relative 'rspec/capybara/visibility_matcher'
11
-
12
- require_relative 'rspec/factory_bot/attribute_defined_statically'
13
- require_relative 'rspec/factory_bot/consistent_parentheses_style'
14
- require_relative 'rspec/factory_bot/create_list'
15
- require_relative 'rspec/factory_bot/factory_class_name'
16
- require_relative 'rspec/factory_bot/factory_name_style'
17
- require_relative 'rspec/factory_bot/syntax_methods'
18
-
19
- require_relative 'rspec/rails/avoid_setup_hook'
20
- require_relative 'rspec/rails/have_http_status'
21
- require_relative 'rspec/rails/http_status'
22
- require_relative 'rspec/rails/inferred_spec_type'
23
- require_relative 'rspec/rails/minitest_assertions'
24
- require_relative 'rspec/rails/negation_be_valid'
25
- require_relative 'rspec/rails/travel_around'
26
-
27
3
  require_relative 'rspec/align_left_let_brace'
28
4
  require_relative 'rspec/align_right_let_brace'
29
5
  require_relative 'rspec/any_instance'
@@ -63,8 +39,8 @@ require_relative 'rspec/excessive_docstring_spacing'
63
39
  require_relative 'rspec/expect_actual'
64
40
  require_relative 'rspec/expect_change'
65
41
  require_relative 'rspec/expect_in_hook'
42
+ require_relative 'rspec/expect_in_let'
66
43
  require_relative 'rspec/expect_output'
67
- require_relative 'rspec/file_path'
68
44
  require_relative 'rspec/focus'
69
45
  require_relative 'rspec/hook_argument'
70
46
  require_relative 'rspec/hooks_before_examples'
@@ -88,6 +64,7 @@ require_relative 'rspec/message_expectation'
88
64
  require_relative 'rspec/message_spies'
89
65
  require_relative 'rspec/metadata_style'
90
66
  require_relative 'rspec/missing_example_group_argument'
67
+ require_relative 'rspec/missing_expectation_target_method'
91
68
  require_relative 'rspec/multiple_describes'
92
69
  require_relative 'rspec/multiple_expectations'
93
70
  require_relative 'rspec/multiple_memoized_helpers'
@@ -5,7 +5,6 @@ module RuboCop
5
5
  # Wrapper for RSpec DSL methods
6
6
  class Concept
7
7
  extend RuboCop::NodePattern::Macros
8
- extend Language::NodePattern
9
8
  include Language
10
9
 
11
10
  def initialize(node)
@@ -7,29 +7,7 @@ module RuboCop
7
7
  # Builds a YAML config file from two config hashes
8
8
  class ConfigFormatter
9
9
  EXTENSION_ROOT_DEPARTMENT = %r{^(RSpec/)}.freeze
10
- SUBDEPARTMENTS = %(RSpec/Capybara RSpec/FactoryBot RSpec/Rails)
11
- EXTRACTED_COPS = %(
12
- RSpec/Capybara/CurrentPathExpectation
13
- RSpec/Capybara/MatchStyle
14
- RSpec/Capybara/NegationMatcher
15
- RSpec/Capybara/SpecificActions
16
- RSpec/Capybara/SpecificFinders
17
- RSpec/Capybara/SpecificMatcher
18
- RSpec/Capybara/VisibilityMatcher
19
- RSpec/FactoryBot/AttributeDefinedStatically
20
- RSpec/FactoryBot/ConsistentParenthesesStyle
21
- RSpec/FactoryBot/CreateList
22
- RSpec/FactoryBot/FactoryClassName
23
- RSpec/FactoryBot/FactoryNameStyle
24
- RSpec/FactoryBot/SyntaxMethods
25
- RSpec/Rails/AvoidSetupHook
26
- RSpec/Rails/HaveHttpStatus
27
- RSpec/Rails/HttpStatus
28
- RSpec/Rails/InferredSpecType
29
- RSpec/Rails/MinitestAssertions
30
- RSpec/Rails/NegationBeValid
31
- RSpec/Rails/TravelAround
32
- )
10
+ SUBDEPARTMENTS = [].freeze
33
11
  AMENDMENTS = %(Metrics/BlockLength)
34
12
  COP_DOC_BASE_URL = 'https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/'
35
13
 
@@ -51,7 +29,6 @@ module RuboCop
51
29
  def unified_config
52
30
  cops.each_with_object(config.dup) do |cop, unified|
53
31
  next if SUBDEPARTMENTS.include?(cop) || AMENDMENTS.include?(cop)
54
- next if EXTRACTED_COPS.include?(cop)
55
32
 
56
33
  replace_nil(unified[cop])
57
34
  unified[cop].merge!(descriptions.fetch(cop))
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module RSpec
5
+ module Cop
6
+ # Source and spec generator for new cops
7
+ #
8
+ # This generator will take a cop name and generate a source file
9
+ # and spec file when given a valid qualified cop name.
10
+ # @api private
11
+ class Generator < RuboCop::Cop::Generator
12
+ def todo
13
+ <<~TODO
14
+ Do 4 steps:
15
+ 1. Modify the description of #{badge} in config/default.yml
16
+ 2. Implement your new cop in the generated file!
17
+ 3. Add an entry about new cop to CHANGELOG.md
18
+ 4. Commit your new cop with a message such as
19
+ e.g. "Add new `#{badge}` cop"
20
+ TODO
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -13,7 +13,6 @@ module RuboCop
13
13
  # using the configured aliases.
14
14
  module Language
15
15
  extend RuboCop::NodePattern::Macros
16
- extend NodePattern
17
16
 
18
17
  class << self
19
18
  attr_accessor :config
@@ -21,7 +21,7 @@ RSpec.shared_context 'with default RSpec/Language config' do
21
21
  when Array
22
22
  object.map { |item| deep_dup(item) }
23
23
  when Hash
24
- object.transform_values(&method(:deep_dup))
24
+ object.transform_values { |value| deep_dup(value) }
25
25
  else
26
26
  object # only collections undergo modifications and need duping
27
27
  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.2'
7
+ STRING = '3.0.1'
8
8
  end
9
9
  end
10
10
  end
data/lib/rubocop-rspec.rb CHANGED
@@ -4,19 +4,14 @@ require 'pathname'
4
4
  require 'yaml'
5
5
 
6
6
  require 'rubocop'
7
- require 'rubocop-capybara'
8
- require 'rubocop-factory_bot'
9
7
 
10
8
  require_relative 'rubocop/rspec'
11
9
  require_relative 'rubocop/rspec/inject'
12
- require_relative 'rubocop/rspec/language/node_pattern'
10
+ require_relative 'rubocop/rspec/language'
13
11
  require_relative 'rubocop/rspec/node'
14
12
  require_relative 'rubocop/rspec/version'
15
13
  require_relative 'rubocop/rspec/wording'
16
14
 
17
- # Dependent on `RuboCop::RSpec::Language::NodePattern`.
18
- require_relative 'rubocop/rspec/language'
19
-
20
15
  require_relative 'rubocop/cop/rspec/mixin/file_help'
21
16
  require_relative 'rubocop/cop/rspec/mixin/final_end_location'
22
17
  require_relative 'rubocop/cop/rspec/mixin/inside_example_group'
@@ -39,9 +34,6 @@ require_relative 'rubocop/rspec/example'
39
34
  require_relative 'rubocop/rspec/example_group'
40
35
  require_relative 'rubocop/rspec/hook'
41
36
 
42
- # need after `require 'rubocop/cop/rspec/base'``
43
- require 'rubocop-rspec_rails'
44
-
45
37
  RuboCop::RSpec::Inject.defaults!
46
38
 
47
39
  require_relative 'rubocop/cop/rspec_cops'
@@ -58,12 +50,4 @@ RuboCop::Cop::Layout::ExtraSpacing.singleton_class.prepend(
58
50
  end
59
51
  )
60
52
 
61
- RuboCop::Cop::Style::TrailingCommaInArguments.singleton_class.prepend(
62
- Module.new do
63
- def autocorrect_incompatible_with
64
- super.push(RuboCop::Cop::RSpec::Capybara::CurrentPathExpectation)
65
- end
66
- end
67
- )
68
-
69
53
  RuboCop::AST::Node.include(RuboCop::RSpec::Node)
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.2
4
+ version: 3.0.1
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-05-02 00:00:00.000000000 Z
13
+ date: 2024-06-11 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rubocop
@@ -18,56 +18,14 @@ dependencies:
18
18
  requirements:
19
19
  - - "~>"
20
20
  - !ruby/object:Gem::Version
21
- version: '1.40'
21
+ version: '1.61'
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.40'
29
- - !ruby/object:Gem::Dependency
30
- name: rubocop-capybara
31
- requirement: !ruby/object:Gem::Requirement
32
- requirements:
33
- - - "~>"
34
- - !ruby/object:Gem::Version
35
- version: '2.17'
36
- type: :runtime
37
- prerelease: false
38
- version_requirements: !ruby/object:Gem::Requirement
39
- requirements:
40
- - - "~>"
41
- - !ruby/object:Gem::Version
42
- version: '2.17'
43
- - !ruby/object:Gem::Dependency
44
- name: rubocop-factory_bot
45
- requirement: !ruby/object:Gem::Requirement
46
- requirements:
47
- - - "~>"
48
- - !ruby/object:Gem::Version
49
- version: '2.22'
50
- type: :runtime
51
- prerelease: false
52
- version_requirements: !ruby/object:Gem::Requirement
53
- requirements:
54
- - - "~>"
55
- - !ruby/object:Gem::Version
56
- version: '2.22'
57
- - !ruby/object:Gem::Dependency
58
- name: rubocop-rspec_rails
59
- requirement: !ruby/object:Gem::Requirement
60
- requirements:
61
- - - "~>"
62
- - !ruby/object:Gem::Version
63
- version: '2.28'
64
- type: :runtime
65
- prerelease: false
66
- version_requirements: !ruby/object:Gem::Requirement
67
- requirements:
68
- - - "~>"
69
- - !ruby/object:Gem::Version
70
- version: '2.28'
28
+ version: '1.61'
71
29
  description: |
72
30
  Code style checking for RSpec files.
73
31
  A plugin for the RuboCop code style enforcing & linting tool.
@@ -99,14 +57,6 @@ files:
99
57
  - lib/rubocop/cop/rspec/be_eql.rb
100
58
  - lib/rubocop/cop/rspec/be_nil.rb
101
59
  - lib/rubocop/cop/rspec/before_after_all.rb
102
- - lib/rubocop/cop/rspec/capybara/current_path_expectation.rb
103
- - lib/rubocop/cop/rspec/capybara/feature_methods.rb
104
- - lib/rubocop/cop/rspec/capybara/match_style.rb
105
- - lib/rubocop/cop/rspec/capybara/negation_matcher.rb
106
- - lib/rubocop/cop/rspec/capybara/specific_actions.rb
107
- - lib/rubocop/cop/rspec/capybara/specific_finders.rb
108
- - lib/rubocop/cop/rspec/capybara/specific_matcher.rb
109
- - lib/rubocop/cop/rspec/capybara/visibility_matcher.rb
110
60
  - lib/rubocop/cop/rspec/change_by_zero.rb
111
61
  - lib/rubocop/cop/rspec/class_check.rb
112
62
  - lib/rubocop/cop/rspec/contain_exactly.rb
@@ -136,14 +86,8 @@ files:
136
86
  - lib/rubocop/cop/rspec/expect_actual.rb
137
87
  - lib/rubocop/cop/rspec/expect_change.rb
138
88
  - lib/rubocop/cop/rspec/expect_in_hook.rb
89
+ - lib/rubocop/cop/rspec/expect_in_let.rb
139
90
  - lib/rubocop/cop/rspec/expect_output.rb
140
- - lib/rubocop/cop/rspec/factory_bot/attribute_defined_statically.rb
141
- - lib/rubocop/cop/rspec/factory_bot/consistent_parentheses_style.rb
142
- - lib/rubocop/cop/rspec/factory_bot/create_list.rb
143
- - lib/rubocop/cop/rspec/factory_bot/factory_class_name.rb
144
- - lib/rubocop/cop/rspec/factory_bot/factory_name_style.rb
145
- - lib/rubocop/cop/rspec/factory_bot/syntax_methods.rb
146
- - lib/rubocop/cop/rspec/file_path.rb
147
91
  - lib/rubocop/cop/rspec/focus.rb
148
92
  - lib/rubocop/cop/rspec/hook_argument.rb
149
93
  - lib/rubocop/cop/rspec/hooks_before_examples.rb
@@ -167,6 +111,7 @@ files:
167
111
  - lib/rubocop/cop/rspec/message_spies.rb
168
112
  - lib/rubocop/cop/rspec/metadata_style.rb
169
113
  - lib/rubocop/cop/rspec/missing_example_group_argument.rb
114
+ - lib/rubocop/cop/rspec/missing_expectation_target_method.rb
170
115
  - lib/rubocop/cop/rspec/mixin/comments_help.rb
171
116
  - lib/rubocop/cop/rspec/mixin/empty_line_separation.rb
172
117
  - lib/rubocop/cop/rspec/mixin/file_help.rb
@@ -190,13 +135,6 @@ files:
190
135
  - lib/rubocop/cop/rspec/pending.rb
191
136
  - lib/rubocop/cop/rspec/pending_without_reason.rb
192
137
  - lib/rubocop/cop/rspec/predicate_matcher.rb
193
- - lib/rubocop/cop/rspec/rails/avoid_setup_hook.rb
194
- - lib/rubocop/cop/rspec/rails/have_http_status.rb
195
- - lib/rubocop/cop/rspec/rails/http_status.rb
196
- - lib/rubocop/cop/rspec/rails/inferred_spec_type.rb
197
- - lib/rubocop/cop/rspec/rails/minitest_assertions.rb
198
- - lib/rubocop/cop/rspec/rails/negation_be_valid.rb
199
- - lib/rubocop/cop/rspec/rails/travel_around.rb
200
138
  - lib/rubocop/cop/rspec/receive_counts.rb
201
139
  - lib/rubocop/cop/rspec/receive_messages.rb
202
140
  - lib/rubocop/cop/rspec/receive_never.rb
@@ -235,6 +173,7 @@ files:
235
173
  - lib/rubocop/rspec/align_let_brace.rb
236
174
  - lib/rubocop/rspec/concept.rb
237
175
  - lib/rubocop/rspec/config_formatter.rb
176
+ - lib/rubocop/rspec/cop/generator.rb
238
177
  - lib/rubocop/rspec/corrector/move_node.rb
239
178
  - lib/rubocop/rspec/description_extractor.rb
240
179
  - lib/rubocop/rspec/example.rb
@@ -242,7 +181,6 @@ files:
242
181
  - lib/rubocop/rspec/hook.rb
243
182
  - lib/rubocop/rspec/inject.rb
244
183
  - lib/rubocop/rspec/language.rb
245
- - lib/rubocop/rspec/language/node_pattern.rb
246
184
  - lib/rubocop/rspec/node.rb
247
185
  - lib/rubocop/rspec/shared_contexts/default_rspec_language_config_context.rb
248
186
  - lib/rubocop/rspec/version.rb
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Cop
5
- module RSpec
6
- module Capybara
7
- # @!parse
8
- # # Checks that no expectations are set on Capybara's `current_path`.
9
- # #
10
- # # The
11
- # # https://www.rubydoc.info/github/teamcapybara/capybara/master/Capybara/RSpecMatchers#have_current_path-instance_method[`have_current_path` matcher]
12
- # # should be used on `page` to set expectations on Capybara's
13
- # # current path, since it uses
14
- # # https://github.com/teamcapybara/capybara/blob/master/README.md#asynchronous-javascript-ajax-and-friends[Capybara's waiting functionality]
15
- # # which ensures that preceding actions (like `click_link`) have
16
- # # completed.
17
- # #
18
- # # This cop does not support autocorrection in some cases.
19
- # #
20
- # # @example
21
- # # # bad
22
- # # expect(current_path).to eq('/callback')
23
- # #
24
- # # # good
25
- # # expect(page).to have_current_path('/callback')
26
- # #
27
- # # # bad (does not support autocorrection)
28
- # # expect(page.current_path).to match(variable)
29
- # #
30
- # # # good
31
- # # expect(page).to have_current_path('/callback')
32
- # #
33
- # class CurrentPathExpectation < ::RuboCop::Cop::Base; end
34
- CurrentPathExpectation =
35
- ::RuboCop::Cop::Capybara::CurrentPathExpectation
36
- end
37
- end
38
- end
39
- end