rubocop-rspec 1.22.0 → 1.22.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/rubocop/cop/rspec/return_from_stub.rb +28 -23
- data/lib/rubocop/rspec/version.rb +1 -1
- data/spec/rubocop/cop/rspec/return_from_stub_spec.rb +32 -6
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ace522f3766b6db17eecaffa9d4a5b2efc6f4cf81a581211afed52fb7ed18a1a
|
4
|
+
data.tar.gz: d38f31b69bc99ff14ca490b0a7ad1a84284d1b30bc73d347ba01e8a90831198d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8efef00f7046db8b8bf54d8585e43e999a570204aaa5b645a5b73271d84bedd7d9694ac2de40af45b457c4f5f3469a04219cb3d140d4cb6b001cb316751969f4
|
7
|
+
data.tar.gz: af58c7c3e41514372c3d88dbab4e4613256b0233075b7e71ee18af6158aa14d0828c7ff0eb2f4327d75fbb74e465bd1ae57378073f5d4e23817d3ef7665b7edc
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
## Master (Unreleased)
|
4
4
|
|
5
|
+
## 1.22.1 (2018-01-17)
|
6
|
+
|
7
|
+
* Fix false positives in `RSpec/ReturnFromStub`. ([@Darhazer][])
|
8
|
+
|
5
9
|
## 1.22.0 (2018-01-10)
|
6
10
|
|
7
11
|
* Updates `describe_class` to account for RSpecs `:system` wrapper of rails system tests. ([@EliseFitz15][])
|
@@ -39,18 +39,23 @@ module RuboCop
|
|
39
39
|
MSG_AND_RETURN = 'Use `and_return` for static values.'.freeze
|
40
40
|
MSG_BLOCK = 'Use block for static values.'.freeze
|
41
41
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
)
|
42
|
+
def_node_search :contains_stub?, '(send nil? :receive (...))'
|
43
|
+
def_node_search :and_return_value, <<-PATTERN
|
44
|
+
$(send _ :and_return $(...))
|
46
45
|
PATTERN
|
47
46
|
|
48
47
|
def on_send(node)
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
48
|
+
return unless contains_stub?(node)
|
49
|
+
return unless style == :block
|
50
|
+
|
51
|
+
check_and_return_call(node)
|
52
|
+
end
|
53
|
+
|
54
|
+
def on_block(node)
|
55
|
+
return unless contains_stub?(node)
|
56
|
+
return unless style == :and_return
|
57
|
+
|
58
|
+
check_block_body(node)
|
54
59
|
end
|
55
60
|
|
56
61
|
def autocorrect(node)
|
@@ -64,26 +69,23 @@ module RuboCop
|
|
64
69
|
private
|
65
70
|
|
66
71
|
def check_and_return_call(node)
|
67
|
-
and_return_value(node) do |args|
|
72
|
+
and_return_value(node) do |and_return, args|
|
68
73
|
unless dynamic?(args)
|
69
74
|
add_offense(
|
70
|
-
|
71
|
-
location: :
|
75
|
+
and_return,
|
76
|
+
location: :selector,
|
72
77
|
message: MSG_BLOCK
|
73
78
|
)
|
74
79
|
end
|
75
80
|
end
|
76
81
|
end
|
77
82
|
|
78
|
-
def check_block_body(
|
79
|
-
|
80
|
-
return unless block
|
81
|
-
|
82
|
-
_receiver, _args, body = *block
|
83
|
+
def check_block_body(block)
|
84
|
+
body = block.body
|
83
85
|
unless body && dynamic?(body) # rubocop:disable Style/GuardClause
|
84
86
|
add_offense(
|
85
|
-
|
86
|
-
location: :
|
87
|
+
block,
|
88
|
+
location: :begin,
|
87
89
|
message: MSG_AND_RETURN
|
88
90
|
)
|
89
91
|
end
|
@@ -138,9 +140,9 @@ module RuboCop
|
|
138
140
|
|
139
141
|
# :nodoc:
|
140
142
|
class BlockBodyCorrector
|
141
|
-
def initialize(
|
142
|
-
@block =
|
143
|
-
@node =
|
143
|
+
def initialize(block)
|
144
|
+
@block = block
|
145
|
+
@node = block.parent
|
144
146
|
@body = block.body || NULL_BLOCK_BODY
|
145
147
|
end
|
146
148
|
|
@@ -148,7 +150,10 @@ module RuboCop
|
|
148
150
|
# Heredoc autocorrection is not yet implemented.
|
149
151
|
return if heredoc?
|
150
152
|
|
151
|
-
corrector.replace(
|
153
|
+
corrector.replace(
|
154
|
+
block.loc.expression,
|
155
|
+
"#{block.send_node.source}.and_return(#{body.source})"
|
156
|
+
)
|
152
157
|
end
|
153
158
|
|
154
159
|
private
|
@@ -12,7 +12,7 @@ RSpec.describe RuboCop::Cop::RSpec::ReturnFromStub, :config do
|
|
12
12
|
expect_offense(<<-RUBY)
|
13
13
|
it do
|
14
14
|
allow(Foo).to receive(:bar) { 42 }
|
15
|
-
|
15
|
+
^ Use `and_return` for static values.
|
16
16
|
end
|
17
17
|
RUBY
|
18
18
|
end
|
@@ -21,7 +21,7 @@ RSpec.describe RuboCop::Cop::RSpec::ReturnFromStub, :config do
|
|
21
21
|
expect_offense(<<-RUBY)
|
22
22
|
it do
|
23
23
|
allow(Foo).to receive(:bar) {}
|
24
|
-
|
24
|
+
^ Use `and_return` for static values.
|
25
25
|
end
|
26
26
|
RUBY
|
27
27
|
end
|
@@ -30,7 +30,7 @@ RSpec.describe RuboCop::Cop::RSpec::ReturnFromStub, :config do
|
|
30
30
|
expect_offense(<<-RUBY)
|
31
31
|
it do
|
32
32
|
allow(Foo).to receive(:bar) { [42, 43] }
|
33
|
-
|
33
|
+
^ Use `and_return` for static values.
|
34
34
|
end
|
35
35
|
RUBY
|
36
36
|
end
|
@@ -39,7 +39,16 @@ RSpec.describe RuboCop::Cop::RSpec::ReturnFromStub, :config do
|
|
39
39
|
expect_offense(<<-RUBY)
|
40
40
|
it do
|
41
41
|
allow(Foo).to receive(:bar) { {a: 42, b: 43} }
|
42
|
-
|
42
|
+
^ Use `and_return` for static values.
|
43
|
+
end
|
44
|
+
RUBY
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'finds static values in a block when there are chained methods' do
|
48
|
+
expect_offense(<<-RUBY)
|
49
|
+
it do
|
50
|
+
allow(Question).to receive(:meaning).with(:universe) { 42 }
|
51
|
+
^ Use `and_return` for static values.
|
43
52
|
end
|
44
53
|
RUBY
|
45
54
|
end
|
@@ -92,7 +101,7 @@ RSpec.describe RuboCop::Cop::RSpec::ReturnFromStub, :config do
|
|
92
101
|
expect_offense(<<-RUBY)
|
93
102
|
it do
|
94
103
|
allow(Foo).to receive(:bar) do
|
95
|
-
|
104
|
+
^^ Use `and_return` for static values.
|
96
105
|
"You called" \
|
97
106
|
"me"
|
98
107
|
end
|
@@ -124,6 +133,10 @@ RSpec.describe RuboCop::Cop::RSpec::ReturnFromStub, :config do
|
|
124
133
|
'allow(Foo).to receive(:bar) { { foo: 42 } }',
|
125
134
|
'allow(Foo).to receive(:bar).and_return({ foo: 42 })'
|
126
135
|
|
136
|
+
include_examples 'autocorrect',
|
137
|
+
'allow(Foo).to receive(:bar).with(1) { 42 }',
|
138
|
+
'allow(Foo).to receive(:bar).with(1).and_return(42)'
|
139
|
+
|
127
140
|
include_examples 'autocorrect',
|
128
141
|
'allow(Foo).to receive(:bar) {}',
|
129
142
|
'allow(Foo).to receive(:bar).and_return(nil)'
|
@@ -149,7 +162,16 @@ RSpec.describe RuboCop::Cop::RSpec::ReturnFromStub, :config do
|
|
149
162
|
expect_offense(<<-RUBY)
|
150
163
|
it do
|
151
164
|
allow(Foo).to receive(:bar).and_return(42)
|
152
|
-
|
165
|
+
^^^^^^^^^^ Use block for static values.
|
166
|
+
end
|
167
|
+
RUBY
|
168
|
+
end
|
169
|
+
|
170
|
+
it 'finds static values returned from chained method' do
|
171
|
+
expect_offense(<<-RUBY)
|
172
|
+
it do
|
173
|
+
allow(Foo).to receive(:bar).with(1).and_return(42)
|
174
|
+
^^^^^^^^^^ Use block for static values.
|
153
175
|
end
|
154
176
|
RUBY
|
155
177
|
end
|
@@ -183,6 +205,10 @@ RSpec.describe RuboCop::Cop::RSpec::ReturnFromStub, :config do
|
|
183
205
|
'allow(Foo).to receive(:bar).and_return(42)',
|
184
206
|
'allow(Foo).to receive(:bar) { 42 }'
|
185
207
|
|
208
|
+
include_examples 'autocorrect',
|
209
|
+
'allow(Foo).to receive(:bar).with(1).and_return(foo: 42)',
|
210
|
+
'allow(Foo).to receive(:bar).with(1) { { foo: 42 } }'
|
211
|
+
|
186
212
|
include_examples 'autocorrect',
|
187
213
|
'allow(Foo).to receive(:bar).and_return({ foo: 42 })',
|
188
214
|
'allow(Foo).to receive(:bar) { { foo: 42 } }'
|
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.22.
|
4
|
+
version: 1.22.1
|
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: 2018-01-
|
13
|
+
date: 2018-01-17 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rubocop
|
@@ -272,7 +272,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
272
272
|
version: '0'
|
273
273
|
requirements: []
|
274
274
|
rubyforge_project:
|
275
|
-
rubygems_version: 2.7.
|
275
|
+
rubygems_version: 2.7.4
|
276
276
|
signing_key:
|
277
277
|
specification_version: 4
|
278
278
|
summary: Code style checking for RSpec files
|