rubocop-rspec 2.0.0.pre → 2.0.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 +12 -2
- data/README.md +4 -0
- data/config/default.yml +100 -18
- data/lib/rubocop-rspec.rb +7 -8
- data/lib/rubocop/cop/rspec/align_left_let_brace.rb +7 -3
- data/lib/rubocop/cop/rspec/align_right_let_brace.rb +7 -3
- data/lib/rubocop/cop/rspec/base.rb +6 -55
- data/lib/rubocop/cop/rspec/be.rb +1 -1
- data/lib/rubocop/cop/rspec/capybara/current_path_expectation.rb +2 -2
- data/lib/rubocop/cop/rspec/capybara/feature_methods.rb +3 -2
- data/lib/rubocop/cop/rspec/describe_class.rb +1 -1
- data/lib/rubocop/cop/rspec/describe_method.rb +1 -1
- data/lib/rubocop/cop/rspec/described_class.rb +1 -2
- data/lib/rubocop/cop/rspec/described_class_module_wrapping.rb +1 -2
- data/lib/rubocop/cop/rspec/dialect.rb +1 -1
- data/lib/rubocop/cop/rspec/empty_example_group.rb +6 -45
- data/lib/rubocop/cop/rspec/empty_hook.rb +1 -1
- data/lib/rubocop/cop/rspec/empty_line_after_example.rb +1 -1
- data/lib/rubocop/cop/rspec/empty_line_after_example_group.rb +1 -1
- data/lib/rubocop/cop/rspec/empty_line_after_final_let.rb +1 -1
- data/lib/rubocop/cop/rspec/empty_line_after_hook.rb +1 -1
- data/lib/rubocop/cop/rspec/empty_line_after_subject.rb +2 -2
- data/lib/rubocop/cop/rspec/expect_actual.rb +1 -1
- data/lib/rubocop/cop/rspec/expect_in_hook.rb +1 -1
- data/lib/rubocop/cop/rspec/file_path.rb +1 -1
- data/lib/rubocop/cop/rspec/focus.rb +13 -7
- data/lib/rubocop/cop/rspec/hook_argument.rb +2 -4
- data/lib/rubocop/cop/rspec/hooks_before_examples.rb +2 -2
- data/lib/rubocop/cop/rspec/implicit_expect.rb +1 -1
- data/lib/rubocop/cop/rspec/instance_variable.rb +1 -1
- data/lib/rubocop/cop/rspec/let_before_examples.rb +2 -2
- data/lib/rubocop/cop/rspec/let_setup.rb +7 -4
- data/lib/rubocop/cop/rspec/message_spies.rb +1 -1
- data/lib/rubocop/cop/rspec/mixin/empty_line_separation.rb +51 -0
- data/lib/rubocop/cop/rspec/mixin/final_end_location.rb +19 -0
- data/lib/rubocop/cop/rspec/mixin/top_level_group.rb +54 -0
- data/lib/rubocop/cop/rspec/mixin/variable.rb +20 -0
- data/lib/rubocop/cop/rspec/multiple_describes.rb +1 -1
- data/lib/rubocop/cop/rspec/multiple_expectations.rb +1 -1
- data/lib/rubocop/cop/rspec/multiple_memoized_helpers.rb +3 -1
- data/lib/rubocop/cop/rspec/named_subject.rb +8 -12
- data/lib/rubocop/cop/rspec/nested_groups.rb +1 -1
- data/lib/rubocop/cop/rspec/overwriting_setup.rb +2 -1
- data/lib/rubocop/cop/rspec/pending.rb +13 -5
- data/lib/rubocop/cop/rspec/predicate_matcher.rb +3 -3
- data/lib/rubocop/cop/rspec/repeated_include_example.rb +3 -2
- data/lib/rubocop/cop/rspec/shared_context.rb +16 -6
- data/lib/rubocop/cop/rspec/shared_examples.rb +3 -1
- data/lib/rubocop/cop/rspec/stubbed_mock.rb +1 -1
- data/lib/rubocop/cop/rspec/subject_stub.rb +2 -2
- data/lib/rubocop/cop/rspec/variable_definition.rb +1 -1
- data/lib/rubocop/cop/rspec/variable_name.rb +1 -1
- data/lib/rubocop/cop/rspec_cops.rb +0 -1
- data/lib/rubocop/rspec/align_let_brace.rb +1 -1
- data/lib/rubocop/rspec/concept.rb +2 -2
- data/lib/rubocop/rspec/config_formatter.rb +3 -3
- data/lib/rubocop/rspec/corrector/move_node.rb +1 -1
- data/lib/rubocop/rspec/example_group.rb +15 -5
- data/lib/rubocop/rspec/hook.rb +1 -1
- data/lib/rubocop/rspec/inject.rb +4 -2
- data/lib/rubocop/rspec/language.rb +143 -109
- data/lib/rubocop/rspec/language/node_pattern.rb +7 -24
- data/lib/rubocop/rspec/version.rb +1 -1
- metadata +22 -12
- data/lib/rubocop/cop/rspec/cop.rb +0 -10
- data/lib/rubocop/cop/rspec/invalid_predicate_matcher.rb +0 -41
- data/lib/rubocop/rspec.rb +0 -12
- data/lib/rubocop/rspec/empty_line_separation.rb +0 -48
- data/lib/rubocop/rspec/final_end_location.rb +0 -17
- data/lib/rubocop/rspec/top_level_describe.rb +0 -52
- data/lib/rubocop/rspec/top_level_group.rb +0 -57
- data/lib/rubocop/rspec/variable.rb +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 53f24b40715eb1f00efa9978b77383037e8c9d61d13c23b068928b05043430ca
|
4
|
+
data.tar.gz: 2d295003c7eefe76dfc7ca0f29711313b8b18b9c8579ce4464a47b47f412b54e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 15221270a01b2a273708d0e0fd3c35b52a9e40f87f672b2c4b7b547c55df0415394c7d762e4255406553ab26e0432d9a610d38a36d9fa92dddec47209428c856
|
7
|
+
data.tar.gz: 7bbcba195d894aa24d2985444421042314dd018f931763164502ee511c857d3010c074e8206f0af777e99b13ac668d1a32e03a8aefaa8dc38b3714c95ceb9555
|
data/CHANGELOG.md
CHANGED
@@ -1,11 +1,20 @@
|
|
1
|
-
#
|
1
|
+
# Changelog
|
2
2
|
|
3
3
|
## Master (Unreleased)
|
4
4
|
|
5
|
+
## 2.0.0 (2020-11-06)
|
6
|
+
|
7
|
+
* Remove deprecated class `::RuboCop::Cop::RSpec::Cop`. ([@bquorning][])
|
8
|
+
* Retire `RSpec/InvalidPredicateMatcher` cop. ([@pirj][])
|
9
|
+
* Remove the code responsible for filtering files to inspect. ([@pirj][])
|
10
|
+
* Make RSpec language elements configurable. ([@sl4vr][])
|
11
|
+
* Remove `CustomIncludeMethods` `RSpec/EmptyExampleGroup` option in favour of the new RSpec DSL configuration. ([@pirj][])
|
12
|
+
* Enabled pending cop (`RSpec/StubbedMock`). ([@pirj][])
|
13
|
+
|
5
14
|
## 2.0.0.pre (2020-10-22)
|
6
15
|
|
7
16
|
* Update RuboCop dependency to v1.0.0. ([@bquorning][])
|
8
|
-
*
|
17
|
+
* Change namespace of several cops (`Capybara/*` -> `RSpec/Capybara/*`, `FactoryBot/*` -> `RSpec/FactoryBot/*`, `Rails/*` -> `RSpec/Rails/*`). ([@pirj][], [@bquorning][])
|
9
18
|
|
10
19
|
## 1.44.1 (2020-10-20)
|
11
20
|
|
@@ -576,3 +585,4 @@ Compatibility release so users can upgrade RuboCop to 0.51.0. No new features.
|
|
576
585
|
[@koic]: https://github.com/koic
|
577
586
|
[@Rafix02]: https://github.com/Rafix02
|
578
587
|
[@PhilCoggins]: https://github.com/PhilCoggins
|
588
|
+
[@sl4vr]: https://github.com/sl4vr
|
data/README.md
CHANGED
@@ -23,6 +23,10 @@ or if you use bundler put this in your `Gemfile`
|
|
23
23
|
gem 'rubocop-rspec', require: false
|
24
24
|
```
|
25
25
|
|
26
|
+
### Upgrading to RuboCop RSpec v2.x
|
27
|
+
|
28
|
+
Read all the details in our [Upgrade to Version 2.x](https://docs.rubocop.org/rubocop-rspec/2.0/upgrade_to_version_2.html) document.
|
29
|
+
|
26
30
|
## Usage
|
27
31
|
|
28
32
|
You need to tell RuboCop to load the RSpec extension. There are three
|
data/config/default.yml
CHANGED
@@ -1,14 +1,85 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
2
|
+
RSpec:
|
3
|
+
Include:
|
4
|
+
- "**/*_spec.rb"
|
5
|
+
- "**/spec/**/*"
|
6
|
+
Language:
|
7
|
+
ExampleGroups:
|
8
|
+
Regular:
|
9
|
+
- describe
|
10
|
+
- context
|
11
|
+
- feature
|
12
|
+
- example_group
|
13
|
+
Skipped:
|
14
|
+
- xdescribe
|
15
|
+
- xcontext
|
16
|
+
- xfeature
|
17
|
+
Focused:
|
18
|
+
- fdescribe
|
19
|
+
- fcontext
|
20
|
+
- ffeature
|
21
|
+
Examples:
|
22
|
+
Regular:
|
23
|
+
- it
|
24
|
+
- specify
|
25
|
+
- example
|
26
|
+
- scenario
|
27
|
+
- its
|
28
|
+
Focused:
|
29
|
+
- fit
|
30
|
+
- fspecify
|
31
|
+
- fexample
|
32
|
+
- fscenario
|
33
|
+
- focus
|
34
|
+
Skipped:
|
35
|
+
- xit
|
36
|
+
- xspecify
|
37
|
+
- xexample
|
38
|
+
- xscenario
|
39
|
+
- skip
|
40
|
+
Pending:
|
41
|
+
- pending
|
42
|
+
Expectations:
|
43
|
+
- expect
|
44
|
+
- is_expected
|
45
|
+
- expect_any_instance_of
|
46
|
+
Helpers:
|
47
|
+
- let
|
48
|
+
- let!
|
49
|
+
Hooks:
|
50
|
+
- prepend_before
|
51
|
+
- before
|
52
|
+
- append_before
|
53
|
+
- around
|
54
|
+
- prepend_after
|
55
|
+
- after
|
56
|
+
- append_after
|
57
|
+
HookScopes:
|
58
|
+
- each
|
59
|
+
- example
|
60
|
+
- context
|
61
|
+
- all
|
62
|
+
- suite
|
63
|
+
Includes:
|
64
|
+
Examples:
|
65
|
+
- it_behaves_like
|
66
|
+
- it_should_behave_like
|
67
|
+
- include_examples
|
68
|
+
Context:
|
69
|
+
- include_context
|
70
|
+
Runners:
|
71
|
+
- to
|
72
|
+
- to_not
|
73
|
+
- not_to
|
74
|
+
SharedGroups:
|
75
|
+
Examples:
|
76
|
+
- shared_examples
|
77
|
+
- shared_examples_for
|
78
|
+
Context:
|
79
|
+
- shared_context
|
80
|
+
Subjects:
|
81
|
+
- subject
|
82
|
+
- subject!
|
12
83
|
|
13
84
|
RSpec/AlignLeftLetBrace:
|
14
85
|
Description: Checks that left braces for adjacent single line lets are aligned.
|
@@ -136,8 +207,8 @@ RSpec/Dialect:
|
|
136
207
|
RSpec/EmptyExampleGroup:
|
137
208
|
Description: Checks if an example group does not include any tests.
|
138
209
|
Enabled: true
|
139
|
-
CustomIncludeMethods: []
|
140
210
|
VersionAdded: '1.7'
|
211
|
+
VersionChanged: '2.0'
|
141
212
|
StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/EmptyExampleGroup
|
142
213
|
|
143
214
|
RSpec/EmptyHook:
|
@@ -241,6 +312,9 @@ RSpec/ExpectOutput:
|
|
241
312
|
RSpec/FilePath:
|
242
313
|
Description: Checks that spec file paths are consistent and well-formed.
|
243
314
|
Enabled: true
|
315
|
+
Include:
|
316
|
+
- "**/*_spec*rb*"
|
317
|
+
- "**/spec/**/*"
|
244
318
|
CustomTransform:
|
245
319
|
RuboCop: rubocop
|
246
320
|
RSpec: rspec
|
@@ -315,12 +389,6 @@ RSpec/InstanceVariable:
|
|
315
389
|
VersionChanged: '1.7'
|
316
390
|
StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/InstanceVariable
|
317
391
|
|
318
|
-
RSpec/InvalidPredicateMatcher:
|
319
|
-
Description: Checks invalid usage for predicate matcher.
|
320
|
-
Enabled: true
|
321
|
-
VersionAdded: '1.16'
|
322
|
-
StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/InvalidPredicateMatcher
|
323
|
-
|
324
392
|
RSpec/ItBehavesLike:
|
325
393
|
Description: Checks that only one `it_behaves_like` style is used.
|
326
394
|
Enabled: true
|
@@ -561,7 +629,7 @@ RSpec/SingleArgumentMessageChain:
|
|
561
629
|
|
562
630
|
RSpec/StubbedMock:
|
563
631
|
Description: Checks that message expectations do not have a configured response.
|
564
|
-
Enabled:
|
632
|
+
Enabled: true
|
565
633
|
VersionAdded: '1.44'
|
566
634
|
StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/StubbedMock
|
567
635
|
|
@@ -645,6 +713,10 @@ RSpec/Capybara/VisibilityMatcher:
|
|
645
713
|
RSpec/FactoryBot/AttributeDefinedStatically:
|
646
714
|
Description: Always declare attribute values as blocks.
|
647
715
|
Enabled: true
|
716
|
+
Include:
|
717
|
+
- spec/factories.rb
|
718
|
+
- spec/factories/**/*.rb
|
719
|
+
- features/support/factories/**/*.rb
|
648
720
|
VersionAdded: '1.28'
|
649
721
|
VersionChanged: '2.0'
|
650
722
|
StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/FactoryBot/AttributeDefinedStatically
|
@@ -652,6 +724,12 @@ RSpec/FactoryBot/AttributeDefinedStatically:
|
|
652
724
|
RSpec/FactoryBot/CreateList:
|
653
725
|
Description: Checks for create_list usage.
|
654
726
|
Enabled: true
|
727
|
+
Include:
|
728
|
+
- "**/*_spec.rb"
|
729
|
+
- "**/spec/**/*"
|
730
|
+
- spec/factories.rb
|
731
|
+
- spec/factories/**/*.rb
|
732
|
+
- features/support/factories/**/*.rb
|
655
733
|
EnforcedStyle: create_list
|
656
734
|
SupportedStyles:
|
657
735
|
- create_list
|
@@ -663,6 +741,10 @@ RSpec/FactoryBot/CreateList:
|
|
663
741
|
RSpec/FactoryBot/FactoryClassName:
|
664
742
|
Description: Use string value when setting the class attribute explicitly.
|
665
743
|
Enabled: true
|
744
|
+
Include:
|
745
|
+
- spec/factories.rb
|
746
|
+
- spec/factories/**/*.rb
|
747
|
+
- features/support/factories/**/*.rb
|
666
748
|
VersionAdded: '1.37'
|
667
749
|
VersionChanged: '2.0'
|
668
750
|
StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/FactoryBot/FactoryClassName
|
data/lib/rubocop-rspec.rb
CHANGED
@@ -5,26 +5,25 @@ require 'yaml'
|
|
5
5
|
|
6
6
|
require 'rubocop'
|
7
7
|
|
8
|
-
require_relative 'rubocop/rspec'
|
9
8
|
require_relative 'rubocop/rspec/version'
|
10
9
|
require_relative 'rubocop/rspec/inject'
|
11
10
|
require_relative 'rubocop/rspec/node'
|
12
|
-
require_relative 'rubocop/rspec/top_level_describe'
|
13
11
|
require_relative 'rubocop/rspec/wording'
|
14
|
-
require_relative 'rubocop/rspec/language'
|
15
12
|
require_relative 'rubocop/rspec/language/node_pattern'
|
16
|
-
require_relative 'rubocop/rspec/
|
13
|
+
require_relative 'rubocop/rspec/language'
|
14
|
+
|
15
|
+
require_relative 'rubocop/cop/rspec/mixin/top_level_group'
|
16
|
+
require_relative 'rubocop/cop/rspec/mixin/variable'
|
17
|
+
require_relative 'rubocop/cop/rspec/mixin/final_end_location'
|
18
|
+
require_relative 'rubocop/cop/rspec/mixin/empty_line_separation'
|
19
|
+
|
17
20
|
require_relative 'rubocop/rspec/concept'
|
18
21
|
require_relative 'rubocop/rspec/example_group'
|
19
22
|
require_relative 'rubocop/rspec/example'
|
20
23
|
require_relative 'rubocop/rspec/hook'
|
21
|
-
require_relative 'rubocop/rspec/variable'
|
22
24
|
require_relative 'rubocop/cop/rspec/base'
|
23
|
-
require_relative 'rubocop/cop/rspec/cop'
|
24
25
|
require_relative 'rubocop/rspec/align_let_brace'
|
25
26
|
require_relative 'rubocop/rspec/factory_bot'
|
26
|
-
require_relative 'rubocop/rspec/final_end_location'
|
27
|
-
require_relative 'rubocop/rspec/empty_line_separation'
|
28
27
|
require_relative 'rubocop/rspec/corrector/move_node'
|
29
28
|
|
30
29
|
RuboCop::RSpec::Inject.defaults!
|
@@ -27,11 +27,9 @@ module RuboCop
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def on_new_investigation
|
30
|
+
super
|
30
31
|
return if processed_source.blank?
|
31
32
|
|
32
|
-
token_aligner =
|
33
|
-
RuboCop::RSpec::AlignLetBrace.new(processed_source.ast, :begin)
|
34
|
-
|
35
33
|
token_aligner.offending_tokens.each do |let|
|
36
34
|
add_offense(let.loc.begin) do |corrector|
|
37
35
|
corrector.insert_before(
|
@@ -40,6 +38,12 @@ module RuboCop
|
|
40
38
|
end
|
41
39
|
end
|
42
40
|
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def token_aligner
|
45
|
+
RuboCop::RSpec::AlignLetBrace.new(processed_source.ast, :begin)
|
46
|
+
end
|
43
47
|
end
|
44
48
|
end
|
45
49
|
end
|
@@ -27,11 +27,9 @@ module RuboCop
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def on_new_investigation
|
30
|
+
super
|
30
31
|
return if processed_source.blank?
|
31
32
|
|
32
|
-
token_aligner =
|
33
|
-
RuboCop::RSpec::AlignLetBrace.new(processed_source.ast, :end)
|
34
|
-
|
35
33
|
token_aligner.offending_tokens.each do |let|
|
36
34
|
add_offense(let.loc.end) do |corrector|
|
37
35
|
corrector.insert_before(
|
@@ -40,6 +38,12 @@ module RuboCop
|
|
40
38
|
end
|
41
39
|
end
|
42
40
|
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def token_aligner
|
45
|
+
RuboCop::RSpec::AlignLetBrace.new(processed_source.ast, :end)
|
46
|
+
end
|
43
47
|
end
|
44
48
|
end
|
45
49
|
end
|
@@ -4,30 +4,9 @@ module RuboCop
|
|
4
4
|
module Cop
|
5
5
|
module RSpec
|
6
6
|
# @abstract parent class to RSpec cops
|
7
|
-
#
|
8
|
-
# The criteria for whether rubocop-rspec analyzes a certain ruby file
|
9
|
-
# is configured via `AllCops/RSpec`. For example, if you want to
|
10
|
-
# customize your project to scan all files within a `test/` directory
|
11
|
-
# then you could add this to your configuration:
|
12
|
-
#
|
13
|
-
# @example configuring analyzed paths
|
14
|
-
# # .rubocop.yml
|
15
|
-
# # AllCops:
|
16
|
-
# # RSpec:
|
17
|
-
# # Patterns:
|
18
|
-
# # - '_test.rb$'
|
19
|
-
# # - '(?:^|/)test/'
|
20
7
|
class Base < ::RuboCop::Cop::Base
|
21
8
|
include RuboCop::RSpec::Language
|
22
|
-
|
23
|
-
|
24
|
-
DEFAULT_CONFIGURATION =
|
25
|
-
RuboCop::RSpec::CONFIG.fetch('AllCops').fetch('RSpec')
|
26
|
-
|
27
|
-
DEFAULT_PATTERN_RE = Regexp.union(
|
28
|
-
DEFAULT_CONFIGURATION.fetch('Patterns')
|
29
|
-
.map(&Regexp.public_method(:new))
|
30
|
-
)
|
9
|
+
extend RuboCop::RSpec::Language::NodePattern
|
31
10
|
|
32
11
|
exclude_from_registry
|
33
12
|
|
@@ -36,39 +15,11 @@ module RuboCop
|
|
36
15
|
RuboCop::Cop::Base.inherited(subclass)
|
37
16
|
end
|
38
17
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
def relevant_rubocop_rspec_file?(file)
|
46
|
-
rspec_pattern.match?(file)
|
47
|
-
end
|
48
|
-
|
49
|
-
def rspec_pattern
|
50
|
-
if rspec_pattern_config?
|
51
|
-
Regexp.union(rspec_pattern_config.map(&Regexp.public_method(:new)))
|
52
|
-
else
|
53
|
-
DEFAULT_PATTERN_RE
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
def all_cops_config
|
58
|
-
config
|
59
|
-
.for_all_cops
|
60
|
-
end
|
61
|
-
|
62
|
-
def rspec_pattern_config?
|
63
|
-
return unless all_cops_config.key?('RSpec')
|
64
|
-
|
65
|
-
all_cops_config.fetch('RSpec').key?('Patterns')
|
66
|
-
end
|
67
|
-
|
68
|
-
def rspec_pattern_config
|
69
|
-
all_cops_config
|
70
|
-
.fetch('RSpec', DEFAULT_CONFIGURATION)
|
71
|
-
.fetch('Patterns')
|
18
|
+
# Set the config for dynamic DSL configuration-aware helpers
|
19
|
+
# that have no other means of accessing the configuration.
|
20
|
+
def on_new_investigation
|
21
|
+
super
|
22
|
+
RuboCop::RSpec::Language.config = config['RSpec']['Language']
|
72
23
|
end
|
73
24
|
end
|
74
25
|
end
|
data/lib/rubocop/cop/rspec/be.rb
CHANGED
@@ -37,13 +37,13 @@ module RuboCop
|
|
37
37
|
# Supported matchers: eq(...) / match(/regexp/) / match('regexp')
|
38
38
|
def_node_matcher :as_is_matcher, <<-PATTERN
|
39
39
|
(send
|
40
|
-
#expectation_set_on_current_path $#
|
40
|
+
#expectation_set_on_current_path $#Runners.all
|
41
41
|
${(send nil? :eq ...) (send nil? :match (regexp ...))})
|
42
42
|
PATTERN
|
43
43
|
|
44
44
|
def_node_matcher :regexp_str_matcher, <<-PATTERN
|
45
45
|
(send
|
46
|
-
#expectation_set_on_current_path $#
|
46
|
+
#expectation_set_on_current_path $#Runners.all
|
47
47
|
$(send nil? :match (str $_)))
|
48
48
|
PATTERN
|
49
49
|
|
@@ -55,8 +55,9 @@ module RuboCop
|
|
55
55
|
feature: :describe
|
56
56
|
}.freeze
|
57
57
|
|
58
|
-
def_node_matcher :capybara_speak,
|
59
|
-
|
58
|
+
def_node_matcher :capybara_speak, <<-PATTERN
|
59
|
+
{#{MAP.keys.map(&:inspect).join(' ')}}
|
60
|
+
PATTERN
|
60
61
|
|
61
62
|
def_node_matcher :spec?, <<-PATTERN
|
62
63
|
(block
|
@@ -35,7 +35,7 @@ module RuboCop
|
|
35
35
|
# describe "A feature example", type: :feature do
|
36
36
|
# end
|
37
37
|
class DescribeClass < Base
|
38
|
-
include
|
38
|
+
include TopLevelGroup
|
39
39
|
|
40
40
|
MSG = 'The first argument to describe should be '\
|
41
41
|
'the class or module being tested.'
|
@@ -17,7 +17,7 @@ module RuboCop
|
|
17
17
|
# describe MyClass, '.my_class_method' do
|
18
18
|
# end
|
19
19
|
class DescribeMethod < Base
|
20
|
-
include
|
20
|
+
include TopLevelGroup
|
21
21
|
|
22
22
|
MSG = 'The second argument to describe should be the method '\
|
23
23
|
"being tested. '#instance' or '.class'."
|
@@ -65,8 +65,7 @@ module RuboCop
|
|
65
65
|
(block (send (const nil? {:Class :Module :Struct}) :new ...) ...)
|
66
66
|
PATTERN
|
67
67
|
|
68
|
-
def_node_matcher :rspec_block?,
|
69
|
-
RuboCop::RSpec::Language::ALL.block_pattern
|
68
|
+
def_node_matcher :rspec_block?, block_pattern('#ALL.all')
|
70
69
|
|
71
70
|
def_node_matcher :scope_changing_syntax?, '{def class module}'
|
72
71
|
|