rubocop-rspec 1.14.0 → 1.15.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/config/default.yml +4 -0
- data/lib/rubocop-rspec.rb +1 -0
- data/lib/rubocop/cop/rspec/describe_symbol.rb +33 -0
- data/lib/rubocop/cop/rspec/overwriting_setup.rb +1 -1
- data/lib/rubocop/cop/rspec/scattered_let.rb +1 -1
- data/lib/rubocop/rspec/language/node_pattern.rb +5 -0
- data/lib/rubocop/rspec/version.rb +1 -1
- data/spec/rubocop/cop/rspec/describe_symbol_spec.rb +42 -0
- data/spec/rubocop/cop/rspec/overwriting_setup_spec.rb +5 -0
- data/spec/rubocop/cop/rspec/scattered_let_spec.rb +5 -0
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 05c5a02b8f251474055785a8e599fa2bbd66a5da
|
4
|
+
data.tar.gz: 4d34abb87f561cbe99dcd4df35d4d2e4b8eb1499
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 55de6981f33d7f310a4290a1fc4578bb6d0ba905a2ce4ea86f966d025165cfd6d08d05f5198b56dcd207178724f574e6e046cb4af01be02a7e36662cfe792647
|
7
|
+
data.tar.gz: 73f5cdbc39ed5bc4aaa0d2fa8aa0769855b09f2d960ccf5078638582be79556109a491819a4253414a567a50baef1e66b6b737203998a57fad0cf2997c4446ca
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,11 @@
|
|
2
2
|
|
3
3
|
## Master (Unreleased)
|
4
4
|
|
5
|
+
## 1.15.0 (2017-05-24)
|
6
|
+
|
7
|
+
* Add `RSpec/DescribeSymbol` cop. ([@tsigo][])
|
8
|
+
* Fix error when `RSpec/OverwritingSetup` and `RSpec/ScatteredLet` analyzed empty example groups. ([@backus][])
|
9
|
+
|
5
10
|
## 1.14.0 (2017-03-24)
|
6
11
|
|
7
12
|
* Add `RSpec/OverwritingSetup` cop. ([@Darhazer][])
|
@@ -206,3 +211,4 @@
|
|
206
211
|
[@redross]: https://github.com/redross
|
207
212
|
[@cfabianski]: https://github.com/cfabianski
|
208
213
|
[@dgollahon]: https://github.com/dgollahon
|
214
|
+
[@tsigo]: https://github.com/tsigo
|
data/config/default.yml
CHANGED
@@ -42,6 +42,10 @@ RSpec/DescribeMethod:
|
|
42
42
|
Description: Checks that the second argument to `describe` specifies a method.
|
43
43
|
Enabled: true
|
44
44
|
|
45
|
+
RSpec/DescribeSymbol:
|
46
|
+
Description: Avoid describing symbols.
|
47
|
+
Enabled: true
|
48
|
+
|
45
49
|
RSpec/IteratedExpectation:
|
46
50
|
Description: Check that `all` matcher is used instead of iterating over an array.
|
47
51
|
Enabled: true
|
data/lib/rubocop-rspec.rb
CHANGED
@@ -26,6 +26,7 @@ require 'rubocop/cop/rspec/be_eql'
|
|
26
26
|
require 'rubocop/cop/rspec/before_after_all'
|
27
27
|
require 'rubocop/cop/rspec/describe_class'
|
28
28
|
require 'rubocop/cop/rspec/describe_method'
|
29
|
+
require 'rubocop/cop/rspec/describe_symbol'
|
29
30
|
require 'rubocop/cop/rspec/described_class'
|
30
31
|
require 'rubocop/cop/rspec/empty_example_group'
|
31
32
|
require 'rubocop/cop/rspec/empty_line_after_final_let'
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module RSpec
|
6
|
+
# Avoid describing symbols.
|
7
|
+
#
|
8
|
+
# @example
|
9
|
+
# # bad
|
10
|
+
# describe :my_method do
|
11
|
+
# ...
|
12
|
+
# end
|
13
|
+
#
|
14
|
+
# # good
|
15
|
+
# describe '#my_method' do
|
16
|
+
# ...
|
17
|
+
# end
|
18
|
+
#
|
19
|
+
# See https://github.com/rspec/rspec-core/issues/1610
|
20
|
+
class DescribeSymbol < Cop
|
21
|
+
MSG = 'Avoid describing symbols.'.freeze
|
22
|
+
|
23
|
+
def_node_matcher :describe_symbol?, <<-PATTERN
|
24
|
+
(send {(const nil :RSpec) nil} :describe $sym ...)
|
25
|
+
PATTERN
|
26
|
+
|
27
|
+
def on_send(node)
|
28
|
+
describe_symbol?(node) { |match| add_offense(match, :expression) }
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -8,6 +8,11 @@ module RuboCop
|
|
8
8
|
extend RuboCop::NodePattern::Macros
|
9
9
|
|
10
10
|
def_node_matcher :example_group?, ExampleGroups::ALL.block_pattern
|
11
|
+
|
12
|
+
def_node_matcher :example_group_with_body?, <<-PATTERN
|
13
|
+
(block #{ExampleGroups::ALL.send_pattern} args [!nil])
|
14
|
+
PATTERN
|
15
|
+
|
11
16
|
def_node_matcher :example?, Examples::ALL.block_pattern
|
12
17
|
end
|
13
18
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
RSpec.describe RuboCop::Cop::RSpec::DescribeSymbol do
|
2
|
+
subject(:cop) { described_class.new }
|
3
|
+
|
4
|
+
it 'flags violations for `describe :symbol`' do
|
5
|
+
expect_violation(<<-RUBY)
|
6
|
+
describe(:some_method) { }
|
7
|
+
^^^^^^^^^^^^ Avoid describing symbols.
|
8
|
+
RUBY
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'flags violations for `describe :symbol` with multiple arguments' do
|
12
|
+
expect_violation(<<-RUBY)
|
13
|
+
describe(:some_method, "description") { }
|
14
|
+
^^^^^^^^^^^^ Avoid describing symbols.
|
15
|
+
RUBY
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'flags violations for `RSpec.describe :symbol`' do
|
19
|
+
expect_violation(<<-RUBY)
|
20
|
+
RSpec.describe(:some_method, "description") { }
|
21
|
+
^^^^^^^^^^^^ Avoid describing symbols.
|
22
|
+
RUBY
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'flags violations for a nested `describe`' do
|
26
|
+
expect_violation(<<-RUBY)
|
27
|
+
RSpec.describe Foo do
|
28
|
+
describe :to_s do
|
29
|
+
^^^^^ Avoid describing symbols.
|
30
|
+
end
|
31
|
+
end
|
32
|
+
RUBY
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'does not flag non-Symbol arguments' do
|
36
|
+
expect_no_violations('describe("#some_method") { }')
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'does not flag `context :symbol`' do
|
40
|
+
expect_no_violations('context(:some_method) { }')
|
41
|
+
end
|
42
|
+
end
|
@@ -43,4 +43,9 @@ RSpec.describe RuboCop::Cop::RSpec::OverwritingSetup do
|
|
43
43
|
end
|
44
44
|
RUBY
|
45
45
|
end
|
46
|
+
|
47
|
+
it 'does not encounter an error when handling an empty describe' do
|
48
|
+
expect { inspect_source(cop, 'RSpec.describe(User) do end', 'a_spec.rb') }
|
49
|
+
.not_to raise_error
|
50
|
+
end
|
46
51
|
end
|
@@ -23,4 +23,9 @@ RSpec.describe RuboCop::Cop::RSpec::ScatteredLet do
|
|
23
23
|
end
|
24
24
|
RUBY
|
25
25
|
end
|
26
|
+
|
27
|
+
it 'does not encounter an error when handling an empty describe' do
|
28
|
+
expect { inspect_source(cop, 'RSpec.describe(User) do end', 'a_spec.rb') }
|
29
|
+
.not_to raise_error
|
30
|
+
end
|
26
31
|
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.
|
4
|
+
version: 1.15.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: 2017-03-
|
13
|
+
date: 2017-03-25 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rubocop
|
@@ -151,6 +151,7 @@ files:
|
|
151
151
|
- lib/rubocop/cop/rspec/cop.rb
|
152
152
|
- lib/rubocop/cop/rspec/describe_class.rb
|
153
153
|
- lib/rubocop/cop/rspec/describe_method.rb
|
154
|
+
- lib/rubocop/cop/rspec/describe_symbol.rb
|
154
155
|
- lib/rubocop/cop/rspec/described_class.rb
|
155
156
|
- lib/rubocop/cop/rspec/empty_example_group.rb
|
156
157
|
- lib/rubocop/cop/rspec/empty_line_after_final_let.rb
|
@@ -212,6 +213,7 @@ files:
|
|
212
213
|
- spec/rubocop/cop/rspec/cop_spec.rb
|
213
214
|
- spec/rubocop/cop/rspec/describe_class_spec.rb
|
214
215
|
- spec/rubocop/cop/rspec/describe_method_spec.rb
|
216
|
+
- spec/rubocop/cop/rspec/describe_symbol_spec.rb
|
215
217
|
- spec/rubocop/cop/rspec/described_class_spec.rb
|
216
218
|
- spec/rubocop/cop/rspec/empty_example_group_spec.rb
|
217
219
|
- spec/rubocop/cop/rspec/empty_line_after_final_let_spec.rb
|
@@ -279,7 +281,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
279
281
|
version: '0'
|
280
282
|
requirements: []
|
281
283
|
rubyforge_project:
|
282
|
-
rubygems_version: 2.
|
284
|
+
rubygems_version: 2.6.8
|
283
285
|
signing_key:
|
284
286
|
specification_version: 4
|
285
287
|
summary: Code style checking for RSpec files
|
@@ -295,6 +297,7 @@ test_files:
|
|
295
297
|
- spec/rubocop/cop/rspec/cop_spec.rb
|
296
298
|
- spec/rubocop/cop/rspec/describe_class_spec.rb
|
297
299
|
- spec/rubocop/cop/rspec/describe_method_spec.rb
|
300
|
+
- spec/rubocop/cop/rspec/describe_symbol_spec.rb
|
298
301
|
- spec/rubocop/cop/rspec/described_class_spec.rb
|
299
302
|
- spec/rubocop/cop/rspec/empty_example_group_spec.rb
|
300
303
|
- spec/rubocop/cop/rspec/empty_line_after_final_let_spec.rb
|