rubocop-rspec 1.6.0 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +22 -0
  3. data/README.md +23 -0
  4. data/Rakefile +19 -1
  5. data/config/default.yml +78 -15
  6. data/lib/rubocop-rspec.rb +19 -1
  7. data/lib/rubocop/cop/rspec/any_instance.rb +5 -1
  8. data/lib/rubocop/cop/rspec/be_eql.rb +58 -0
  9. data/lib/rubocop/cop/rspec/describe_class.rb +2 -3
  10. data/lib/rubocop/cop/rspec/describe_method.rb +4 -3
  11. data/lib/rubocop/cop/rspec/described_class.rb +4 -35
  12. data/lib/rubocop/cop/rspec/empty_example_group.rb +100 -0
  13. data/lib/rubocop/cop/rspec/example_length.rb +5 -2
  14. data/lib/rubocop/cop/rspec/example_wording.rb +5 -2
  15. data/lib/rubocop/cop/rspec/expect_actual.rb +79 -0
  16. data/lib/rubocop/cop/rspec/file_path.rb +3 -1
  17. data/lib/rubocop/cop/rspec/focus.rb +12 -28
  18. data/lib/rubocop/cop/rspec/hook_argument.rb +122 -0
  19. data/lib/rubocop/cop/rspec/instance_variable.rb +53 -12
  20. data/lib/rubocop/cop/rspec/leading_subject.rb +58 -0
  21. data/lib/rubocop/cop/rspec/let_setup.rb +58 -0
  22. data/lib/rubocop/cop/rspec/message_chain.rb +33 -0
  23. data/lib/rubocop/cop/rspec/message_expectation.rb +58 -0
  24. data/lib/rubocop/cop/rspec/multiple_describes.rb +10 -7
  25. data/lib/rubocop/cop/rspec/multiple_expectations.rb +89 -0
  26. data/lib/rubocop/cop/rspec/named_subject.rb +10 -1
  27. data/lib/rubocop/cop/rspec/nested_groups.rb +125 -0
  28. data/lib/rubocop/cop/rspec/not_to_not.rb +3 -3
  29. data/lib/rubocop/cop/rspec/subject_stub.rb +136 -0
  30. data/lib/rubocop/cop/rspec/verified_doubles.rb +4 -1
  31. data/lib/rubocop/rspec.rb +10 -0
  32. data/lib/rubocop/rspec/config_formatter.rb +33 -0
  33. data/lib/rubocop/rspec/description_extractor.rb +35 -0
  34. data/lib/rubocop/rspec/inject.rb +2 -6
  35. data/lib/rubocop/rspec/language.rb +73 -0
  36. data/lib/rubocop/rspec/language/node_pattern.rb +16 -0
  37. data/lib/rubocop/rspec/spec_only.rb +61 -0
  38. data/lib/rubocop/rspec/top_level_describe.rb +6 -0
  39. data/lib/rubocop/rspec/version.rb +1 -1
  40. data/rubocop-rspec.gemspec +1 -0
  41. data/spec/project/changelog_spec.rb +81 -0
  42. data/spec/project/default_config_spec.rb +52 -0
  43. data/spec/project/project_requires_spec.rb +8 -0
  44. data/spec/rubocop/cop/rspec/be_eql_spec.rb +59 -0
  45. data/spec/rubocop/cop/rspec/described_class_spec.rb +2 -2
  46. data/spec/rubocop/cop/rspec/empty_example_group_spec.rb +79 -0
  47. data/spec/rubocop/cop/rspec/example_length_spec.rb +50 -30
  48. data/spec/rubocop/cop/rspec/example_wording_spec.rb +21 -3
  49. data/spec/rubocop/cop/rspec/expect_actual_spec.rb +136 -0
  50. data/spec/rubocop/cop/rspec/file_path_spec.rb +48 -71
  51. data/spec/rubocop/cop/rspec/focus_spec.rb +1 -1
  52. data/spec/rubocop/cop/rspec/hook_argument_spec.rb +189 -0
  53. data/spec/rubocop/cop/rspec/instance_variable_spec.rb +37 -0
  54. data/spec/rubocop/cop/rspec/leading_subject_spec.rb +54 -0
  55. data/spec/rubocop/cop/rspec/let_setup_spec.rb +66 -0
  56. data/spec/rubocop/cop/rspec/message_chain_spec.rb +21 -0
  57. data/spec/rubocop/cop/rspec/message_expectation_spec.rb +63 -0
  58. data/spec/rubocop/cop/rspec/multiple_expectations_spec.rb +84 -0
  59. data/spec/rubocop/cop/rspec/nested_groups_spec.rb +55 -0
  60. data/spec/rubocop/cop/rspec/not_to_not_spec.rb +12 -2
  61. data/spec/rubocop/cop/rspec/subject_stub_spec.rb +183 -0
  62. data/spec/rubocop/rspec/config_formatter_spec.rb +48 -0
  63. data/spec/rubocop/rspec/description_extractor_spec.rb +35 -0
  64. data/spec/rubocop/rspec/language/selector_set_spec.rb +29 -0
  65. data/spec/rubocop/rspec/spec_only_spec.rb +97 -0
  66. data/spec/shared/rspec_only_cop_behavior.rb +68 -0
  67. data/spec/spec_helper.rb +13 -1
  68. metadata +72 -5
  69. data/spec/project_spec.rb +0 -115
@@ -0,0 +1,48 @@
1
+ require 'rubocop/rspec/config_formatter'
2
+
3
+ RSpec.describe RuboCop::RSpec::ConfigFormatter do
4
+ let(:config) do
5
+ {
6
+ 'AllCops' => {
7
+ 'Setting' => 'fourty two'
8
+ },
9
+ 'RSpec/Foo' => {
10
+ 'Config' => 2,
11
+ 'Enabled' => true
12
+ },
13
+ 'RSpec/Bar' => {
14
+ 'Enabled' => true
15
+ }
16
+ }
17
+ end
18
+
19
+ let(:descriptions) do
20
+ {
21
+ 'RSpec/Foo' => {
22
+ 'Description' => 'Blah'
23
+ },
24
+ 'RSpec/Bar' => {
25
+ 'Description' => 'Wow'
26
+ }
27
+ }
28
+ end
29
+
30
+ it 'builds a YAML dump with spacing between cops' do
31
+ formatter = described_class.new(config, descriptions)
32
+
33
+ expect(formatter.dump).to eql(<<-YAML.gsub(/^\s+\|/, ''))
34
+ |---
35
+ |AllCops:
36
+ | Setting: fourty two
37
+ |
38
+ |RSpec/Foo:
39
+ | Config: 2
40
+ | Enabled: true
41
+ | Description: Blah
42
+ |
43
+ |RSpec/Bar:
44
+ | Enabled: true
45
+ | Description: Wow
46
+ YAML
47
+ end
48
+ end
@@ -0,0 +1,35 @@
1
+ require 'yard'
2
+
3
+ require 'rubocop/rspec/description_extractor'
4
+
5
+ RSpec.describe RuboCop::RSpec::DescriptionExtractor do
6
+ let(:yardocs) do
7
+ [
8
+ instance_double(
9
+ YARD::CodeObjects::MethodObject,
10
+ docstring: "Checks foo\n\nLong description",
11
+ to_s: 'RuboCop::Cop::RSpec::Foo',
12
+ type: :class,
13
+ name: 'Foo'
14
+ ),
15
+ instance_double(
16
+ YARD::CodeObjects::MethodObject,
17
+ docstring: 'Hi',
18
+ to_s: 'RuboCop::Cop::RSpec::Foo#bar',
19
+ type: :method,
20
+ name: 'Foo#bar'
21
+ ),
22
+ instance_double(
23
+ YARD::CodeObjects::MethodObject,
24
+ docstring: 'This is not a cop',
25
+ to_s: 'RuboCop::Cop::Mixin::Sneaky',
26
+ type: :class
27
+ )
28
+ ]
29
+ end
30
+
31
+ it 'builds a hash of descriptions' do
32
+ expect(described_class.new(yardocs).to_h)
33
+ .to eql('RSpec/Foo' => { 'Description' => 'Checks foo' })
34
+ end
35
+ end
@@ -0,0 +1,29 @@
1
+ describe RuboCop::RSpec::Language::SelectorSet do
2
+ subject(:selector_set) { described_class.new(%i(foo bar)) }
3
+
4
+ it 'composes sets' do
5
+ combined = selector_set + described_class.new(%i(baz))
6
+
7
+ expect(combined).to eq(described_class.new(%i(foo bar baz)))
8
+ end
9
+
10
+ it 'compares by value' do
11
+ expect(selector_set).not_to eq(described_class.new(%i(foo bar baz)))
12
+ end
13
+
14
+ context '#include?' do
15
+ it 'returns false for selectors not in the set' do
16
+ expect(selector_set.include?(:baz)).to be(false)
17
+ end
18
+
19
+ it 'returns true for selectors in the set' do
20
+ expect(selector_set.include?(:foo)).to be(true)
21
+ end
22
+ end
23
+
24
+ context '#to_node_pattern' do
25
+ it 'builds a node pattern' do
26
+ expect(selector_set.to_node_pattern).to eql(':foo :bar')
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,97 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe RuboCop::RSpec::SpecOnly do
4
+ subject(:cop) { fake_cop.new(config) }
5
+
6
+ let(:config) do
7
+ rubocop_config =
8
+ {
9
+ 'AllCops' => {
10
+ 'RSpec' => {
11
+ 'Patterns' => rspec_patterns
12
+ }
13
+ },
14
+ 'RSpec/FakeCop' => {
15
+ 'Exclude' => %w(bar_spec.rb)
16
+ }
17
+ }
18
+
19
+ RuboCop::Config.new(rubocop_config, 'fake_cop_config.yml')
20
+ end
21
+
22
+ let(:fake_cop) do
23
+ Class.new(RuboCop::Cop::Cop) do
24
+ include RuboCop::RSpec::SpecOnly
25
+
26
+ def self.name
27
+ 'RuboCop::RSpec::FakeCop'
28
+ end
29
+
30
+ def on_send(node)
31
+ add_offense(node, :expression, 'I flag everything')
32
+ end
33
+ end
34
+ end
35
+
36
+ let(:rspec_patterns) { ['_spec.rb$', '(?:^|/)spec/'] }
37
+
38
+ context 'when the source path ends with `_spec.rb`' do
39
+ it 'registers an offense' do
40
+ expect_violation(<<-RUBY, filename: 'foo_spec.rb')
41
+ foo(1)
42
+ ^^^^^^ I flag everything
43
+ RUBY
44
+ end
45
+
46
+ it 'ignores the file if it is ignored' do
47
+ expect_no_violations(<<-RUBY, filename: 'bar_spec.rb')
48
+ foo(1)
49
+ RUBY
50
+ end
51
+ end
52
+
53
+ context 'when the source path contains `/spec/`' do
54
+ it 'registers an offense' do
55
+ expect_violation(<<-RUBY, filename: '/spec/support/thing.rb')
56
+ foo(1)
57
+ ^^^^^^ I flag everything
58
+ RUBY
59
+ end
60
+ end
61
+
62
+ context 'when the source path starts with `spec/`' do
63
+ it 'registers an offense' do
64
+ expect_violation(<<-RUBY, filename: 'spec/support/thing.rb')
65
+ foo(1)
66
+ ^^^^^^ I flag everything
67
+ RUBY
68
+ end
69
+ end
70
+
71
+ context 'when the file is a source file without "spec" in the name' do
72
+ it 'ignores the source when the path is not a spec file' do
73
+ expect_no_violations(<<-RUBY, filename: 'foo.rb')
74
+ foo(1)
75
+ RUBY
76
+ end
77
+
78
+ it 'ignores the source when the path is not a specified pattern' do
79
+ expect_no_violations(<<-RUBY, filename: 'foo_test.rb')
80
+ foo(1)
81
+ RUBY
82
+ end
83
+ end
84
+
85
+ context 'when custom patterns are specified' do
86
+ let(:rspec_patterns) do
87
+ ['_test\.rb$']
88
+ end
89
+
90
+ it 'registers offenses when the path matches a custom specified pattern' do
91
+ expect_violation(<<-RUBY, filename: 'foo_test.rb')
92
+ foo(1)
93
+ ^^^^^^ I flag everything
94
+ RUBY
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,68 @@
1
+ module SpecHelper
2
+ # Provides a helper method for checking that `cop` works
3
+ #
4
+ # @note this is defined in a module so that the failure message can be
5
+ # a constant without creating a bunch of warnings when the shared
6
+ # context is included
7
+ #
8
+ module CheckCop
9
+ CURRENT_FILE = Pathname.new(__FILE__).relative_path_from(ROOT).freeze
10
+
11
+ FAILURE = <<-MSG.freeze
12
+ Attempting to access `cop` produced the following error:
13
+
14
+ %<exception>s
15
+
16
+ The shared context under #{CURRENT_FILE} is included for all RSpec
17
+ cops. This context expects you to define a subject named `cop` like so:
18
+
19
+ describe RuboCop::Cop::RSpec::SomeCheck do
20
+ subject(:cop) { described_class.new }
21
+
22
+ ...
23
+ end
24
+
25
+ or if your cop is configurable you should have something like:
26
+
27
+ describe RuboCop::Cop::RSpec::SomeConfigurableCheck, :config do
28
+ subject(:cop) { described_class.new(config) }
29
+
30
+ let(:cop_config) do
31
+ { 'EnforcedStyle' => 'fancy', 'WhateverElse' => 'YouNeed' }
32
+ end
33
+
34
+ ...
35
+ end
36
+
37
+ This error likely means that you either don't define `cop` at the top
38
+ level or you have dependent definitions (like `cop_config`) that are not
39
+ defined at the top level.
40
+ MSG
41
+
42
+ # This method exists to reduce confusion for contributors. It is important
43
+ # that these shared examples are automatically included for all cops but
44
+ # it is easy for these to fail if you don't realize that your top level
45
+ # describe needs to define a useable `cop` subject.
46
+ def check_cop_definition
47
+ cop
48
+ rescue => exception
49
+ raise format(FAILURE, exception: exception)
50
+ end
51
+ end
52
+ end
53
+
54
+ RSpec.shared_examples 'an rspec only cop', rspec_cop: true do
55
+ include SpecHelper::CheckCop
56
+
57
+ before do
58
+ check_cop_definition
59
+ end
60
+
61
+ it 'does not deem lib/feature/thing.rb to be a relevant file' do
62
+ expect(cop.relevant_file?('lib/feature/thing.rb')).to be_falsey
63
+ end
64
+
65
+ it 'deems spec/feature/thing_spec.rb to be a relevant file' do
66
+ expect(cop.relevant_file?('spec/feature/thing_spec.rb')).to be(true)
67
+ end
68
+ end
data/spec/spec_helper.rb CHANGED
@@ -7,11 +7,23 @@ if ENV['CI']
7
7
  CodeClimate::TestReporter.start
8
8
  end
9
9
 
10
- Dir.glob(File.expand_path('support/*.rb', __dir__)).map(&method(:require))
10
+ module SpecHelper
11
+ ROOT = Pathname.new(__dir__).parent.freeze
12
+ end
13
+
14
+ spec_helper_glob = File.expand_path('{support,shared}/*.rb', __dir__)
15
+ Dir.glob(spec_helper_glob).map(&method(:require))
11
16
 
12
17
  RSpec.configure do |config|
13
18
  config.order = :random
14
19
 
20
+ # Define spec metadata for all rspec cop spec files
21
+ cop_specs = 'spec/rubocop/cop/rspec/'
22
+ config.define_derived_metadata(file_path: /\b#{cop_specs}/) do |metadata|
23
+ # Attach metadata that signals the specified code is for an RSpec only cop
24
+ metadata[:rspec_cop] = true
25
+ end
26
+
15
27
  config.expect_with :rspec do |expectations|
16
28
  expectations.syntax = :expect # Disable `should`
17
29
  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: 1.6.0
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ian MacLeod
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-08-03 00:00:00.000000000 Z
12
+ date: 2016-08-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rubocop
@@ -109,6 +109,20 @@ dependencies:
109
109
  - - ">="
110
110
  - !ruby/object:Gem::Version
111
111
  version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: yard
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
112
126
  description: |2
113
127
  Code style checking for RSpec files.
114
128
  A plugin for the RuboCop code style enforcing & linting tool.
@@ -129,41 +143,76 @@ files:
129
143
  - config/default.yml
130
144
  - lib/rubocop-rspec.rb
131
145
  - lib/rubocop/cop/rspec/any_instance.rb
146
+ - lib/rubocop/cop/rspec/be_eql.rb
132
147
  - lib/rubocop/cop/rspec/describe_class.rb
133
148
  - lib/rubocop/cop/rspec/describe_method.rb
134
149
  - lib/rubocop/cop/rspec/described_class.rb
150
+ - lib/rubocop/cop/rspec/empty_example_group.rb
135
151
  - lib/rubocop/cop/rspec/example_length.rb
136
152
  - lib/rubocop/cop/rspec/example_wording.rb
153
+ - lib/rubocop/cop/rspec/expect_actual.rb
137
154
  - lib/rubocop/cop/rspec/file_path.rb
138
155
  - lib/rubocop/cop/rspec/focus.rb
156
+ - lib/rubocop/cop/rspec/hook_argument.rb
139
157
  - lib/rubocop/cop/rspec/instance_variable.rb
158
+ - lib/rubocop/cop/rspec/leading_subject.rb
159
+ - lib/rubocop/cop/rspec/let_setup.rb
160
+ - lib/rubocop/cop/rspec/message_chain.rb
161
+ - lib/rubocop/cop/rspec/message_expectation.rb
140
162
  - lib/rubocop/cop/rspec/multiple_describes.rb
163
+ - lib/rubocop/cop/rspec/multiple_expectations.rb
141
164
  - lib/rubocop/cop/rspec/named_subject.rb
165
+ - lib/rubocop/cop/rspec/nested_groups.rb
142
166
  - lib/rubocop/cop/rspec/not_to_not.rb
167
+ - lib/rubocop/cop/rspec/subject_stub.rb
143
168
  - lib/rubocop/cop/rspec/verified_doubles.rb
169
+ - lib/rubocop/rspec.rb
170
+ - lib/rubocop/rspec/config_formatter.rb
171
+ - lib/rubocop/rspec/description_extractor.rb
144
172
  - lib/rubocop/rspec/inject.rb
173
+ - lib/rubocop/rspec/language.rb
174
+ - lib/rubocop/rspec/language/node_pattern.rb
175
+ - lib/rubocop/rspec/spec_only.rb
145
176
  - lib/rubocop/rspec/top_level_describe.rb
146
177
  - lib/rubocop/rspec/util.rb
147
178
  - lib/rubocop/rspec/version.rb
148
179
  - lib/rubocop/rspec/wording.rb
149
180
  - rubocop-rspec.gemspec
150
181
  - spec/expect_violation/expectation_spec.rb
151
- - spec/project_spec.rb
182
+ - spec/project/changelog_spec.rb
183
+ - spec/project/default_config_spec.rb
184
+ - spec/project/project_requires_spec.rb
152
185
  - spec/rubocop/cop/rspec/any_instance_spec.rb
186
+ - spec/rubocop/cop/rspec/be_eql_spec.rb
153
187
  - spec/rubocop/cop/rspec/describe_class_spec.rb
154
188
  - spec/rubocop/cop/rspec/describe_method_spec.rb
155
189
  - spec/rubocop/cop/rspec/described_class_spec.rb
190
+ - spec/rubocop/cop/rspec/empty_example_group_spec.rb
156
191
  - spec/rubocop/cop/rspec/example_length_spec.rb
157
192
  - spec/rubocop/cop/rspec/example_wording_spec.rb
193
+ - spec/rubocop/cop/rspec/expect_actual_spec.rb
158
194
  - spec/rubocop/cop/rspec/file_path_spec.rb
159
195
  - spec/rubocop/cop/rspec/focus_spec.rb
196
+ - spec/rubocop/cop/rspec/hook_argument_spec.rb
160
197
  - spec/rubocop/cop/rspec/instance_variable_spec.rb
198
+ - spec/rubocop/cop/rspec/leading_subject_spec.rb
199
+ - spec/rubocop/cop/rspec/let_setup_spec.rb
200
+ - spec/rubocop/cop/rspec/message_chain_spec.rb
201
+ - spec/rubocop/cop/rspec/message_expectation_spec.rb
161
202
  - spec/rubocop/cop/rspec/multiple_describes_spec.rb
203
+ - spec/rubocop/cop/rspec/multiple_expectations_spec.rb
162
204
  - spec/rubocop/cop/rspec/named_subject_spec.rb
205
+ - spec/rubocop/cop/rspec/nested_groups_spec.rb
163
206
  - spec/rubocop/cop/rspec/not_to_not_spec.rb
207
+ - spec/rubocop/cop/rspec/subject_stub_spec.rb
164
208
  - spec/rubocop/cop/rspec/verified_doubles_spec.rb
209
+ - spec/rubocop/rspec/config_formatter_spec.rb
210
+ - spec/rubocop/rspec/description_extractor_spec.rb
211
+ - spec/rubocop/rspec/language/selector_set_spec.rb
212
+ - spec/rubocop/rspec/spec_only_spec.rb
165
213
  - spec/rubocop/rspec/util/one_spec.rb
166
214
  - spec/rubocop/rspec/wording_spec.rb
215
+ - spec/shared/rspec_only_cop_behavior.rb
167
216
  - spec/spec_helper.rb
168
217
  - spec/support/expect_violation.rb
169
218
  homepage: http://github.com/nevir/rubocop-rspec
@@ -186,27 +235,45 @@ required_rubygems_version: !ruby/object:Gem::Requirement
186
235
  version: '0'
187
236
  requirements: []
188
237
  rubyforge_project:
189
- rubygems_version: 2.6.3
238
+ rubygems_version: 2.6.6
190
239
  signing_key:
191
240
  specification_version: 4
192
241
  summary: Code style checking for RSpec files
193
242
  test_files:
194
243
  - spec/expect_violation/expectation_spec.rb
195
- - spec/project_spec.rb
244
+ - spec/project/changelog_spec.rb
245
+ - spec/project/default_config_spec.rb
246
+ - spec/project/project_requires_spec.rb
196
247
  - spec/rubocop/cop/rspec/any_instance_spec.rb
248
+ - spec/rubocop/cop/rspec/be_eql_spec.rb
197
249
  - spec/rubocop/cop/rspec/describe_class_spec.rb
198
250
  - spec/rubocop/cop/rspec/describe_method_spec.rb
199
251
  - spec/rubocop/cop/rspec/described_class_spec.rb
252
+ - spec/rubocop/cop/rspec/empty_example_group_spec.rb
200
253
  - spec/rubocop/cop/rspec/example_length_spec.rb
201
254
  - spec/rubocop/cop/rspec/example_wording_spec.rb
255
+ - spec/rubocop/cop/rspec/expect_actual_spec.rb
202
256
  - spec/rubocop/cop/rspec/file_path_spec.rb
203
257
  - spec/rubocop/cop/rspec/focus_spec.rb
258
+ - spec/rubocop/cop/rspec/hook_argument_spec.rb
204
259
  - spec/rubocop/cop/rspec/instance_variable_spec.rb
260
+ - spec/rubocop/cop/rspec/leading_subject_spec.rb
261
+ - spec/rubocop/cop/rspec/let_setup_spec.rb
262
+ - spec/rubocop/cop/rspec/message_chain_spec.rb
263
+ - spec/rubocop/cop/rspec/message_expectation_spec.rb
205
264
  - spec/rubocop/cop/rspec/multiple_describes_spec.rb
265
+ - spec/rubocop/cop/rspec/multiple_expectations_spec.rb
206
266
  - spec/rubocop/cop/rspec/named_subject_spec.rb
267
+ - spec/rubocop/cop/rspec/nested_groups_spec.rb
207
268
  - spec/rubocop/cop/rspec/not_to_not_spec.rb
269
+ - spec/rubocop/cop/rspec/subject_stub_spec.rb
208
270
  - spec/rubocop/cop/rspec/verified_doubles_spec.rb
271
+ - spec/rubocop/rspec/config_formatter_spec.rb
272
+ - spec/rubocop/rspec/description_extractor_spec.rb
273
+ - spec/rubocop/rspec/language/selector_set_spec.rb
274
+ - spec/rubocop/rspec/spec_only_spec.rb
209
275
  - spec/rubocop/rspec/util/one_spec.rb
210
276
  - spec/rubocop/rspec/wording_spec.rb
277
+ - spec/shared/rspec_only_cop_behavior.rb
211
278
  - spec/spec_helper.rb
212
279
  - spec/support/expect_violation.rb