rubocop-rspec 1.6.0 → 1.7.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 (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