rubocop-rspec 1.2.2 → 1.3.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 +7 -0
- data/lib/rubocop/cop/rspec/describe_class.rb +16 -2
- data/lib/rubocop/cop/rspec/describe_method.rb +1 -1
- data/lib/rubocop/cop/rspec/file_path.rb +3 -1
- data/lib/rubocop/rspec/top_level_describe.rb +0 -2
- data/lib/rubocop/rspec/version.rb +1 -1
- data/spec/rubocop/cop/rspec/describe_class_spec.rb +17 -0
- data/spec/rubocop/cop/rspec/describe_method_spec.rb +6 -0
- data/spec/rubocop/cop/rspec/file_path_spec.rb +10 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 885b88b3cfe9f4d470eed5daccc1071135e59e11
|
4
|
+
data.tar.gz: 0d91a813ca891c4b7b90227188a87d24250088cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8f100ef7123bf5a9df50d45dae99592e1704cab30aa12e24f4d1d8d58e851b88c0db6f9efc46b531743fdcf487f295a75fd1033b0a05e8c2de2d4cf25c9499bd
|
7
|
+
data.tar.gz: d9ec52c5ac1aebb71bd8e16303ecc479f4fdde51d1ff9fa27dc1f1bf95d4b9f80d8e7389aa472f400d91a532e4aff8d6168c9b4b7761aa32fab560845591b5d6
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Change log
|
2
2
|
|
3
|
+
# 1.3.0
|
4
|
+
|
5
|
+
* Ignore non string arguments for FilePathCop - thanks to @deivid-rodriguez. ([@geniou][])
|
6
|
+
* Skip DescribeMethod cop for tagged specs. ([@deivid-rodriguez][])
|
7
|
+
* Skip DescribeClass cop for feature/request specs. ([@deivid-rodriguez][])
|
8
|
+
|
3
9
|
# 1.2.2
|
4
10
|
|
5
11
|
* Make `RSpec::ExampleWording` case insensitive. ([@geniou][])
|
@@ -48,6 +54,7 @@
|
|
48
54
|
<!-- Contributors -->
|
49
55
|
|
50
56
|
[@andyw8]: https://github.com/andyw8
|
57
|
+
[@deivid-rodriguez]: https://github.com/deivid-rodriguez
|
51
58
|
[@geniou]: https://github.com/geniou
|
52
59
|
[@nevir]: https://github.com/nevir
|
53
60
|
[@pstengel]: https://github.com/pstengel
|
@@ -14,15 +14,29 @@ module RuboCop
|
|
14
14
|
# # good
|
15
15
|
# describe TestedClass do
|
16
16
|
# end
|
17
|
+
#
|
18
|
+
# describe "A feature example", type: :feature do
|
19
|
+
# end
|
17
20
|
class DescribeClass < Cop
|
18
21
|
include RuboCop::RSpec::TopLevelDescribe
|
19
22
|
|
23
|
+
REQUEST_PAIR = s(:pair, s(:sym, :type), s(:sym, :request))
|
24
|
+
FEATURE_PAIR = s(:pair, s(:sym, :type), s(:sym, :feature))
|
25
|
+
|
20
26
|
MESSAGE = 'The first argument to describe should be the class or ' \
|
21
27
|
'module being tested.'
|
22
28
|
|
23
29
|
def on_top_level_describe(_node, args)
|
24
|
-
return if args
|
25
|
-
|
30
|
+
return if args[0] && args[0].type == :const
|
31
|
+
|
32
|
+
return if args[1..-1].any? do |arg|
|
33
|
+
next unless arg.hash_type?
|
34
|
+
arg.children.any? do |n|
|
35
|
+
[REQUEST_PAIR, FEATURE_PAIR].include?(n)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
add_offense(args[0], :expression, MESSAGE)
|
26
40
|
end
|
27
41
|
end
|
28
42
|
end
|
@@ -26,7 +26,7 @@ module RuboCop
|
|
26
26
|
|
27
27
|
def on_top_level_describe(_node, args)
|
28
28
|
second_arg = args[1]
|
29
|
-
return unless second_arg
|
29
|
+
return unless second_arg && second_arg.type == :str
|
30
30
|
return if METHOD_STRING_MATCHER =~ second_arg.children.first
|
31
31
|
|
32
32
|
add_offense(second_arg, :expression, MESSAGE)
|
@@ -35,7 +35,9 @@ module RuboCop
|
|
35
35
|
|
36
36
|
def matcher(object, method)
|
37
37
|
path = File.join(parts(object))
|
38
|
-
|
38
|
+
if method && method.type == :str
|
39
|
+
path += '*' + method.children.first.gsub(/\W+/, '')
|
40
|
+
end
|
39
41
|
|
40
42
|
"#{path}*_spec.rb"
|
41
43
|
end
|
@@ -27,6 +27,23 @@ describe RuboCop::Cop::RSpec::DescribeClass do
|
|
27
27
|
expect(cop.offenses).to be_empty
|
28
28
|
end
|
29
29
|
|
30
|
+
it 'ignores request specs' do
|
31
|
+
inspect_source(cop, "describe 'my new feature', type: :request do; end")
|
32
|
+
expect(cop.offenses).to be_empty
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'ignores feature specs' do
|
36
|
+
inspect_source(cop, "describe 'my new feature', type: :feature do; end")
|
37
|
+
expect(cop.offenses).to be_empty
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'ignores feature specs - also with complex options' do
|
41
|
+
inspect_source(cop, ["describe 'my new feature',",
|
42
|
+
' :test, :type => :feature, :foo => :bar do;',
|
43
|
+
'end'])
|
44
|
+
expect(cop.offenses).to be_empty
|
45
|
+
end
|
46
|
+
|
30
47
|
it "doesn't blow up on single-line describes" do
|
31
48
|
inspect_source(cop, 'describe Some::Class')
|
32
49
|
expect(cop.offenses).to be_empty
|
@@ -17,4 +17,10 @@ describe RuboCop::Cop::RSpec::DescribeMethod do
|
|
17
17
|
"describe Some::Class, '#fdsa' do; end"])
|
18
18
|
expect(cop.offenses).to be_empty
|
19
19
|
end
|
20
|
+
|
21
|
+
it 'skips specs not having a string second argument' do
|
22
|
+
inspect_source(cop, 'describe Some::Class, :config do; end')
|
23
|
+
|
24
|
+
expect(cop.offenses).to be_empty
|
25
|
+
end
|
20
26
|
end
|
@@ -49,6 +49,16 @@ describe RuboCop::Cop::RSpec::FilePath, :config do
|
|
49
49
|
expect(cop.offenses).to be_empty
|
50
50
|
end
|
51
51
|
|
52
|
+
it 'ignores second argument if is not a string' do
|
53
|
+
inspect_source(cop,
|
54
|
+
'describe MyClass, :foo do; end',
|
55
|
+
'wrong_class_spec.rb')
|
56
|
+
expect(cop.offenses.size).to eq(1)
|
57
|
+
expect(cop.offenses.map(&:line).sort).to eq([1])
|
58
|
+
expect(cop.messages)
|
59
|
+
.to eq(['Spec path should end with `my_class*_spec.rb`'])
|
60
|
+
end
|
61
|
+
|
52
62
|
it 'checks class specs' do
|
53
63
|
inspect_source(cop,
|
54
64
|
'describe Some::Class do; 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.3.0
|
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: 2015-
|
12
|
+
date: 2015-04-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rubocop
|