rubocop-rspec 1.32.0 → 1.33.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (162) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -0
  3. data/Gemfile +2 -0
  4. data/Rakefile +2 -0
  5. data/config/default.yml +6 -0
  6. data/lib/rubocop-rspec.rb +3 -0
  7. data/lib/rubocop/cop/rspec/align_left_let_brace.rb +1 -1
  8. data/lib/rubocop/cop/rspec/align_right_let_brace.rb +1 -1
  9. data/lib/rubocop/cop/rspec/any_instance.rb +3 -1
  10. data/lib/rubocop/cop/rspec/around_block.rb +4 -2
  11. data/lib/rubocop/cop/rspec/be.rb +4 -2
  12. data/lib/rubocop/cop/rspec/be_eql.rb +3 -1
  13. data/lib/rubocop/cop/rspec/before_after_all.rb +1 -1
  14. data/lib/rubocop/cop/rspec/capybara/current_path_expectation.rb +5 -3
  15. data/lib/rubocop/cop/rspec/capybara/feature_methods.rb +3 -3
  16. data/lib/rubocop/cop/rspec/context_wording.rb +2 -2
  17. data/lib/rubocop/cop/rspec/describe_class.rb +4 -4
  18. data/lib/rubocop/cop/rspec/describe_method.rb +2 -2
  19. data/lib/rubocop/cop/rspec/describe_symbol.rb +2 -2
  20. data/lib/rubocop/cop/rspec/described_class.rb +3 -3
  21. data/lib/rubocop/cop/rspec/dialect.rb +76 -0
  22. data/lib/rubocop/cop/rspec/empty_example_group.rb +1 -1
  23. data/lib/rubocop/cop/rspec/empty_line_after_example_group.rb +1 -1
  24. data/lib/rubocop/cop/rspec/empty_line_after_final_let.rb +1 -1
  25. data/lib/rubocop/cop/rspec/empty_line_after_hook.rb +1 -1
  26. data/lib/rubocop/cop/rspec/empty_line_after_subject.rb +1 -1
  27. data/lib/rubocop/cop/rspec/example_length.rb +1 -1
  28. data/lib/rubocop/cop/rspec/example_without_description.rb +2 -2
  29. data/lib/rubocop/cop/rspec/example_wording.rb +2 -2
  30. data/lib/rubocop/cop/rspec/expect_actual.rb +1 -1
  31. data/lib/rubocop/cop/rspec/expect_change.rb +2 -2
  32. data/lib/rubocop/cop/rspec/expect_in_hook.rb +1 -1
  33. data/lib/rubocop/cop/rspec/expect_output.rb +1 -1
  34. data/lib/rubocop/cop/rspec/factory_bot/attribute_defined_statically.rb +21 -40
  35. data/lib/rubocop/cop/rspec/factory_bot/create_list.rb +2 -2
  36. data/lib/rubocop/cop/rspec/file_path.rb +2 -2
  37. data/lib/rubocop/cop/rspec/focus.rb +3 -3
  38. data/lib/rubocop/cop/rspec/hook_argument.rb +4 -6
  39. data/lib/rubocop/cop/rspec/hooks_before_examples.rb +2 -5
  40. data/lib/rubocop/cop/rspec/implicit_expect.rb +2 -2
  41. data/lib/rubocop/cop/rspec/implicit_subject.rb +1 -1
  42. data/lib/rubocop/cop/rspec/instance_spy.rb +1 -1
  43. data/lib/rubocop/cop/rspec/instance_variable.rb +1 -1
  44. data/lib/rubocop/cop/rspec/invalid_predicate_matcher.rb +4 -2
  45. data/lib/rubocop/cop/rspec/it_behaves_like.rb +1 -1
  46. data/lib/rubocop/cop/rspec/iterated_expectation.rb +3 -1
  47. data/lib/rubocop/cop/rspec/leading_subject.rb +1 -2
  48. data/lib/rubocop/cop/rspec/let_before_examples.rb +2 -5
  49. data/lib/rubocop/cop/rspec/let_setup.rb +1 -1
  50. data/lib/rubocop/cop/rspec/message_chain.rb +3 -1
  51. data/lib/rubocop/cop/rspec/message_expectation.rb +1 -1
  52. data/lib/rubocop/cop/rspec/message_spies.rb +3 -4
  53. data/lib/rubocop/cop/rspec/missing_example_group_argument.rb +1 -1
  54. data/lib/rubocop/cop/rspec/multiple_describes.rb +1 -1
  55. data/lib/rubocop/cop/rspec/multiple_expectations.rb +1 -1
  56. data/lib/rubocop/cop/rspec/multiple_subjects.rb +6 -2
  57. data/lib/rubocop/cop/rspec/named_subject.rb +1 -1
  58. data/lib/rubocop/cop/rspec/nested_groups.rb +3 -4
  59. data/lib/rubocop/cop/rspec/not_to_not.rb +3 -1
  60. data/lib/rubocop/cop/rspec/overwriting_setup.rb +1 -1
  61. data/lib/rubocop/cop/rspec/pending.rb +3 -3
  62. data/lib/rubocop/cop/rspec/predicate_matcher.rb +17 -14
  63. data/lib/rubocop/cop/rspec/rails/http_status.rb +2 -2
  64. data/lib/rubocop/cop/rspec/receive_counts.rb +5 -6
  65. data/lib/rubocop/cop/rspec/receive_never.rb +4 -7
  66. data/lib/rubocop/cop/rspec/repeated_description.rb +3 -1
  67. data/lib/rubocop/cop/rspec/repeated_example.rb +3 -1
  68. data/lib/rubocop/cop/rspec/return_from_stub.rb +2 -2
  69. data/lib/rubocop/cop/rspec/scattered_let.rb +1 -1
  70. data/lib/rubocop/cop/rspec/scattered_setup.rb +1 -1
  71. data/lib/rubocop/cop/rspec/shared_context.rb +2 -2
  72. data/lib/rubocop/cop/rspec/shared_examples.rb +7 -7
  73. data/lib/rubocop/cop/rspec/single_argument_message_chain.rb +3 -1
  74. data/lib/rubocop/cop/rspec/subject_stub.rb +1 -1
  75. data/lib/rubocop/cop/rspec/unspecified_exception.rb +5 -3
  76. data/lib/rubocop/cop/rspec/verified_doubles.rb +2 -2
  77. data/lib/rubocop/cop/rspec/void_expect.rb +1 -1
  78. data/lib/rubocop/cop/rspec/yield.rb +2 -4
  79. data/lib/rubocop/cop/rspec_cops.rb +3 -0
  80. data/lib/rubocop/rspec.rb +2 -0
  81. data/lib/rubocop/rspec/blank_line_separation.rb +3 -1
  82. data/lib/rubocop/rspec/config_formatter.rb +3 -1
  83. data/lib/rubocop/rspec/description_extractor.rb +3 -1
  84. data/lib/rubocop/rspec/factory_bot.rb +58 -0
  85. data/lib/rubocop/rspec/final_end_location.rb +2 -0
  86. data/lib/rubocop/rspec/inject.rb +2 -0
  87. data/lib/rubocop/rspec/language.rb +9 -2
  88. data/lib/rubocop/rspec/top_level_describe.rb +2 -0
  89. data/lib/rubocop/rspec/version.rb +1 -1
  90. data/rubocop-rspec.gemspec +3 -1
  91. data/spec/project/changelog_spec.rb +2 -0
  92. data/spec/project/default_config_spec.rb +2 -0
  93. data/spec/project/project_requires_spec.rb +2 -0
  94. data/spec/rubocop/cop/rspec/align_left_let_brace_spec.rb +22 -37
  95. data/spec/rubocop/cop/rspec/align_right_let_brace_spec.rb +21 -36
  96. data/spec/rubocop/cop/rspec/any_instance_spec.rb +2 -0
  97. data/spec/rubocop/cop/rspec/around_block_spec.rb +2 -0
  98. data/spec/rubocop/cop/rspec/be_eql_spec.rb +25 -4
  99. data/spec/rubocop/cop/rspec/be_spec.rb +2 -0
  100. data/spec/rubocop/cop/rspec/before_after_all_spec.rb +2 -0
  101. data/spec/rubocop/cop/rspec/capybara/current_path_expectation_spec.rb +2 -0
  102. data/spec/rubocop/cop/rspec/capybara/feature_methods_spec.rb +2 -0
  103. data/spec/rubocop/cop/rspec/context_wording_spec.rb +32 -0
  104. data/spec/rubocop/cop/rspec/describe_class_spec.rb +2 -0
  105. data/spec/rubocop/cop/rspec/describe_method_spec.rb +2 -0
  106. data/spec/rubocop/cop/rspec/describe_symbol_spec.rb +2 -0
  107. data/spec/rubocop/cop/rspec/described_class_spec.rb +4 -1
  108. data/spec/rubocop/cop/rspec/dialect_spec.rb +78 -0
  109. data/spec/rubocop/cop/rspec/empty_line_after_example_group_spec.rb +40 -21
  110. data/spec/rubocop/cop/rspec/empty_line_after_final_let_spec.rb +77 -69
  111. data/spec/rubocop/cop/rspec/empty_line_after_hook_spec.rb +24 -19
  112. data/spec/rubocop/cop/rspec/empty_line_after_subject_spec.rb +16 -19
  113. data/spec/rubocop/cop/rspec/example_length_spec.rb +2 -0
  114. data/spec/rubocop/cop/rspec/example_without_description_spec.rb +2 -0
  115. data/spec/rubocop/cop/rspec/example_wording_spec.rb +45 -24
  116. data/spec/rubocop/cop/rspec/expect_change_spec.rb +22 -14
  117. data/spec/rubocop/cop/rspec/factory_bot/attribute_defined_statically_spec.rb +36 -0
  118. data/spec/rubocop/cop/rspec/factory_bot/create_list_spec.rb +2 -0
  119. data/spec/rubocop/cop/rspec/file_path_spec.rb +2 -0
  120. data/spec/rubocop/cop/rspec/focus_spec.rb +2 -2
  121. data/spec/rubocop/cop/rspec/hook_argument_spec.rb +2 -0
  122. data/spec/rubocop/cop/rspec/hooks_before_examples_spec.rb +47 -32
  123. data/spec/rubocop/cop/rspec/implicit_expect_spec.rb +20 -19
  124. data/spec/rubocop/cop/rspec/implicit_subject_spec.rb +56 -68
  125. data/spec/rubocop/cop/rspec/instance_spy_spec.rb +16 -15
  126. data/spec/rubocop/cop/rspec/instance_variable_spec.rb +2 -0
  127. data/spec/rubocop/cop/rspec/invalid_predicate_matcher_spec.rb +2 -0
  128. data/spec/rubocop/cop/rspec/it_behaves_like_spec.rb +10 -12
  129. data/spec/rubocop/cop/rspec/iterated_expectation_spec.rb +2 -0
  130. data/spec/rubocop/cop/rspec/leading_subject_spec.rb +31 -47
  131. data/spec/rubocop/cop/rspec/let_before_examples_spec.rb +27 -26
  132. data/spec/rubocop/cop/rspec/message_chain_spec.rb +2 -0
  133. data/spec/rubocop/cop/rspec/missing_example_group_argument_spec.rb +2 -0
  134. data/spec/rubocop/cop/rspec/multiple_describes_spec.rb +2 -0
  135. data/spec/rubocop/cop/rspec/multiple_subjects_spec.rb +24 -37
  136. data/spec/rubocop/cop/rspec/not_to_not_spec.rb +22 -32
  137. data/spec/rubocop/cop/rspec/overwriting_setup_spec.rb +2 -0
  138. data/spec/rubocop/cop/rspec/pending_spec.rb +2 -0
  139. data/spec/rubocop/cop/rspec/predicate_matcher_spec.rb +2 -0
  140. data/spec/rubocop/cop/rspec/receive_counts_spec.rb +47 -8
  141. data/spec/rubocop/cop/rspec/receive_never_spec.rb +16 -4
  142. data/spec/rubocop/cop/rspec/return_from_stub_spec.rb +95 -72
  143. data/spec/rubocop/cop/rspec/scattered_let_spec.rb +2 -0
  144. data/spec/rubocop/cop/rspec/scattered_setup_spec.rb +2 -0
  145. data/spec/rubocop/cop/rspec/shared_context_spec.rb +29 -34
  146. data/spec/rubocop/cop/rspec/shared_examples_spec.rb +16 -34
  147. data/spec/rubocop/cop/rspec/single_argument_message_chain_spec.rb +44 -48
  148. data/spec/rubocop/cop/rspec/unspecified_exception_spec.rb +2 -0
  149. data/spec/rubocop/cop/rspec/verified_doubles_spec.rb +2 -0
  150. data/spec/rubocop/cop/rspec/void_expect_spec.rb +2 -0
  151. data/spec/rubocop/cop/rspec/yield_spec.rb +22 -21
  152. data/spec/rubocop/rspec/config_formatter_spec.rb +2 -0
  153. data/spec/rubocop/rspec/description_extractor_spec.rb +2 -0
  154. data/spec/rubocop/rspec/language/selector_set_spec.rb +2 -0
  155. data/spec/rubocop/rspec/util/one_spec.rb +2 -0
  156. data/spec/rubocop/rspec/wording_spec.rb +2 -0
  157. data/spec/shared/autocorrect_behavior.rb +2 -0
  158. data/spec/shared/detects_style_behavior.rb +2 -0
  159. data/spec/shared/smoke_test_examples.rb +2 -0
  160. data/spec/spec_helper.rb +2 -0
  161. data/spec/support/expect_offense.rb +3 -1
  162. metadata +8 -4
@@ -23,7 +23,7 @@ module RuboCop
23
23
  # instance_double("ClassName", method_name: 'returned value')
24
24
  # end
25
25
  class VerifiedDoubles < Cop
26
- MSG = 'Prefer using verifying doubles over normal doubles.'.freeze
26
+ MSG = 'Prefer using verifying doubles over normal doubles.'
27
27
 
28
28
  def_node_matcher :unverified_double, <<-PATTERN
29
29
  {(send nil? {:double :spy} $...)}
@@ -41,7 +41,7 @@ module RuboCop
41
41
  private
42
42
 
43
43
  def symbol?(name)
44
- name && name.sym_type?
44
+ name&.sym_type?
45
45
  end
46
46
  end
47
47
  end
@@ -13,7 +13,7 @@ module RuboCop
13
13
  # expect(something).to be(1)
14
14
  class VoidExpect < Cop
15
15
  MSG = 'Do not use `expect()` without `.to` or `.not_to`. ' \
16
- 'Chain the methods or remove it.'.freeze
16
+ 'Chain the methods or remove it.'
17
17
 
18
18
  def_node_matcher :expect?, <<-PATTERN
19
19
  (send nil? :expect ...)
@@ -14,7 +14,7 @@ module RuboCop
14
14
  class Yield < Cop
15
15
  include RangeHelp
16
16
 
17
- MSG = 'Use `.and_yield`.'.freeze
17
+ MSG = 'Use `.and_yield`.'
18
18
 
19
19
  def_node_search :method_on_stub?, '(send nil? :receive ...)'
20
20
 
@@ -52,9 +52,7 @@ module RuboCop
52
52
  end
53
53
 
54
54
  def block_range(node)
55
- block_start = node.loc.begin.begin_pos
56
- block_end = node.loc.end.end_pos
57
- range_between(block_start, block_end)
55
+ node.loc.begin.with(end_pos: node.loc.end.end_pos)
58
56
  end
59
57
 
60
58
  def generate_replacement(node)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'rspec/capybara/current_path_expectation'
2
4
  require_relative 'rspec/capybara/feature_methods'
3
5
 
@@ -22,6 +24,7 @@ require_relative 'rspec/describe_class'
22
24
  require_relative 'rspec/describe_method'
23
25
  require_relative 'rspec/describe_symbol'
24
26
  require_relative 'rspec/described_class'
27
+ require_relative 'rspec/dialect'
25
28
  require_relative 'rspec/empty_example_group'
26
29
  require_relative 'rspec/empty_line_after_example_group'
27
30
  require_relative 'rspec/empty_line_after_final_let'
data/lib/rubocop/rspec.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RuboCop
2
4
  # RuboCop RSpec project namespace
3
5
  module RSpec
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RuboCop
2
4
  module RSpec
3
5
  # Helps determine the offending location if there is not a blank line
@@ -26,7 +28,7 @@ module RuboCop
26
28
  end
27
29
 
28
30
  def last_child?(node)
29
- return true unless node.parent && node.parent.begin_type?
31
+ return true unless node.parent&.begin_type?
30
32
 
31
33
  node.equal?(node.parent.children.last)
32
34
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yaml'
2
4
 
3
5
  module RuboCop
@@ -5,7 +7,7 @@ module RuboCop
5
7
  # Builds a YAML config file from two config hashes
6
8
  class ConfigFormatter
7
9
  NAMESPACES = /^(RSpec|Capybara|FactoryBot|Rails)/.freeze
8
- STYLE_GUIDE_BASE_URL = 'http://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/'.freeze
10
+ STYLE_GUIDE_BASE_URL = 'http://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/'
9
11
 
10
12
  def initialize(config, descriptions)
11
13
  @config = config
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RuboCop
2
4
  module RSpec
3
5
  # Extracts cop descriptions from YARD docstrings
@@ -20,7 +22,7 @@ module RuboCop
20
22
  # Decorator of a YARD code object for working with documented rspec cops
21
23
  class CodeObject
22
24
  COP_CLASS_NAMES = %w[RuboCop::Cop RuboCop::Cop::RSpec::Cop].freeze
23
- RSPEC_NAMESPACE = 'RuboCop::Cop::RSpec'.freeze
25
+ RSPEC_NAMESPACE = 'RuboCop::Cop::RSpec'
24
26
 
25
27
  def initialize(yardoc)
26
28
  @yardoc = yardoc
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module RSpec
5
+ # RuboCop FactoryBot project namespace
6
+ module FactoryBot
7
+ ATTRIBUTE_DEFINING_METHODS = %i[factory trait transient ignore].freeze
8
+
9
+ UNPROXIED_METHODS = %i[
10
+ __send__
11
+ __id__
12
+ nil?
13
+ send
14
+ object_id
15
+ extend
16
+ instance_eval
17
+ initialize
18
+ block_given?
19
+ raise
20
+ caller
21
+ method
22
+ ].freeze
23
+
24
+ DEFINITION_PROXY_METHODS = %i[
25
+ add_attribute
26
+ after
27
+ association
28
+ before
29
+ callback
30
+ ignore
31
+ initialize_with
32
+ sequence
33
+ skip_create
34
+ to_create
35
+ ].freeze
36
+
37
+ RESERVED_METHODS =
38
+ DEFINITION_PROXY_METHODS +
39
+ UNPROXIED_METHODS +
40
+ ATTRIBUTE_DEFINING_METHODS
41
+
42
+ private_constant(
43
+ :ATTRIBUTE_DEFINING_METHODS,
44
+ :UNPROXIED_METHODS,
45
+ :DEFINITION_PROXY_METHODS,
46
+ :RESERVED_METHODS
47
+ )
48
+
49
+ def self.attribute_defining_methods
50
+ ATTRIBUTE_DEFINING_METHODS
51
+ end
52
+
53
+ def self.reserved_methods
54
+ RESERVED_METHODS
55
+ end
56
+ end
57
+ end
58
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RuboCop
2
4
  module RSpec
3
5
  # Helps find the true end location of nodes which might contain heredocs.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RuboCop
2
4
  module RSpec
3
5
  # Because RuboCop doesn't yet support plugins, we have to monkey patch in a
@@ -4,6 +4,8 @@ module RuboCop
4
4
  module RSpec
5
5
  # RSpec public API methods that are commonly used in cops
6
6
  module Language
7
+ RSPEC = '{(const nil? :RSpec) nil?}'
8
+
7
9
  # Set of method selectors
8
10
  class SelectorSet
9
11
  def initialize(selectors)
@@ -27,7 +29,7 @@ module RuboCop
27
29
  end
28
30
 
29
31
  def send_pattern
30
- "(send {(const nil? :RSpec) nil?} #{node_pattern_union} ...)"
32
+ "(send #{RSPEC} #{node_pattern_union} ...)"
31
33
  end
32
34
 
33
35
  def node_pattern_union
@@ -106,6 +108,10 @@ module RuboCop
106
108
  ALL = SelectorSet.new(%i[expect is_expected expect_any_instance_of])
107
109
  end
108
110
 
111
+ module Runners
112
+ ALL = SelectorSet.new(%i[to to_not not_to])
113
+ end
114
+
109
115
  ALL =
110
116
  ExampleGroups::ALL +
111
117
  SharedGroups::ALL +
@@ -113,7 +119,8 @@ module RuboCop
113
119
  Hooks::ALL +
114
120
  Helpers::ALL +
115
121
  Subject::ALL +
116
- Expectations::ALL
122
+ Expectations::ALL +
123
+ Runners::ALL
117
124
  end
118
125
  end
119
126
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RuboCop
2
4
  module RSpec
3
5
  # Helper methods for top level describe cops
@@ -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 = '1.32.0'.freeze
7
+ STRING = '1.33.0'
8
8
  end
9
9
  end
10
10
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  $LOAD_PATH.unshift File.expand_path('lib', __dir__)
2
4
  require 'rubocop/rspec/version'
3
5
 
@@ -19,7 +21,7 @@ Gem::Specification.new do |spec|
19
21
 
20
22
  spec.version = RuboCop::RSpec::Version::STRING
21
23
  spec.platform = Gem::Platform::RUBY
22
- spec.required_ruby_version = '>= 2.2.0'
24
+ spec.required_ruby_version = '>= 2.3.0'
23
25
 
24
26
  spec.require_paths = ['lib']
25
27
  spec.files = Dir[
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe 'CHANGELOG.md' do
2
4
  subject(:changelog) { SpecHelper::ROOT.join('CHANGELOG.md').read }
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe 'config/default.yml' do
2
4
  subject(:default_config) do
3
5
  RuboCop::ConfigLoader.load_file('config/default.yml')
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe 'Project requires' do
2
4
  it 'alphabetizes cop requires' do
3
5
  source = SpecHelper::ROOT.join('lib', 'rubocop', 'cop', 'rspec_cops.rb')
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe RuboCop::Cop::RSpec::AlignLeftLetBrace do
2
4
  subject(:cop) { described_class.new }
3
5
 
6
+ # rubocop:disable RSpec/ExampleLength
4
7
  it 'registers offense for unaligned braces' do
5
8
  expect_offense(<<-RUBY)
6
9
  let(:foo) { bar }
@@ -15,52 +18,34 @@ RSpec.describe RuboCop::Cop::RSpec::AlignLeftLetBrace do
15
18
  }
16
19
 
17
20
  describe 'blah' do
18
- let(:blahblah) { baz }
21
+ let(:long_name) { thing }
19
22
  let(:blah) { thing }
20
23
  ^ Align left let brace
21
24
  let(:a) { thing }
22
25
  ^ Align left let brace
23
26
  end
24
27
  RUBY
28
+
29
+ expect_correction(<<-RUBY)
30
+ let(:foo) { bar }
31
+ let(:hi) { baz }
32
+ let(:blahblah) { baz }
33
+
34
+ let(:thing) { ignore_this }
35
+ let(:other) {
36
+ ignore_this_too
37
+ }
38
+
39
+ describe 'blah' do
40
+ let(:long_name) { thing }
41
+ let(:blah) { thing }
42
+ let(:a) { thing }
43
+ end
44
+ RUBY
25
45
  end
46
+ # rubocop:enable RSpec/ExampleLength
26
47
 
27
48
  it 'works with empty file' do
28
49
  expect_no_offenses('')
29
50
  end
30
-
31
- offensive_source = <<-RUBY
32
- let(:foo) { bar }
33
- let(:hi) { baz }
34
- let(:blahblah) { baz }
35
-
36
- let(:thing) { ignore_this }
37
- let(:other) {
38
- ignore_this_too
39
- }
40
-
41
- describe 'blah' do
42
- let(:long_name) { thing }
43
- let(:blah) { thing }
44
- let(:a) { thing }
45
- end
46
- RUBY
47
-
48
- corrected_source = <<-RUBY
49
- let(:foo) { bar }
50
- let(:hi) { baz }
51
- let(:blahblah) { baz }
52
-
53
- let(:thing) { ignore_this }
54
- let(:other) {
55
- ignore_this_too
56
- }
57
-
58
- describe 'blah' do
59
- let(:long_name) { thing }
60
- let(:blah) { thing }
61
- let(:a) { thing }
62
- end
63
- RUBY
64
-
65
- include_examples 'autocorrect', offensive_source, corrected_source
66
51
  end
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe RuboCop::Cop::RSpec::AlignRightLetBrace do
2
4
  subject(:cop) { described_class.new }
3
5
 
6
+ # rubocop:disable RSpec/ExampleLength
4
7
  it 'registers offense for unaligned braces' do
5
8
  expect_offense(<<-RUBY)
6
9
  let(:foo) { a }
@@ -22,45 +25,27 @@ RSpec.describe RuboCop::Cop::RSpec::AlignRightLetBrace do
22
25
  let(:a) { abc }
23
26
  end
24
27
  RUBY
28
+
29
+ expect_correction(<<-RUBY)
30
+ let(:foo) { a }
31
+ let(:hi) { ab }
32
+ let(:blahblah) { abcd }
33
+
34
+ let(:thing) { ignore_this }
35
+ let(:other) {
36
+ ignore_this_too
37
+ }
38
+
39
+ describe 'blah' do
40
+ let(:blahblah) { a }
41
+ let(:blah) { bc }
42
+ let(:a) { abc }
43
+ end
44
+ RUBY
25
45
  end
46
+ # rubocop:enable RSpec/ExampleLength
26
47
 
27
48
  it 'works with empty file' do
28
49
  expect_no_offenses('')
29
50
  end
30
-
31
- offensive_source = <<-RUBY
32
- let(:foo) { a }
33
- let(:hi) { ab }
34
- let(:blahblah) { abcd }
35
-
36
- let(:thing) { ignore_this }
37
- let(:other) {
38
- ignore_this_too
39
- }
40
-
41
- describe 'blah' do
42
- let(:blahblah) { a }
43
- let(:blah) { bc }
44
- let(:a) { abc }
45
- end
46
- RUBY
47
-
48
- corrected_source = <<-RUBY
49
- let(:foo) { a }
50
- let(:hi) { ab }
51
- let(:blahblah) { abcd }
52
-
53
- let(:thing) { ignore_this }
54
- let(:other) {
55
- ignore_this_too
56
- }
57
-
58
- describe 'blah' do
59
- let(:blahblah) { a }
60
- let(:blah) { bc }
61
- let(:a) { abc }
62
- end
63
- RUBY
64
-
65
- include_examples 'autocorrect', offensive_source, corrected_source
66
51
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe RuboCop::Cop::RSpec::AnyInstance do
2
4
  subject(:cop) { described_class.new }
3
5