rubocop-rspec 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5e1993245da215069d2de0ca4a565ccd0ac9aaa6
4
- data.tar.gz: ab550daf4e1f7ea5121d19fbea73e6626b6ae3a2
3
+ metadata.gz: 781c177bf195bc9ec0663b45b2312aa2a94f6da2
4
+ data.tar.gz: 44414a1e7ea2f3ee8ac707b8d6e5659e5789588b
5
5
  SHA512:
6
- metadata.gz: 01f3a531a9acaef8fd91e3f2af343eaecf80d7e74e224e386d2470911189c24a90e27a9e2b717e01250c2f76fc60269ea3bef26c413adac9eb4e71d4c44d4180
7
- data.tar.gz: 34ec3b6aeaa188e97066a479ec6c33fbbdc714609afbaccf82dc4aa0e64f8277ab6c376c35be726f52794d3e84c367e7d3222a8afd8a586061e51a1cd968c606
6
+ metadata.gz: f95537228be6ba9d25328bfcb375091ba5bcfc2bc58ba384c910e6f87fd367a5510dfec4f47cdf07a2e863794a614d657c22b7d744b94380db6e6a67e6f6f78c
7
+ data.tar.gz: 157e06d0dc76c034b8a2704dad0747d15cb59654412206957fa4c4365686adf8764544de0b8ad1ca6f21c7bc54d6e21b30a0e04526ec51636663d6b2f1dbe176
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Change log
2
2
 
3
+ ## 1.2.1
4
+
5
+ * Add `RSpec::VerifiedDoubles` cop. ([@andyw8][])
6
+
3
7
  ## 1.2.0
4
8
 
5
9
  * Drop support of ruby `1.9.2`. ([@geniou][])
@@ -39,6 +43,7 @@
39
43
 
40
44
  <!-- Contributors -->
41
45
 
46
+ [@andyw8]: https://github.com/andyw8
42
47
  [@geniou]: https://github.com/geniou
43
48
  [@nevir]: https://github.com/nevir
44
49
  [@pstengel]: https://github.com/pstengel
data/config/default.yml CHANGED
@@ -34,3 +34,7 @@ RSpec/FilePath:
34
34
  CustomTransform:
35
35
  RuboCop: rubocop
36
36
  RSpec: rspec
37
+
38
+ RSpec/VerifiedDoubles:
39
+ Description: 'Prefer using verifying doubles over normal doubles.'
40
+ Enabled: false
data/lib/rubocop-rspec.rb CHANGED
@@ -16,3 +16,4 @@ require 'rubocop/cop/rspec/example_wording'
16
16
  require 'rubocop/cop/rspec/file_path'
17
17
  require 'rubocop/cop/rspec/instance_variable'
18
18
  require 'rubocop/cop/rspec/multiple_describes'
19
+ require 'rubocop/cop/rspec/verified_doubles'
@@ -20,7 +20,7 @@ module RuboCop
20
20
  class ExampleWording < Cop
21
21
  MSG = 'Do not use should when describing your tests.'
22
22
 
23
- def on_block(node)
23
+ def on_block(node) # rubocop:disable Metrics/AbcSize
24
24
  method, _, _ = *node
25
25
  _, method_name, *args = *method
26
26
 
@@ -63,7 +63,7 @@ module RuboCop
63
63
 
64
64
  # ends with o s x ch sh or ss
65
65
  if %w(o s x]).include?(word[-1]) ||
66
- %w(ch sh ss]).include?(word[-2..-1])
66
+ %w(ch sh ss]).include?(word[-2..-1])
67
67
  return "#{word}es"
68
68
  end
69
69
 
@@ -10,13 +10,13 @@ module RuboCop
10
10
  # # bad
11
11
  # describe MyClass do
12
12
  # before { @foo = [] }
13
- # it { expect(@foo).to be_emtpy }
13
+ # it { expect(@foo).to be_empty }
14
14
  # end
15
15
  #
16
16
  # # good
17
17
  # describe MyClass do
18
18
  # let(:foo) { [] }
19
- # it { expect(foo).to be_emtpy }
19
+ # it { expect(foo).to be_empty }
20
20
  # end
21
21
  class InstanceVariable < Cop
22
22
  MESSAGE = 'Use `let` instead of an instance variable'
@@ -0,0 +1,32 @@
1
+ # encoding: utf-8
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module RSpec
6
+ # Prefer using verifying doubles over normal doubles.
7
+ # see: https://relishapp.com/rspec/rspec-mocks/docs/verifying-doubles
8
+ #
9
+ # @example
10
+ # # bad
11
+ # it '...' do
12
+ # widget = double("Widget")
13
+ # end
14
+ #
15
+ # # good
16
+ # it '...' do
17
+ # widget = instance_double("Widget")
18
+ # end
19
+ class VerifiedDoubles < Cop
20
+ MSG = 'Prefer using verifying doubles over normal doubles.'
21
+
22
+ def on_send(node)
23
+ _receiver, method_name, *_args = *node
24
+ return unless method_name == :double
25
+ add_offense(node,
26
+ :expression,
27
+ format(MSG, node.loc.expression.source))
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -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.2.0'
7
+ STRING = '1.2.1'
8
8
  end
9
9
  end
10
10
  end
data/spec/project_spec.rb CHANGED
@@ -1,7 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
- require 'spec_helper'
4
-
5
3
  describe 'RuboCop Project' do # rubocop:disable RSpec/DescribeClass
6
4
  describe 'default configuration file' do
7
5
  let(:cop_names) do
@@ -9,7 +7,7 @@ describe 'RuboCop Project' do # rubocop:disable RSpec/DescribeClass
9
7
  'rspec', '*.rb'))
10
8
  .map do |file|
11
9
  cop_name = File.basename(file, '.rb')
12
- .gsub(/(^|_)(.)/) { Regexp.last_match(2).upcase }
10
+ .gsub(/(^|_)(.)/) { Regexp.last_match(2).upcase }
13
11
 
14
12
  "RSpec/#{cop_name}"
15
13
  end
@@ -1,7 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
- require 'spec_helper'
4
-
5
3
  describe RuboCop::Cop::RSpec::DescribeClass do
6
4
  subject(:cop) { described_class.new }
7
5
 
@@ -1,7 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
- require 'spec_helper'
4
-
5
3
  describe RuboCop::Cop::RSpec::DescribeMethod do
6
4
  subject(:cop) { described_class.new }
7
5
 
@@ -10,8 +8,8 @@ describe RuboCop::Cop::RSpec::DescribeMethod do
10
8
  expect(cop.offenses.size).to eq(1)
11
9
  expect(cop.offenses.map(&:line).sort).to eq([1])
12
10
  expect(cop.messages)
13
- .to eq(['The second argument to describe should be the method being ' \
14
- "tested. '#instance' or '.class'"])
11
+ .to eq(['The second argument to describe should be the method being ' \
12
+ "tested. '#instance' or '.class'"])
15
13
  end
16
14
 
17
15
  it 'skips methods starting with a . or #' do
@@ -1,7 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
- require 'spec_helper'
4
-
5
3
  describe RuboCop::Cop::RSpec::DescribedClass do
6
4
  subject(:cop) { described_class.new }
7
5
 
@@ -1,13 +1,11 @@
1
1
  # encoding: utf-8
2
2
 
3
- require 'spec_helper'
4
-
5
3
  describe RuboCop::Cop::RSpec::ExampleWording, :config do
6
4
  subject(:cop) { described_class.new(config) }
7
5
  let(:cop_config) do
8
6
  {
9
7
  'CustomTransform' => { 'have' => 'has', 'not' => 'does not' },
10
- 'IgnoredWords' => %w(only realy)
8
+ 'IgnoredWords' => %w(only really)
11
9
  }
12
10
  end
13
11
 
@@ -44,7 +42,7 @@ describe RuboCop::Cop::RSpec::ExampleWording, :config do
44
42
  'should worry about the future' => 'worries about the future',
45
43
  'should pay for pizza' => 'pays for pizza',
46
44
  'should miss me' => 'misses me',
47
- 'should realy only return one item' => 'realy only returns one item'
45
+ 'should really only return one item' => 'really only returns one item'
48
46
  }.each do |old, new|
49
47
  it 'autocorrects an offenses' do
50
48
  new_source = autocorrect_source(cop, ["it '#{old}' do", 'end'])
@@ -1,7 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
- require 'spec_helper'
4
-
5
3
  describe RuboCop::Cop::RSpec::FilePath, :config do
6
4
  subject(:cop) { described_class.new(config) }
7
5
  let(:cop_config) { { 'CustomTransform' => { 'FooFoo' => 'foofoo' } } }
@@ -1,14 +1,12 @@
1
1
  # encoding: utf-8
2
2
 
3
- require 'spec_helper'
4
-
5
3
  describe RuboCop::Cop::RSpec::InstanceVariable do
6
4
  subject(:cop) { described_class.new }
7
5
 
8
6
  it 'finds an instance variable inside a describe' do
9
7
  inspect_source(cop, ['describe MyClass do',
10
8
  ' before { @foo = [] }',
11
- ' it { expect(@foo).to be_emtpy }',
9
+ ' it { expect(@foo).to be_empty }',
12
10
  'end'])
13
11
  expect(cop.offenses.size).to eq(1)
14
12
  expect(cop.offenses.map(&:line).sort).to eq([3])
@@ -17,7 +15,7 @@ describe RuboCop::Cop::RSpec::InstanceVariable do
17
15
 
18
16
  it 'finds an instance variable inside a shared example' do
19
17
  inspect_source(cop, ["shared_examples 'shared example' do",
20
- ' it { expect(@foo).to be_emtpy }',
18
+ ' it { expect(@foo).to be_empty }',
21
19
  'end'])
22
20
  expect(cop.offenses.size).to eq(1)
23
21
  expect(cop.offenses.map(&:line).sort).to eq([2])
@@ -1,7 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
- require 'spec_helper'
4
-
5
3
  describe RuboCop::Cop::RSpec::MultipleDescribes do
6
4
  subject(:cop) { described_class.new }
7
5
 
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+
3
+ describe RuboCop::Cop::RSpec::VerifiedDoubles do
4
+ subject(:cop) { described_class.new }
5
+
6
+ it 'finds `double` instead of a verifying double' do
7
+ inspect_source(cop, ['it do',
8
+ ' foo = double("Widget")',
9
+ 'end'])
10
+ expect(cop.messages)
11
+ .to eq(['Prefer using verifying doubles over normal doubles.'])
12
+ expect(cop.highlights).to eq(['double("Widget")'])
13
+ expect(cop.offenses.map(&:line).sort).to eq([2])
14
+ end
15
+ 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.2.0
4
+ version: 1.2.1
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: 2014-09-02 00:00:00.000000000 Z
12
+ date: 2014-11-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rubocop
@@ -93,6 +93,7 @@ files:
93
93
  - lib/rubocop/cop/rspec/file_path.rb
94
94
  - lib/rubocop/cop/rspec/instance_variable.rb
95
95
  - lib/rubocop/cop/rspec/multiple_describes.rb
96
+ - lib/rubocop/cop/rspec/verified_doubles.rb
96
97
  - lib/rubocop/rspec/inject.rb
97
98
  - lib/rubocop/rspec/top_level_describe.rb
98
99
  - lib/rubocop/rspec/version.rb
@@ -105,6 +106,7 @@ files:
105
106
  - spec/rubocop/cop/rspec/file_path_spec.rb
106
107
  - spec/rubocop/cop/rspec/instance_variable_spec.rb
107
108
  - spec/rubocop/cop/rspec/multiple_describes_spec.rb
109
+ - spec/rubocop/cop/rspec/verified_doubles_spec.rb
108
110
  - spec/spec_helper.rb
109
111
  homepage: http://github.com/nevir/rubocop-rspec
110
112
  licenses:
@@ -139,5 +141,6 @@ test_files:
139
141
  - spec/rubocop/cop/rspec/file_path_spec.rb
140
142
  - spec/rubocop/cop/rspec/instance_variable_spec.rb
141
143
  - spec/rubocop/cop/rspec/multiple_describes_spec.rb
144
+ - spec/rubocop/cop/rspec/verified_doubles_spec.rb
142
145
  - spec/spec_helper.rb
143
146
  has_rdoc: