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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/Gemfile +2 -1
- data/Rakefile +3 -1
- data/config/default.yml +16 -0
- data/lib/rubocop-rspec.rb +6 -1
- data/lib/rubocop/cop/rspec/any_instance.rb +0 -2
- data/lib/rubocop/cop/rspec/be_eql.rb +1 -2
- data/lib/rubocop/cop/rspec/cop.rb +66 -0
- data/lib/rubocop/cop/rspec/describe_class.rb +6 -1
- data/lib/rubocop/cop/rspec/describe_method.rb +1 -2
- data/lib/rubocop/cop/rspec/described_class.rb +3 -6
- data/lib/rubocop/cop/rspec/empty_example_group.rb +1 -11
- data/lib/rubocop/cop/rspec/example_length.rb +1 -1
- data/lib/rubocop/cop/rspec/example_wording.rb +0 -2
- data/lib/rubocop/cop/rspec/expect_actual.rb +0 -2
- data/lib/rubocop/cop/rspec/file_path.rb +1 -1
- data/lib/rubocop/cop/rspec/focus.rb +4 -9
- data/lib/rubocop/cop/rspec/hook_argument.rb +3 -5
- data/lib/rubocop/cop/rspec/implicit_expect.rb +1 -1
- data/lib/rubocop/cop/rspec/instance_variable.rb +1 -5
- data/lib/rubocop/cop/rspec/leading_subject.rb +0 -2
- data/lib/rubocop/cop/rspec/let_setup.rb +1 -4
- data/lib/rubocop/cop/rspec/message_chain.rb +1 -8
- data/lib/rubocop/cop/rspec/message_expectation.rb +1 -1
- data/lib/rubocop/cop/rspec/message_spies.rb +79 -0
- data/lib/rubocop/cop/rspec/multiple_describes.rb +1 -2
- data/lib/rubocop/cop/rspec/multiple_expectations.rb +2 -6
- data/lib/rubocop/cop/rspec/named_subject.rb +0 -2
- data/lib/rubocop/cop/rspec/nested_groups.rb +2 -6
- data/lib/rubocop/cop/rspec/not_to_not.rb +1 -2
- data/lib/rubocop/cop/rspec/repeated_description.rb +59 -0
- data/lib/rubocop/cop/rspec/single_argument_message_chain.rb +48 -0
- data/lib/rubocop/cop/rspec/subject_stub.rb +1 -4
- data/lib/rubocop/cop/rspec/verified_doubles.rb +0 -2
- data/lib/rubocop/rspec.rb +1 -1
- data/lib/rubocop/rspec/description_extractor.rb +55 -18
- data/lib/rubocop/rspec/example.rb +56 -0
- data/lib/rubocop/rspec/example_group.rb +57 -0
- data/lib/rubocop/rspec/language.rb +28 -1
- data/lib/rubocop/rspec/language/node_pattern.rb +1 -3
- data/lib/rubocop/rspec/top_level_describe.rb +6 -10
- data/lib/rubocop/rspec/version.rb +1 -1
- data/spec/project/default_config_spec.rb +8 -5
- data/spec/project/project_requires_spec.rb +1 -1
- data/spec/rubocop/{rspec/spec_only_spec.rb → cop/rspec/cop_spec.rb} +2 -4
- data/spec/rubocop/cop/rspec/describe_class_spec.rb +36 -0
- data/spec/rubocop/cop/rspec/described_class_spec.rb +2 -2
- data/spec/rubocop/cop/rspec/example_length_spec.rb +48 -60
- data/spec/rubocop/cop/rspec/implicit_expect_spec.rb +1 -1
- data/spec/rubocop/cop/rspec/message_spies_spec.rb +93 -0
- data/spec/rubocop/cop/rspec/repeated_description_spec.rb +76 -0
- data/spec/rubocop/cop/rspec/single_argument_message_chain_spec.rb +75 -0
- data/spec/rubocop/rspec/description_extractor_spec.rb +46 -24
- data/spec/rubocop/rspec/example_group_spec.rb +44 -0
- data/spec/rubocop/rspec/example_spec.rb +62 -0
- data/spec/rubocop/rspec/language/selector_set_spec.rb +22 -2
- data/spec/spec_helper.rb +2 -9
- data/spec/support/expect_violation.rb +4 -2
- metadata +21 -8
- data/lib/rubocop/rspec/spec_only.rb +0 -61
- 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
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
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
|
-
|
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 '#
|
24
|
+
context '#node_pattern' do
|
25
25
|
it 'builds a node pattern' do
|
26
|
-
expect(selector_set.
|
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 '
|
7
|
-
|
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.
|
35
|
-
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.
|
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-
|
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.
|
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
|