rubocop-rspec 2.5.0 → 2.6.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 +10 -0
- data/README.md +2 -4
- data/config/default.yml +44 -2
- data/lib/rubocop/cop/rspec/example_wording.rb +3 -0
- data/lib/rubocop/cop/rspec/excessive_docstring_spacing.rb +5 -1
- data/lib/rubocop/cop/rspec/variable_definition.rb +19 -2
- data/lib/rubocop/rspec/align_let_brace.rb +2 -1
- data/lib/rubocop/rspec/config_formatter.rb +3 -0
- data/lib/rubocop/rspec/version.rb +1 -1
- metadata +6 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec6f02aa20957826bdff135547211062ac19bdac9b260d2a008c45973944ff16
|
4
|
+
data.tar.gz: 57454e8f60b40062ad5da0ef9e4ce83c8539aea78d13d8412af24f43c01c2e1d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51333677ad7c458afd2446b21c6e900c5f4ba597d2659cc2e389e5c9e223fe1885e54c8d427a8213519bd9176c0bfbc146910d6cd3c5dea7c9a69450ac34ce97
|
7
|
+
data.tar.gz: 5f6cffcb89273ddca1615907f8de6e619697c63c1255b630320b3852a9266aef4d260d295a6ee57ea1c91e862ad584750fac2784a2a536aea37887f829a14bd5
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,15 @@
|
|
2
2
|
|
3
3
|
## Master (Unreleased)
|
4
4
|
|
5
|
+
## 2.6.0 (2021-11-08)
|
6
|
+
|
7
|
+
* Fix merging RSpec DSL configuration from third-party gems. ([@pirj][])
|
8
|
+
* Fix `RSpec/ExcessiveDocstringSpacing` false positive for multi-line indented strings. ([@G-Rath][])
|
9
|
+
* Fix `Include` configuration for sub-departments. ([@pirj][])
|
10
|
+
* Ignore heredocs in `RSpec/ExcessiveDocstringSpacing`. ([@G-Rath][])
|
11
|
+
* Stop `RSpec/ExampleWording` from trying to correct heredocs. ([@G-Rath][])
|
12
|
+
* Add autocorrect support for `RSpec/VariableDefinition`. ([@r7kamura][])
|
13
|
+
|
5
14
|
## 2.5.0 (2021-09-21)
|
6
15
|
|
7
16
|
* Declare autocorrect as unsafe for `ExpectChange`. ([@francois-ferrandis][])
|
@@ -641,3 +650,4 @@ Compatibility release so users can upgrade RuboCop to 0.51.0. No new features.
|
|
641
650
|
[@G-Rath]: https://github.com/G-Rath
|
642
651
|
[@dswij]: https://github.com/dswij
|
643
652
|
[@francois-ferrandis]: https://github.com/francois-ferrandis
|
653
|
+
[@r7kamura]: https://github.com/r7kamura
|
data/README.md
CHANGED
@@ -2,9 +2,7 @@
|
|
2
2
|
|
3
3
|
[](https://gitter.im/rubocop-rspec/Lobby)
|
4
4
|
[](https://rubygems.org/gems/rubocop-rspec)
|
5
|
-
|
6
|
-
[](https://codeclimate.com/github/rubocop-hq/rubocop-rspec/test_coverage)
|
7
|
-
[](https://codeclimate.com/github/rubocop-hq/rubocop-rspec/maintainability)
|
5
|
+

|
8
6
|
|
9
7
|
RSpec-specific analysis for your projects, as an extension to
|
10
8
|
[RuboCop](https://github.com/rubocop/rubocop).
|
@@ -67,7 +65,7 @@ end
|
|
67
65
|
|
68
66
|
### Code Climate
|
69
67
|
|
70
|
-
rubocop-rspec is available on Code Climate as part of the rubocop engine. [Learn More](https://codeclimate.com/changelog/55a433bbe30ba00852000fac).
|
68
|
+
rubocop-rspec is available on Code Climate as part of the rubocop engine. [Learn More](https://marketing.codeclimate.com/changelog/55a433bbe30ba00852000fac/).
|
71
69
|
|
72
70
|
## Documentation
|
73
71
|
|
data/config/default.yml
CHANGED
@@ -1,11 +1,24 @@
|
|
1
1
|
---
|
2
2
|
RSpec:
|
3
3
|
Enabled: true
|
4
|
-
Include:
|
4
|
+
Include: &1
|
5
5
|
- "**/*_spec.rb"
|
6
6
|
- "**/spec/**/*"
|
7
|
-
Language:
|
7
|
+
Language: &2
|
8
|
+
inherit_mode:
|
9
|
+
merge:
|
10
|
+
- Expectations
|
11
|
+
- Helpers
|
12
|
+
- Hooks
|
13
|
+
- HookScopes
|
14
|
+
- Runners
|
15
|
+
- Subjects
|
8
16
|
ExampleGroups:
|
17
|
+
inherit_mode:
|
18
|
+
merge:
|
19
|
+
- Regular
|
20
|
+
- Skipped
|
21
|
+
- Focused
|
9
22
|
Regular:
|
10
23
|
- describe
|
11
24
|
- context
|
@@ -20,6 +33,12 @@ RSpec:
|
|
20
33
|
- fcontext
|
21
34
|
- ffeature
|
22
35
|
Examples:
|
36
|
+
inherit_mode:
|
37
|
+
merge:
|
38
|
+
- Regular
|
39
|
+
- Skipped
|
40
|
+
- Focused
|
41
|
+
- Pending
|
23
42
|
Regular:
|
24
43
|
- it
|
25
44
|
- specify
|
@@ -62,6 +81,10 @@ RSpec:
|
|
62
81
|
- all
|
63
82
|
- suite
|
64
83
|
Includes:
|
84
|
+
inherit_mode:
|
85
|
+
merge:
|
86
|
+
- Examples
|
87
|
+
- Context
|
65
88
|
Examples:
|
66
89
|
- it_behaves_like
|
67
90
|
- it_should_behave_like
|
@@ -73,6 +96,10 @@ RSpec:
|
|
73
96
|
- to_not
|
74
97
|
- not_to
|
75
98
|
SharedGroups:
|
99
|
+
inherit_mode:
|
100
|
+
merge:
|
101
|
+
- Examples
|
102
|
+
- Context
|
76
103
|
Examples:
|
77
104
|
- shared_examples
|
78
105
|
- shared_examples_for
|
@@ -718,6 +745,11 @@ RSpec/Yield:
|
|
718
745
|
VersionAdded: '1.32'
|
719
746
|
StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Yield
|
720
747
|
|
748
|
+
RSpec/Capybara:
|
749
|
+
Enabled: true
|
750
|
+
Include: *1
|
751
|
+
Language: *2
|
752
|
+
|
721
753
|
RSpec/Capybara/CurrentPathExpectation:
|
722
754
|
Description: Checks that no expectations are set on Capybara's `current_path`.
|
723
755
|
Enabled: true
|
@@ -740,6 +772,11 @@ RSpec/Capybara/VisibilityMatcher:
|
|
740
772
|
VersionChanged: '2.0'
|
741
773
|
StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Capybara/VisibilityMatcher
|
742
774
|
|
775
|
+
RSpec/FactoryBot:
|
776
|
+
Enabled: true
|
777
|
+
Include: *1
|
778
|
+
Language: *2
|
779
|
+
|
743
780
|
RSpec/FactoryBot/AttributeDefinedStatically:
|
744
781
|
Description: Always declare attribute values as blocks.
|
745
782
|
Enabled: true
|
@@ -779,6 +816,11 @@ RSpec/FactoryBot/FactoryClassName:
|
|
779
816
|
VersionChanged: '2.0'
|
780
817
|
StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/FactoryBot/FactoryClassName
|
781
818
|
|
819
|
+
RSpec/Rails:
|
820
|
+
Enabled: true
|
821
|
+
Include: *1
|
822
|
+
Language: *2
|
823
|
+
|
782
824
|
RSpec/Rails/AvoidSetupHook:
|
783
825
|
Description: Checks that tests use RSpec `before` hook over Rails `setup` method.
|
784
826
|
Enabled: pending
|
@@ -37,6 +37,8 @@ module RuboCop
|
|
37
37
|
|
38
38
|
def on_send(node)
|
39
39
|
example_description(node) do |description_node, message|
|
40
|
+
return if description_node.heredoc?
|
41
|
+
|
40
42
|
text = text(message)
|
41
43
|
|
42
44
|
return unless excessive_whitespace?(text)
|
@@ -49,7 +51,9 @@ module RuboCop
|
|
49
51
|
|
50
52
|
# @param text [String]
|
51
53
|
def excessive_whitespace?(text)
|
52
|
-
|
54
|
+
return true if text.start_with?(' ') || text.end_with?(' ')
|
55
|
+
|
56
|
+
text.match?(/[^\n ] +[^ ]/)
|
53
57
|
end
|
54
58
|
|
55
59
|
# @param text [String]
|
@@ -23,6 +23,7 @@ module RuboCop
|
|
23
23
|
# subject('user') { create_user }
|
24
24
|
# let('user_name') { 'Adam' }
|
25
25
|
class VariableDefinition < Base
|
26
|
+
extend AutoCorrector
|
26
27
|
include ConfigurableEnforcedStyle
|
27
28
|
include Variable
|
28
29
|
|
@@ -30,14 +31,30 @@ module RuboCop
|
|
30
31
|
|
31
32
|
def on_send(node)
|
32
33
|
variable_definition?(node) do |variable|
|
33
|
-
|
34
|
-
|
34
|
+
next unless style_violation?(variable)
|
35
|
+
|
36
|
+
add_offense(
|
37
|
+
variable,
|
38
|
+
message: format(MSG, style: style)
|
39
|
+
) do |corrector|
|
40
|
+
corrector.replace(variable, correct_variable(variable))
|
35
41
|
end
|
36
42
|
end
|
37
43
|
end
|
38
44
|
|
39
45
|
private
|
40
46
|
|
47
|
+
def correct_variable(variable)
|
48
|
+
case variable.type
|
49
|
+
when :dsym
|
50
|
+
variable.source[1..-1]
|
51
|
+
when :sym
|
52
|
+
variable.value.to_s.inspect
|
53
|
+
else
|
54
|
+
variable.value.to_sym.inspect
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
41
58
|
def style_violation?(variable)
|
42
59
|
style == :symbols && string?(variable) ||
|
43
60
|
style == :strings && symbol?(variable)
|
@@ -5,6 +5,7 @@ module RuboCop
|
|
5
5
|
# Shared behavior for aligning braces for single line lets
|
6
6
|
class AlignLetBrace
|
7
7
|
include RuboCop::RSpec::Language
|
8
|
+
include RuboCop::Cop::Util
|
8
9
|
|
9
10
|
def initialize(root, token)
|
10
11
|
@root = root
|
@@ -34,7 +35,7 @@ module RuboCop
|
|
34
35
|
def let_group_for(let)
|
35
36
|
adjacent_let_chunks.detect do |chunk|
|
36
37
|
chunk.any? do |member|
|
37
|
-
member == let && member
|
38
|
+
member == let && same_line?(member, let)
|
38
39
|
end
|
39
40
|
end
|
40
41
|
end
|
@@ -7,6 +7,7 @@ module RuboCop
|
|
7
7
|
# Builds a YAML config file from two config hashes
|
8
8
|
class ConfigFormatter
|
9
9
|
EXTENSION_ROOT_DEPARTMENT = %r{^(RSpec/)}.freeze
|
10
|
+
SUBDEPARTMENTS = %(RSpec/Capybara RSpec/FactoryBot RSpec/Rails)
|
10
11
|
STYLE_GUIDE_BASE_URL = 'https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/'
|
11
12
|
|
12
13
|
def initialize(config, descriptions)
|
@@ -24,6 +25,8 @@ module RuboCop
|
|
24
25
|
|
25
26
|
def unified_config
|
26
27
|
cops.each_with_object(config.dup) do |cop, unified|
|
28
|
+
next if SUBDEPARTMENTS.include?(cop)
|
29
|
+
|
27
30
|
unified[cop] = config.fetch(cop)
|
28
31
|
.merge(descriptions.fetch(cop))
|
29
32
|
.merge('StyleGuide' => STYLE_GUIDE_BASE_URL + cop.sub('RSpec/', ''))
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubocop-rspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Backus
|
8
8
|
- Ian MacLeod
|
9
9
|
- Nils Gemeinhardt
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2021-
|
13
|
+
date: 2021-11-08 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rubocop
|
@@ -96,20 +96,6 @@ dependencies:
|
|
96
96
|
- - "~>"
|
97
97
|
- !ruby/object:Gem::Version
|
98
98
|
version: '0.6'
|
99
|
-
- !ruby/object:Gem::Dependency
|
100
|
-
name: simplecov
|
101
|
-
requirement: !ruby/object:Gem::Requirement
|
102
|
-
requirements:
|
103
|
-
- - "<"
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
version: '0.18'
|
106
|
-
type: :development
|
107
|
-
prerelease: false
|
108
|
-
version_requirements: !ruby/object:Gem::Requirement
|
109
|
-
requirements:
|
110
|
-
- - "<"
|
111
|
-
- !ruby/object:Gem::Version
|
112
|
-
version: '0.18'
|
113
99
|
- !ruby/object:Gem::Dependency
|
114
100
|
name: yard
|
115
101
|
requirement: !ruby/object:Gem::Requirement
|
@@ -261,7 +247,7 @@ licenses:
|
|
261
247
|
metadata:
|
262
248
|
changelog_uri: https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md
|
263
249
|
documentation_uri: https://docs.rubocop.org/rubocop-rspec/
|
264
|
-
post_install_message:
|
250
|
+
post_install_message:
|
265
251
|
rdoc_options: []
|
266
252
|
require_paths:
|
267
253
|
- lib
|
@@ -276,8 +262,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
276
262
|
- !ruby/object:Gem::Version
|
277
263
|
version: '0'
|
278
264
|
requirements: []
|
279
|
-
rubygems_version: 3.
|
280
|
-
signing_key:
|
265
|
+
rubygems_version: 3.2.29
|
266
|
+
signing_key:
|
281
267
|
specification_version: 4
|
282
268
|
summary: Code style checking for RSpec files
|
283
269
|
test_files: []
|