rubocop-rspec 1.8.0 → 1.9.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 (62) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/Gemfile +2 -1
  4. data/Rakefile +3 -1
  5. data/config/default.yml +16 -0
  6. data/lib/rubocop-rspec.rb +6 -1
  7. data/lib/rubocop/cop/rspec/any_instance.rb +0 -2
  8. data/lib/rubocop/cop/rspec/be_eql.rb +1 -2
  9. data/lib/rubocop/cop/rspec/cop.rb +66 -0
  10. data/lib/rubocop/cop/rspec/describe_class.rb +6 -1
  11. data/lib/rubocop/cop/rspec/describe_method.rb +1 -2
  12. data/lib/rubocop/cop/rspec/described_class.rb +3 -6
  13. data/lib/rubocop/cop/rspec/empty_example_group.rb +1 -11
  14. data/lib/rubocop/cop/rspec/example_length.rb +1 -1
  15. data/lib/rubocop/cop/rspec/example_wording.rb +0 -2
  16. data/lib/rubocop/cop/rspec/expect_actual.rb +0 -2
  17. data/lib/rubocop/cop/rspec/file_path.rb +1 -1
  18. data/lib/rubocop/cop/rspec/focus.rb +4 -9
  19. data/lib/rubocop/cop/rspec/hook_argument.rb +3 -5
  20. data/lib/rubocop/cop/rspec/implicit_expect.rb +1 -1
  21. data/lib/rubocop/cop/rspec/instance_variable.rb +1 -5
  22. data/lib/rubocop/cop/rspec/leading_subject.rb +0 -2
  23. data/lib/rubocop/cop/rspec/let_setup.rb +1 -4
  24. data/lib/rubocop/cop/rspec/message_chain.rb +1 -8
  25. data/lib/rubocop/cop/rspec/message_expectation.rb +1 -1
  26. data/lib/rubocop/cop/rspec/message_spies.rb +79 -0
  27. data/lib/rubocop/cop/rspec/multiple_describes.rb +1 -2
  28. data/lib/rubocop/cop/rspec/multiple_expectations.rb +2 -6
  29. data/lib/rubocop/cop/rspec/named_subject.rb +0 -2
  30. data/lib/rubocop/cop/rspec/nested_groups.rb +2 -6
  31. data/lib/rubocop/cop/rspec/not_to_not.rb +1 -2
  32. data/lib/rubocop/cop/rspec/repeated_description.rb +59 -0
  33. data/lib/rubocop/cop/rspec/single_argument_message_chain.rb +48 -0
  34. data/lib/rubocop/cop/rspec/subject_stub.rb +1 -4
  35. data/lib/rubocop/cop/rspec/verified_doubles.rb +0 -2
  36. data/lib/rubocop/rspec.rb +1 -1
  37. data/lib/rubocop/rspec/description_extractor.rb +55 -18
  38. data/lib/rubocop/rspec/example.rb +56 -0
  39. data/lib/rubocop/rspec/example_group.rb +57 -0
  40. data/lib/rubocop/rspec/language.rb +28 -1
  41. data/lib/rubocop/rspec/language/node_pattern.rb +1 -3
  42. data/lib/rubocop/rspec/top_level_describe.rb +6 -10
  43. data/lib/rubocop/rspec/version.rb +1 -1
  44. data/spec/project/default_config_spec.rb +8 -5
  45. data/spec/project/project_requires_spec.rb +1 -1
  46. data/spec/rubocop/{rspec/spec_only_spec.rb → cop/rspec/cop_spec.rb} +2 -4
  47. data/spec/rubocop/cop/rspec/describe_class_spec.rb +36 -0
  48. data/spec/rubocop/cop/rspec/described_class_spec.rb +2 -2
  49. data/spec/rubocop/cop/rspec/example_length_spec.rb +48 -60
  50. data/spec/rubocop/cop/rspec/implicit_expect_spec.rb +1 -1
  51. data/spec/rubocop/cop/rspec/message_spies_spec.rb +93 -0
  52. data/spec/rubocop/cop/rspec/repeated_description_spec.rb +76 -0
  53. data/spec/rubocop/cop/rspec/single_argument_message_chain_spec.rb +75 -0
  54. data/spec/rubocop/rspec/description_extractor_spec.rb +46 -24
  55. data/spec/rubocop/rspec/example_group_spec.rb +44 -0
  56. data/spec/rubocop/rspec/example_spec.rb +62 -0
  57. data/spec/rubocop/rspec/language/selector_set_spec.rb +22 -2
  58. data/spec/spec_helper.rb +2 -9
  59. data/spec/support/expect_violation.rb +4 -2
  60. metadata +21 -8
  61. data/lib/rubocop/rspec/spec_only.rb +0 -61
  62. data/spec/shared/rspec_only_cop_behavior.rb +0 -68
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe RuboCop::Cop::RSpec::RepeatedDescription do
4
+ subject(:cop) { described_class.new }
5
+
6
+ it 'registers an offense for repeated descriptions' do
7
+ expect_violation(<<-RUBY)
8
+ describe 'doing x' do
9
+ it "does x" do
10
+ ^^^^^^^^^^^ Don't repeat descriptions within an example group.
11
+ end
12
+
13
+ it "does x" do
14
+ ^^^^^^^^^^^ Don't repeat descriptions within an example group.
15
+ end
16
+ end
17
+ RUBY
18
+ end
19
+
20
+ it 'registers offense for repeated descriptions separated by a context' do
21
+ expect_violation(<<-RUBY)
22
+ describe 'doing x' do
23
+ it "does x" do
24
+ ^^^^^^^^^^^ Don't repeat descriptions within an example group.
25
+ end
26
+
27
+ context 'during some use case' do
28
+ it "does x" do
29
+ # this should be fine
30
+ end
31
+ end
32
+
33
+ it "does x" do
34
+ ^^^^^^^^^^^ Don't repeat descriptions within an example group.
35
+ end
36
+ end
37
+ RUBY
38
+ end
39
+
40
+ it 'ignores descriptions repeated in a shared context' do
41
+ expect_no_violations(<<-RUBY)
42
+ describe 'doing x' do
43
+ it "does x" do
44
+ end
45
+
46
+ shared_context 'shared behavior' do
47
+ it "does x" do
48
+ end
49
+ end
50
+ end
51
+ RUBY
52
+ end
53
+
54
+ it 'ignores repeated descriptions in a nested context' do
55
+ expect_no_violations(<<-RUBY)
56
+ describe 'doing x' do
57
+ it "does x" do
58
+ end
59
+
60
+ context 'in a certain use case' do
61
+ it "does x" do
62
+ end
63
+ end
64
+ end
65
+ RUBY
66
+ end
67
+
68
+ it 'does not flag tests which do not contain description strings' do
69
+ expect_no_violations(<<-RUBY)
70
+ describe 'doing x' do
71
+ it { foo }
72
+ it { bar }
73
+ end
74
+ RUBY
75
+ end
76
+ end
@@ -0,0 +1,75 @@
1
+ describe RuboCop::Cop::RSpec::SingleArgumentMessageChain do
2
+ subject(:cop) { described_class.new }
3
+
4
+ describe 'receive_message_chain' do
5
+ it 'reports single-argument calls' do
6
+ expect_violation(<<-RUBY)
7
+ before do
8
+ allow(foo).to receive_message_chain(:one) { :two }
9
+ ^^^^^^^^^^^^^^^^^^^^^ Use `receive` instead of calling `receive_message_chain` with a single argument
10
+ end
11
+ RUBY
12
+ end
13
+
14
+ it 'accepts multi-argument calls' do
15
+ expect_no_violations(<<-RUBY)
16
+ before do
17
+ allow(foo).to receive_message_chain(:one, :two) { :three }
18
+ end
19
+ RUBY
20
+ end
21
+
22
+ it 'reports single-argument string calls' do
23
+ expect_violation(<<-RUBY)
24
+ before do
25
+ allow(foo).to receive_message_chain("one") { :two }
26
+ ^^^^^^^^^^^^^^^^^^^^^ Use `receive` instead of calling `receive_message_chain` with a single argument
27
+ end
28
+ RUBY
29
+ end
30
+
31
+ it 'accepts multi-argument string calls' do
32
+ expect_no_violations(<<-RUBY)
33
+ before do
34
+ allow(foo).to receive_message_chain("one.two") { :three }
35
+ end
36
+ RUBY
37
+ end
38
+ end
39
+
40
+ describe 'stub_chain' do
41
+ it 'reports single-argument calls' do
42
+ expect_violation(<<-RUBY)
43
+ before do
44
+ foo.stub_chain(:one) { :two }
45
+ ^^^^^^^^^^ Use `stub` instead of calling `stub_chain` with a single argument
46
+ end
47
+ RUBY
48
+ end
49
+
50
+ it 'accepts multi-argument calls' do
51
+ expect_no_violations(<<-RUBY)
52
+ before do
53
+ foo.stub_chain(:one, :two) { :three }
54
+ end
55
+ RUBY
56
+ end
57
+
58
+ it 'reports single-argument string calls' do
59
+ expect_violation(<<-RUBY)
60
+ before do
61
+ allow(foo).to stub_chain("one") { :two }
62
+ ^^^^^^^^^^ Use `stub` instead of calling `stub_chain` with a single argument
63
+ end
64
+ RUBY
65
+ end
66
+
67
+ it 'accepts multi-argument string calls' do
68
+ expect_no_violations(<<-RUBY)
69
+ before do
70
+ allow(foo).to stub_chain("one.two") { :three }
71
+ end
72
+ RUBY
73
+ end
74
+ end
75
+ end
@@ -4,32 +4,54 @@ require 'rubocop/rspec/description_extractor'
4
4
 
5
5
  RSpec.describe RuboCop::RSpec::DescriptionExtractor do
6
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
- ]
7
+ YARD.parse_string(<<-RUBY)
8
+ # This is not a cop
9
+ class RuboCop::Cop::Mixin::Sneaky
10
+ end
11
+
12
+ # This is not a concrete cop
13
+ #
14
+ # @abstract
15
+ class RuboCop::Cop::RSpec::Cop
16
+ end
17
+
18
+ # Checks foo
19
+ #
20
+ # Some description
21
+ #
22
+ # @note only works with foo
23
+ class RuboCop::Cop::RSpec::Foo
24
+ # Hello
25
+ def bar
26
+ end
27
+ end
28
+
29
+ class RuboCop::Cop::RSpec::Undocumented
30
+ # Hello
31
+ def bar
32
+ end
33
+ end
34
+ RUBY
35
+
36
+ YARD::Registry.all
37
+ end
38
+
39
+ def stub_cop_const(name)
40
+ stub_const(
41
+ "RuboCop::Cop::RSpec::#{name}",
42
+ Class.new(RuboCop::Cop::Cop)
43
+ )
44
+ end
45
+
46
+ before do
47
+ stub_cop_const('Foo')
48
+ stub_cop_const('Undocumented')
29
49
  end
30
50
 
31
51
  it 'builds a hash of descriptions' do
32
- expect(described_class.new(yardocs).to_h)
33
- .to eql('RSpec/Foo' => { 'Description' => 'Checks foo' })
52
+ expect(described_class.new(yardocs).to_h).to eql(
53
+ 'RSpec/Foo' => { 'Description' => 'Checks foo' },
54
+ 'RSpec/Undocumented' => { 'Description' => '' }
55
+ )
34
56
  end
35
57
  end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe RuboCop::RSpec::ExampleGroup do
4
+ include RuboCop::Sexp
5
+
6
+ subject(:group) { described_class.new(parse_source(source).ast) }
7
+
8
+ let(:source) do
9
+ <<-RUBY
10
+ RSpec.describe Foo do
11
+ it 'does x' do
12
+ x
13
+ end
14
+
15
+ it 'does y' do
16
+ y
17
+ end
18
+
19
+ context 'nested' do
20
+ it 'does z' do
21
+ z
22
+ end
23
+ end
24
+ end
25
+ RUBY
26
+ end
27
+
28
+ let(:example_nodes) do
29
+ [
30
+ s(:block,
31
+ s(:send, nil, :it,
32
+ s(:str, 'does x')),
33
+ s(:args), s(:send, nil, :x)),
34
+ s(:block,
35
+ s(:send, nil, :it,
36
+ s(:str, 'does y')),
37
+ s(:args), s(:send, nil, :y))
38
+ ].map { |node| RuboCop::RSpec::Example.new(node) }
39
+ end
40
+
41
+ it 'exposes examples in scope' do
42
+ expect(group.examples).to eql(example_nodes)
43
+ end
44
+ end
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe RuboCop::RSpec::Example do
4
+ include RuboCop::Sexp
5
+
6
+ def example(source)
7
+ described_class.new(parse_source(source).ast)
8
+ end
9
+
10
+ it 'extracts doc string' do
11
+ expect(example("it('does x') { foo }").doc_string)
12
+ .to eql(s(:str, 'does x'))
13
+ end
14
+
15
+ it 'extracts doc string for unimplemented examples' do
16
+ expect(example("it('does x')").doc_string)
17
+ .to eql(s(:str, 'does x'))
18
+ end
19
+
20
+ it 'returns nil for examples without doc strings' do
21
+ expect(example('it { foo }').doc_string).to be(nil)
22
+ end
23
+
24
+ it 'extracts keywords' do
25
+ expect(example("it('foo', :bar, baz: :qux) { a }").metadata)
26
+ .to eql([s(:sym, :bar), s(:hash, s(:pair, s(:sym, :baz), s(:sym, :qux)))])
27
+ end
28
+
29
+ it 'extracts implementation' do
30
+ expect(example('it("foo") { bar; baz }').implementation)
31
+ .to eql(s(:begin, s(:send, nil, :bar), s(:send, nil, :baz)))
32
+ end
33
+
34
+ it 'returns node' do
35
+ node = s(:sym, :node)
36
+ expect(described_class.new(node).to_node).to be(node)
37
+ end
38
+
39
+ context 'value object semantics' do
40
+ it 'compares by value' do # rubocop:disable RSpec/MultipleExpectations
41
+ aggregate_failures 'equality semantics' do
42
+ expect(example('it("foo")')).to eq(example('it("foo")'))
43
+ expect(example('it("foo")')).not_to eq(example('it("bar")'))
44
+ end
45
+ end
46
+
47
+ it 'can be used as a key in a hash' do
48
+ hash = {}
49
+
50
+ hash[example('it("foo")')] = 123
51
+
52
+ expect(hash[example('it("foo")')]).to be(123)
53
+ end
54
+
55
+ it 'computes #hash based on class and node' do
56
+ node = s(:node)
57
+
58
+ expect(described_class.new(node).hash)
59
+ .to eql([described_class, node].hash)
60
+ end
61
+ end
62
+ end
@@ -21,9 +21,29 @@ describe RuboCop::RSpec::Language::SelectorSet do
21
21
  end
22
22
  end
23
23
 
24
- context '#to_node_pattern' do
24
+ context '#node_pattern' do
25
25
  it 'builds a node pattern' do
26
- expect(selector_set.to_node_pattern).to eql(':foo :bar')
26
+ expect(selector_set.node_pattern).to eql(':foo :bar')
27
+ end
28
+ end
29
+
30
+ context '#node_pattern_union' do
31
+ it 'builds a node pattern union' do
32
+ expect(selector_set.node_pattern_union).to eql('{:foo :bar}')
33
+ end
34
+ end
35
+
36
+ context '#send_pattern' do
37
+ it 'builds a send matching pattern' do
38
+ expect(selector_set.send_pattern).to eql('(send _ {:foo :bar} ...)')
39
+ end
40
+ end
41
+
42
+ context '#block_pattern' do
43
+ it 'builds a block matching pattern' do
44
+ expect(selector_set.block_pattern).to eql(
45
+ '(block (send _ {:foo :bar} ...) ...)'
46
+ )
27
47
  end
28
48
  end
29
49
  end
data/spec/spec_helper.rb CHANGED
@@ -3,8 +3,8 @@ require 'rubocop'
3
3
  require 'rubocop/rspec/support'
4
4
 
5
5
  if ENV['CI']
6
- require 'codeclimate-test-reporter'
7
- CodeClimate::TestReporter.start
6
+ require 'simplecov'
7
+ SimpleCov.start
8
8
  end
9
9
 
10
10
  module SpecHelper
@@ -17,13 +17,6 @@ Dir.glob(spec_helper_glob).map(&method(:require))
17
17
  RSpec.configure do |config|
18
18
  config.order = :random
19
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
-
27
20
  config.expect_with :rspec do |expectations|
28
21
  expectations.syntax = :expect # Disable `should`
29
22
  end
@@ -29,10 +29,12 @@ module ExpectViolation
29
29
  private
30
30
 
31
31
  def to_assertion(offense)
32
+ highlight = offense.highlighted_area
33
+
32
34
  Expectation::Assertion.new(
33
35
  message: offense.message,
34
- line_number: offense.location.line,
35
- column_range: offense.location.column_range
36
+ line_number: offense.location.first_line,
37
+ column_range: highlight.begin_pos...highlight.end_pos
36
38
  )
37
39
  end
38
40
 
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.8.0
4
+ version: 1.9.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: 2016-10-27 00:00:00.000000000 Z
13
+ date: 2016-12-29 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rubocop
@@ -146,6 +146,7 @@ files:
146
146
  - lib/rubocop-rspec.rb
147
147
  - lib/rubocop/cop/rspec/any_instance.rb
148
148
  - lib/rubocop/cop/rspec/be_eql.rb
149
+ - lib/rubocop/cop/rspec/cop.rb
149
150
  - lib/rubocop/cop/rspec/describe_class.rb
150
151
  - lib/rubocop/cop/rspec/describe_method.rb
151
152
  - lib/rubocop/cop/rspec/described_class.rb
@@ -162,20 +163,24 @@ files:
162
163
  - lib/rubocop/cop/rspec/let_setup.rb
163
164
  - lib/rubocop/cop/rspec/message_chain.rb
164
165
  - lib/rubocop/cop/rspec/message_expectation.rb
166
+ - lib/rubocop/cop/rspec/message_spies.rb
165
167
  - lib/rubocop/cop/rspec/multiple_describes.rb
166
168
  - lib/rubocop/cop/rspec/multiple_expectations.rb
167
169
  - lib/rubocop/cop/rspec/named_subject.rb
168
170
  - lib/rubocop/cop/rspec/nested_groups.rb
169
171
  - lib/rubocop/cop/rspec/not_to_not.rb
172
+ - lib/rubocop/cop/rspec/repeated_description.rb
173
+ - lib/rubocop/cop/rspec/single_argument_message_chain.rb
170
174
  - lib/rubocop/cop/rspec/subject_stub.rb
171
175
  - lib/rubocop/cop/rspec/verified_doubles.rb
172
176
  - lib/rubocop/rspec.rb
173
177
  - lib/rubocop/rspec/config_formatter.rb
174
178
  - lib/rubocop/rspec/description_extractor.rb
179
+ - lib/rubocop/rspec/example.rb
180
+ - lib/rubocop/rspec/example_group.rb
175
181
  - lib/rubocop/rspec/inject.rb
176
182
  - lib/rubocop/rspec/language.rb
177
183
  - lib/rubocop/rspec/language/node_pattern.rb
178
- - lib/rubocop/rspec/spec_only.rb
179
184
  - lib/rubocop/rspec/top_level_describe.rb
180
185
  - lib/rubocop/rspec/util.rb
181
186
  - lib/rubocop/rspec/version.rb
@@ -187,6 +192,7 @@ files:
187
192
  - spec/project/project_requires_spec.rb
188
193
  - spec/rubocop/cop/rspec/any_instance_spec.rb
189
194
  - spec/rubocop/cop/rspec/be_eql_spec.rb
195
+ - spec/rubocop/cop/rspec/cop_spec.rb
190
196
  - spec/rubocop/cop/rspec/describe_class_spec.rb
191
197
  - spec/rubocop/cop/rspec/describe_method_spec.rb
192
198
  - spec/rubocop/cop/rspec/described_class_spec.rb
@@ -203,22 +209,25 @@ files:
203
209
  - spec/rubocop/cop/rspec/let_setup_spec.rb
204
210
  - spec/rubocop/cop/rspec/message_chain_spec.rb
205
211
  - spec/rubocop/cop/rspec/message_expectation_spec.rb
212
+ - spec/rubocop/cop/rspec/message_spies_spec.rb
206
213
  - spec/rubocop/cop/rspec/multiple_describes_spec.rb
207
214
  - spec/rubocop/cop/rspec/multiple_expectations_spec.rb
208
215
  - spec/rubocop/cop/rspec/named_subject_spec.rb
209
216
  - spec/rubocop/cop/rspec/nested_groups_spec.rb
210
217
  - spec/rubocop/cop/rspec/not_to_not_spec.rb
218
+ - spec/rubocop/cop/rspec/repeated_description_spec.rb
219
+ - spec/rubocop/cop/rspec/single_argument_message_chain_spec.rb
211
220
  - spec/rubocop/cop/rspec/subject_stub_spec.rb
212
221
  - spec/rubocop/cop/rspec/verified_doubles_spec.rb
213
222
  - spec/rubocop/rspec/config_formatter_spec.rb
214
223
  - spec/rubocop/rspec/description_extractor_spec.rb
224
+ - spec/rubocop/rspec/example_group_spec.rb
225
+ - spec/rubocop/rspec/example_spec.rb
215
226
  - spec/rubocop/rspec/language/selector_set_spec.rb
216
- - spec/rubocop/rspec/spec_only_spec.rb
217
227
  - spec/rubocop/rspec/util/one_spec.rb
218
228
  - spec/rubocop/rspec/wording_spec.rb
219
229
  - spec/shared/autocorrect_behavior.rb
220
230
  - spec/shared/detects_style_behavior.rb
221
- - spec/shared/rspec_only_cop_behavior.rb
222
231
  - spec/spec_helper.rb
223
232
  - spec/support/expect_violation.rb
224
233
  homepage: http://github.com/backus/rubocop-rspec
@@ -241,7 +250,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
241
250
  version: '0'
242
251
  requirements: []
243
252
  rubyforge_project:
244
- rubygems_version: 2.6.6
253
+ rubygems_version: 2.5.2
245
254
  signing_key:
246
255
  specification_version: 4
247
256
  summary: Code style checking for RSpec files
@@ -252,6 +261,7 @@ test_files:
252
261
  - spec/project/project_requires_spec.rb
253
262
  - spec/rubocop/cop/rspec/any_instance_spec.rb
254
263
  - spec/rubocop/cop/rspec/be_eql_spec.rb
264
+ - spec/rubocop/cop/rspec/cop_spec.rb
255
265
  - spec/rubocop/cop/rspec/describe_class_spec.rb
256
266
  - spec/rubocop/cop/rspec/describe_method_spec.rb
257
267
  - spec/rubocop/cop/rspec/described_class_spec.rb
@@ -268,21 +278,24 @@ test_files:
268
278
  - spec/rubocop/cop/rspec/let_setup_spec.rb
269
279
  - spec/rubocop/cop/rspec/message_chain_spec.rb
270
280
  - spec/rubocop/cop/rspec/message_expectation_spec.rb
281
+ - spec/rubocop/cop/rspec/message_spies_spec.rb
271
282
  - spec/rubocop/cop/rspec/multiple_describes_spec.rb
272
283
  - spec/rubocop/cop/rspec/multiple_expectations_spec.rb
273
284
  - spec/rubocop/cop/rspec/named_subject_spec.rb
274
285
  - spec/rubocop/cop/rspec/nested_groups_spec.rb
275
286
  - spec/rubocop/cop/rspec/not_to_not_spec.rb
287
+ - spec/rubocop/cop/rspec/repeated_description_spec.rb
288
+ - spec/rubocop/cop/rspec/single_argument_message_chain_spec.rb
276
289
  - spec/rubocop/cop/rspec/subject_stub_spec.rb
277
290
  - spec/rubocop/cop/rspec/verified_doubles_spec.rb
278
291
  - spec/rubocop/rspec/config_formatter_spec.rb
279
292
  - spec/rubocop/rspec/description_extractor_spec.rb
293
+ - spec/rubocop/rspec/example_group_spec.rb
294
+ - spec/rubocop/rspec/example_spec.rb
280
295
  - spec/rubocop/rspec/language/selector_set_spec.rb
281
- - spec/rubocop/rspec/spec_only_spec.rb
282
296
  - spec/rubocop/rspec/util/one_spec.rb
283
297
  - spec/rubocop/rspec/wording_spec.rb
284
298
  - spec/shared/autocorrect_behavior.rb
285
299
  - spec/shared/detects_style_behavior.rb
286
- - spec/shared/rspec_only_cop_behavior.rb
287
300
  - spec/spec_helper.rb
288
301
  - spec/support/expect_violation.rb