rubocop-rspec 2.21.0 → 3.0.1
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 +147 -9
- data/README.md +2 -2
- data/config/default.yml +159 -244
- data/config/obsoletion.yml +24 -0
- data/lib/rubocop/cop/rspec/around_block.rb +3 -3
- data/lib/rubocop/cop/rspec/base.rb +0 -1
- data/lib/rubocop/cop/rspec/be.rb +1 -1
- data/lib/rubocop/cop/rspec/be_empty.rb +1 -0
- data/lib/rubocop/cop/rspec/be_eq.rb +1 -1
- data/lib/rubocop/cop/rspec/be_eql.rb +1 -1
- data/lib/rubocop/cop/rspec/be_nil.rb +2 -2
- data/lib/rubocop/cop/rspec/before_after_all.rb +7 -13
- data/lib/rubocop/cop/rspec/change_by_zero.rb +30 -4
- data/lib/rubocop/cop/rspec/context_method.rb +2 -2
- data/lib/rubocop/cop/rspec/context_wording.rb +1 -1
- data/lib/rubocop/cop/rspec/describe_symbol.rb +1 -1
- data/lib/rubocop/cop/rspec/described_class.rb +33 -11
- data/lib/rubocop/cop/rspec/dialect.rb +13 -0
- data/lib/rubocop/cop/rspec/duplicated_metadata.rb +1 -1
- data/lib/rubocop/cop/rspec/empty_example_group.rb +4 -1
- data/lib/rubocop/cop/rspec/empty_hook.rb +1 -1
- data/lib/rubocop/cop/rspec/empty_line_after_example.rb +2 -2
- data/lib/rubocop/cop/rspec/empty_metadata.rb +46 -0
- data/lib/rubocop/cop/rspec/empty_output.rb +47 -0
- data/lib/rubocop/cop/rspec/eq.rb +47 -0
- data/lib/rubocop/cop/rspec/example_length.rb +11 -5
- data/lib/rubocop/cop/rspec/example_without_description.rb +11 -2
- data/lib/rubocop/cop/rspec/example_wording.rb +11 -2
- data/lib/rubocop/cop/rspec/excessive_docstring_spacing.rb +14 -5
- data/lib/rubocop/cop/rspec/expect_actual.rb +17 -14
- data/lib/rubocop/cop/rspec/expect_change.rb +2 -2
- data/lib/rubocop/cop/rspec/expect_in_hook.rb +1 -1
- data/lib/rubocop/cop/rspec/expect_in_let.rb +42 -0
- data/lib/rubocop/cop/rspec/expect_output.rb +1 -4
- data/lib/rubocop/cop/rspec/focus.rb +17 -2
- data/lib/rubocop/cop/rspec/hook_argument.rb +2 -2
- data/lib/rubocop/cop/rspec/hooks_before_examples.rb +1 -1
- data/lib/rubocop/cop/rspec/implicit_block_expectation.rb +2 -2
- data/lib/rubocop/cop/rspec/implicit_expect.rb +1 -1
- data/lib/rubocop/cop/rspec/implicit_subject.rb +2 -2
- data/lib/rubocop/cop/rspec/indexed_let.rb +32 -1
- data/lib/rubocop/cop/rspec/instance_spy.rb +2 -2
- data/lib/rubocop/cop/rspec/instance_variable.rb +4 -4
- data/lib/rubocop/cop/rspec/is_expected_specify.rb +45 -0
- data/lib/rubocop/cop/rspec/iterated_expectation.rb +3 -3
- data/lib/rubocop/cop/rspec/leaky_constant_declaration.rb +2 -2
- data/lib/rubocop/cop/rspec/let_before_examples.rb +5 -1
- data/lib/rubocop/cop/rspec/let_setup.rb +1 -1
- data/lib/rubocop/cop/rspec/message_expectation.rb +1 -2
- data/lib/rubocop/cop/rspec/message_spies.rb +0 -2
- data/lib/rubocop/cop/rspec/metadata_style.rb +202 -0
- data/lib/rubocop/cop/rspec/missing_expectation_target_method.rb +54 -0
- data/lib/rubocop/cop/rspec/mixin/file_help.rb +14 -0
- data/lib/rubocop/cop/rspec/mixin/metadata.rb +21 -7
- data/lib/rubocop/cop/rspec/mixin/skip_or_pending.rb +2 -2
- data/lib/rubocop/cop/rspec/multiple_describes.rb +1 -1
- data/lib/rubocop/cop/rspec/multiple_expectations.rb +16 -11
- data/lib/rubocop/cop/rspec/multiple_memoized_helpers.rb +2 -4
- data/lib/rubocop/cop/rspec/named_subject.rb +6 -3
- data/lib/rubocop/cop/rspec/pending.rb +12 -2
- data/lib/rubocop/cop/rspec/pending_without_reason.rb +1 -1
- data/lib/rubocop/cop/rspec/predicate_matcher.rb +10 -10
- data/lib/rubocop/cop/rspec/receive_counts.rb +1 -1
- data/lib/rubocop/cop/rspec/receive_messages.rb +161 -0
- data/lib/rubocop/cop/rspec/redundant_predicate_matcher.rb +67 -0
- data/lib/rubocop/cop/rspec/remove_const.rb +39 -0
- data/lib/rubocop/cop/rspec/repeated_example.rb +6 -6
- data/lib/rubocop/cop/rspec/repeated_example_group_body.rb +1 -1
- data/lib/rubocop/cop/rspec/repeated_example_group_description.rb +2 -2
- data/lib/rubocop/cop/rspec/repeated_include_example.rb +1 -1
- data/lib/rubocop/cop/rspec/repeated_subject_call.rb +125 -0
- data/lib/rubocop/cop/rspec/return_from_stub.rb +1 -1
- data/lib/rubocop/cop/rspec/scattered_setup.rb +1 -1
- data/lib/rubocop/cop/rspec/shared_context.rb +1 -1
- data/lib/rubocop/cop/rspec/shared_examples.rb +66 -20
- data/lib/rubocop/cop/rspec/single_argument_message_chain.rb +2 -3
- data/lib/rubocop/cop/rspec/sort_metadata.rb +3 -2
- data/lib/rubocop/cop/rspec/spec_file_path_format.rb +133 -0
- data/lib/rubocop/cop/rspec/spec_file_path_suffix.rb +40 -0
- data/lib/rubocop/cop/rspec/stubbed_mock.rb +4 -2
- data/lib/rubocop/cop/rspec/subject_stub.rb +6 -6
- data/lib/rubocop/cop/rspec/undescriptive_literals_description.rb +69 -0
- data/lib/rubocop/cop/rspec/unspecified_exception.rb +2 -2
- data/lib/rubocop/cop/rspec/variable_definition.rb +4 -4
- data/lib/rubocop/cop/rspec/verified_double_reference.rb +6 -6
- data/lib/rubocop/cop/rspec/verified_doubles.rb +2 -2
- data/lib/rubocop/cop/rspec/void_expect.rb +4 -3
- data/lib/rubocop/cop/rspec_cops.rb +14 -28
- data/lib/rubocop/rspec/concept.rb +0 -1
- data/lib/rubocop/rspec/config_formatter.rb +1 -11
- data/lib/rubocop/rspec/cop/generator.rb +25 -0
- data/lib/rubocop/rspec/language.rb +8 -9
- data/lib/rubocop/rspec/node.rb +1 -1
- data/lib/rubocop/rspec/shared_contexts/default_rspec_language_config_context.rb +1 -1
- data/lib/rubocop/rspec/version.rb +1 -1
- data/lib/rubocop/rspec/wording.rb +8 -0
- data/lib/rubocop-rspec.rb +2 -16
- metadata +27 -49
- data/lib/rubocop/cop/rspec/capybara/current_path_expectation.rb +0 -39
- data/lib/rubocop/cop/rspec/capybara/feature_methods.rb +0 -104
- data/lib/rubocop/cop/rspec/capybara/match_style.rb +0 -38
- data/lib/rubocop/cop/rspec/capybara/negation_matcher.rb +0 -33
- data/lib/rubocop/cop/rspec/capybara/specific_actions.rb +0 -29
- data/lib/rubocop/cop/rspec/capybara/specific_finders.rb +0 -24
- data/lib/rubocop/cop/rspec/capybara/specific_matcher.rb +0 -35
- data/lib/rubocop/cop/rspec/capybara/visibility_matcher.rb +0 -36
- data/lib/rubocop/cop/rspec/factory_bot/attribute_defined_statically.rb +0 -128
- data/lib/rubocop/cop/rspec/factory_bot/consistent_parentheses_style.rb +0 -117
- data/lib/rubocop/cop/rspec/factory_bot/create_list.rb +0 -260
- data/lib/rubocop/cop/rspec/factory_bot/factory_class_name.rb +0 -56
- data/lib/rubocop/cop/rspec/factory_bot/factory_name_style.rb +0 -74
- data/lib/rubocop/cop/rspec/factory_bot/syntax_methods.rb +0 -89
- data/lib/rubocop/cop/rspec/file_path.rb +0 -173
- data/lib/rubocop/cop/rspec/rails/avoid_setup_hook.rb +0 -43
- data/lib/rubocop/cop/rspec/rails/have_http_status.rb +0 -55
- data/lib/rubocop/cop/rspec/rails/http_status.rb +0 -203
- data/lib/rubocop/cop/rspec/rails/inferred_spec_type.rb +0 -145
- data/lib/rubocop/cop/rspec/rails/minitest_assertions.rb +0 -60
- data/lib/rubocop/cop/rspec/rails/travel_around.rb +0 -92
- data/lib/rubocop/rspec/factory_bot/language.rb +0 -37
- data/lib/rubocop/rspec/factory_bot.rb +0 -64
- data/lib/rubocop/rspec/language/node_pattern.rb +0 -48
@@ -6,6 +6,8 @@ module RuboCop
|
|
6
6
|
class Wording
|
7
7
|
SHOULDNT_PREFIX = /\Ashould(?:n't| not)\b/i.freeze
|
8
8
|
SHOULDNT_BE_PREFIX = /#{SHOULDNT_PREFIX} be\b/i.freeze
|
9
|
+
WILL_NOT_PREFIX = /\Awill not\b/i.freeze
|
10
|
+
WONT_PREFIX = /\Awon't\b/i.freeze
|
9
11
|
ES_SUFFIX_PATTERN = /(?:o|s|x|ch|sh|z)\z/i.freeze
|
10
12
|
IES_SUFFIX_PATTERN = /[^aeou]y\z/i.freeze
|
11
13
|
|
@@ -15,16 +17,22 @@ module RuboCop
|
|
15
17
|
@replacements = replace
|
16
18
|
end
|
17
19
|
|
20
|
+
# rubocop:disable Metrics/MethodLength
|
18
21
|
def rewrite
|
19
22
|
case text
|
20
23
|
when SHOULDNT_BE_PREFIX
|
21
24
|
replace_prefix(SHOULDNT_BE_PREFIX, 'is not')
|
22
25
|
when SHOULDNT_PREFIX
|
23
26
|
replace_prefix(SHOULDNT_PREFIX, 'does not')
|
27
|
+
when WILL_NOT_PREFIX
|
28
|
+
replace_prefix(WILL_NOT_PREFIX, 'does not')
|
29
|
+
when WONT_PREFIX
|
30
|
+
replace_prefix(WONT_PREFIX, 'does not')
|
24
31
|
else
|
25
32
|
remove_should_and_pluralize
|
26
33
|
end
|
27
34
|
end
|
35
|
+
# rubocop:enable Metrics/MethodLength
|
28
36
|
|
29
37
|
private
|
30
38
|
|
data/lib/rubocop-rspec.rb
CHANGED
@@ -4,20 +4,15 @@ require 'pathname'
|
|
4
4
|
require 'yaml'
|
5
5
|
|
6
6
|
require 'rubocop'
|
7
|
-
require 'rubocop-capybara'
|
8
7
|
|
9
8
|
require_relative 'rubocop/rspec'
|
10
9
|
require_relative 'rubocop/rspec/inject'
|
11
|
-
require_relative 'rubocop/rspec/language
|
10
|
+
require_relative 'rubocop/rspec/language'
|
12
11
|
require_relative 'rubocop/rspec/node'
|
13
12
|
require_relative 'rubocop/rspec/version'
|
14
13
|
require_relative 'rubocop/rspec/wording'
|
15
14
|
|
16
|
-
|
17
|
-
require_relative 'rubocop/rspec/language'
|
18
|
-
|
19
|
-
require_relative 'rubocop/rspec/factory_bot/language'
|
20
|
-
|
15
|
+
require_relative 'rubocop/cop/rspec/mixin/file_help'
|
21
16
|
require_relative 'rubocop/cop/rspec/mixin/final_end_location'
|
22
17
|
require_relative 'rubocop/cop/rspec/mixin/inside_example_group'
|
23
18
|
require_relative 'rubocop/cop/rspec/mixin/location_help'
|
@@ -37,7 +32,6 @@ require_relative 'rubocop/rspec/concept'
|
|
37
32
|
require_relative 'rubocop/rspec/corrector/move_node'
|
38
33
|
require_relative 'rubocop/rspec/example'
|
39
34
|
require_relative 'rubocop/rspec/example_group'
|
40
|
-
require_relative 'rubocop/rspec/factory_bot'
|
41
35
|
require_relative 'rubocop/rspec/hook'
|
42
36
|
|
43
37
|
RuboCop::RSpec::Inject.defaults!
|
@@ -56,12 +50,4 @@ RuboCop::Cop::Layout::ExtraSpacing.singleton_class.prepend(
|
|
56
50
|
end
|
57
51
|
)
|
58
52
|
|
59
|
-
RuboCop::Cop::Style::TrailingCommaInArguments.singleton_class.prepend(
|
60
|
-
Module.new do
|
61
|
-
def autocorrect_incompatible_with
|
62
|
-
super.push(RuboCop::Cop::RSpec::Capybara::CurrentPathExpectation)
|
63
|
-
end
|
64
|
-
end
|
65
|
-
)
|
66
|
-
|
67
53
|
RuboCop::AST::Node.include(RuboCop::RSpec::Node)
|
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:
|
4
|
+
version: 3.0.1
|
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:
|
13
|
+
date: 2024-06-11 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rubocop
|
@@ -18,31 +18,17 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - "~>"
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '1.
|
21
|
+
version: '1.61'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - "~>"
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: '1.
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
requirements:
|
33
|
-
- - "~>"
|
34
|
-
- !ruby/object:Gem::Version
|
35
|
-
version: '2.17'
|
36
|
-
type: :runtime
|
37
|
-
prerelease: false
|
38
|
-
version_requirements: !ruby/object:Gem::Requirement
|
39
|
-
requirements:
|
40
|
-
- - "~>"
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
version: '2.17'
|
43
|
-
description: |2
|
44
|
-
Code style checking for RSpec files.
|
45
|
-
A plugin for the RuboCop code style enforcing & linting tool.
|
28
|
+
version: '1.61'
|
29
|
+
description: |
|
30
|
+
Code style checking for RSpec files.
|
31
|
+
A plugin for the RuboCop code style enforcing & linting tool.
|
46
32
|
email:
|
47
33
|
- johncbackus@gmail.com
|
48
34
|
- ian@nevir.net
|
@@ -71,14 +57,6 @@ files:
|
|
71
57
|
- lib/rubocop/cop/rspec/be_eql.rb
|
72
58
|
- lib/rubocop/cop/rspec/be_nil.rb
|
73
59
|
- lib/rubocop/cop/rspec/before_after_all.rb
|
74
|
-
- lib/rubocop/cop/rspec/capybara/current_path_expectation.rb
|
75
|
-
- lib/rubocop/cop/rspec/capybara/feature_methods.rb
|
76
|
-
- lib/rubocop/cop/rspec/capybara/match_style.rb
|
77
|
-
- lib/rubocop/cop/rspec/capybara/negation_matcher.rb
|
78
|
-
- lib/rubocop/cop/rspec/capybara/specific_actions.rb
|
79
|
-
- lib/rubocop/cop/rspec/capybara/specific_finders.rb
|
80
|
-
- lib/rubocop/cop/rspec/capybara/specific_matcher.rb
|
81
|
-
- lib/rubocop/cop/rspec/capybara/visibility_matcher.rb
|
82
60
|
- lib/rubocop/cop/rspec/change_by_zero.rb
|
83
61
|
- lib/rubocop/cop/rspec/class_check.rb
|
84
62
|
- lib/rubocop/cop/rspec/contain_exactly.rb
|
@@ -98,6 +76,9 @@ files:
|
|
98
76
|
- lib/rubocop/cop/rspec/empty_line_after_final_let.rb
|
99
77
|
- lib/rubocop/cop/rspec/empty_line_after_hook.rb
|
100
78
|
- lib/rubocop/cop/rspec/empty_line_after_subject.rb
|
79
|
+
- lib/rubocop/cop/rspec/empty_metadata.rb
|
80
|
+
- lib/rubocop/cop/rspec/empty_output.rb
|
81
|
+
- lib/rubocop/cop/rspec/eq.rb
|
101
82
|
- lib/rubocop/cop/rspec/example_length.rb
|
102
83
|
- lib/rubocop/cop/rspec/example_without_description.rb
|
103
84
|
- lib/rubocop/cop/rspec/example_wording.rb
|
@@ -105,14 +86,8 @@ files:
|
|
105
86
|
- lib/rubocop/cop/rspec/expect_actual.rb
|
106
87
|
- lib/rubocop/cop/rspec/expect_change.rb
|
107
88
|
- lib/rubocop/cop/rspec/expect_in_hook.rb
|
89
|
+
- lib/rubocop/cop/rspec/expect_in_let.rb
|
108
90
|
- lib/rubocop/cop/rspec/expect_output.rb
|
109
|
-
- lib/rubocop/cop/rspec/factory_bot/attribute_defined_statically.rb
|
110
|
-
- lib/rubocop/cop/rspec/factory_bot/consistent_parentheses_style.rb
|
111
|
-
- lib/rubocop/cop/rspec/factory_bot/create_list.rb
|
112
|
-
- lib/rubocop/cop/rspec/factory_bot/factory_class_name.rb
|
113
|
-
- lib/rubocop/cop/rspec/factory_bot/factory_name_style.rb
|
114
|
-
- lib/rubocop/cop/rspec/factory_bot/syntax_methods.rb
|
115
|
-
- lib/rubocop/cop/rspec/file_path.rb
|
116
91
|
- lib/rubocop/cop/rspec/focus.rb
|
117
92
|
- lib/rubocop/cop/rspec/hook_argument.rb
|
118
93
|
- lib/rubocop/cop/rspec/hooks_before_examples.rb
|
@@ -123,6 +98,7 @@ files:
|
|
123
98
|
- lib/rubocop/cop/rspec/indexed_let.rb
|
124
99
|
- lib/rubocop/cop/rspec/instance_spy.rb
|
125
100
|
- lib/rubocop/cop/rspec/instance_variable.rb
|
101
|
+
- lib/rubocop/cop/rspec/is_expected_specify.rb
|
126
102
|
- lib/rubocop/cop/rspec/it_behaves_like.rb
|
127
103
|
- lib/rubocop/cop/rspec/iterated_expectation.rb
|
128
104
|
- lib/rubocop/cop/rspec/leading_subject.rb
|
@@ -133,9 +109,12 @@ files:
|
|
133
109
|
- lib/rubocop/cop/rspec/message_chain.rb
|
134
110
|
- lib/rubocop/cop/rspec/message_expectation.rb
|
135
111
|
- lib/rubocop/cop/rspec/message_spies.rb
|
112
|
+
- lib/rubocop/cop/rspec/metadata_style.rb
|
136
113
|
- lib/rubocop/cop/rspec/missing_example_group_argument.rb
|
114
|
+
- lib/rubocop/cop/rspec/missing_expectation_target_method.rb
|
137
115
|
- lib/rubocop/cop/rspec/mixin/comments_help.rb
|
138
116
|
- lib/rubocop/cop/rspec/mixin/empty_line_separation.rb
|
117
|
+
- lib/rubocop/cop/rspec/mixin/file_help.rb
|
139
118
|
- lib/rubocop/cop/rspec/mixin/final_end_location.rb
|
140
119
|
- lib/rubocop/cop/rspec/mixin/inside_example_group.rb
|
141
120
|
- lib/rubocop/cop/rspec/mixin/location_help.rb
|
@@ -156,20 +135,18 @@ files:
|
|
156
135
|
- lib/rubocop/cop/rspec/pending.rb
|
157
136
|
- lib/rubocop/cop/rspec/pending_without_reason.rb
|
158
137
|
- lib/rubocop/cop/rspec/predicate_matcher.rb
|
159
|
-
- lib/rubocop/cop/rspec/rails/avoid_setup_hook.rb
|
160
|
-
- lib/rubocop/cop/rspec/rails/have_http_status.rb
|
161
|
-
- lib/rubocop/cop/rspec/rails/http_status.rb
|
162
|
-
- lib/rubocop/cop/rspec/rails/inferred_spec_type.rb
|
163
|
-
- lib/rubocop/cop/rspec/rails/minitest_assertions.rb
|
164
|
-
- lib/rubocop/cop/rspec/rails/travel_around.rb
|
165
138
|
- lib/rubocop/cop/rspec/receive_counts.rb
|
139
|
+
- lib/rubocop/cop/rspec/receive_messages.rb
|
166
140
|
- lib/rubocop/cop/rspec/receive_never.rb
|
167
141
|
- lib/rubocop/cop/rspec/redundant_around.rb
|
142
|
+
- lib/rubocop/cop/rspec/redundant_predicate_matcher.rb
|
143
|
+
- lib/rubocop/cop/rspec/remove_const.rb
|
168
144
|
- lib/rubocop/cop/rspec/repeated_description.rb
|
169
145
|
- lib/rubocop/cop/rspec/repeated_example.rb
|
170
146
|
- lib/rubocop/cop/rspec/repeated_example_group_body.rb
|
171
147
|
- lib/rubocop/cop/rspec/repeated_example_group_description.rb
|
172
148
|
- lib/rubocop/cop/rspec/repeated_include_example.rb
|
149
|
+
- lib/rubocop/cop/rspec/repeated_subject_call.rb
|
173
150
|
- lib/rubocop/cop/rspec/return_from_stub.rb
|
174
151
|
- lib/rubocop/cop/rspec/scattered_let.rb
|
175
152
|
- lib/rubocop/cop/rspec/scattered_setup.rb
|
@@ -178,9 +155,12 @@ files:
|
|
178
155
|
- lib/rubocop/cop/rspec/single_argument_message_chain.rb
|
179
156
|
- lib/rubocop/cop/rspec/skip_block_inside_example.rb
|
180
157
|
- lib/rubocop/cop/rspec/sort_metadata.rb
|
158
|
+
- lib/rubocop/cop/rspec/spec_file_path_format.rb
|
159
|
+
- lib/rubocop/cop/rspec/spec_file_path_suffix.rb
|
181
160
|
- lib/rubocop/cop/rspec/stubbed_mock.rb
|
182
161
|
- lib/rubocop/cop/rspec/subject_declaration.rb
|
183
162
|
- lib/rubocop/cop/rspec/subject_stub.rb
|
163
|
+
- lib/rubocop/cop/rspec/undescriptive_literals_description.rb
|
184
164
|
- lib/rubocop/cop/rspec/unspecified_exception.rb
|
185
165
|
- lib/rubocop/cop/rspec/variable_definition.rb
|
186
166
|
- lib/rubocop/cop/rspec/variable_name.rb
|
@@ -193,16 +173,14 @@ files:
|
|
193
173
|
- lib/rubocop/rspec/align_let_brace.rb
|
194
174
|
- lib/rubocop/rspec/concept.rb
|
195
175
|
- lib/rubocop/rspec/config_formatter.rb
|
176
|
+
- lib/rubocop/rspec/cop/generator.rb
|
196
177
|
- lib/rubocop/rspec/corrector/move_node.rb
|
197
178
|
- lib/rubocop/rspec/description_extractor.rb
|
198
179
|
- lib/rubocop/rspec/example.rb
|
199
180
|
- lib/rubocop/rspec/example_group.rb
|
200
|
-
- lib/rubocop/rspec/factory_bot.rb
|
201
|
-
- lib/rubocop/rspec/factory_bot/language.rb
|
202
181
|
- lib/rubocop/rspec/hook.rb
|
203
182
|
- lib/rubocop/rspec/inject.rb
|
204
183
|
- lib/rubocop/rspec/language.rb
|
205
|
-
- lib/rubocop/rspec/language/node_pattern.rb
|
206
184
|
- lib/rubocop/rspec/node.rb
|
207
185
|
- lib/rubocop/rspec/shared_contexts/default_rspec_language_config_context.rb
|
208
186
|
- lib/rubocop/rspec/version.rb
|
@@ -214,7 +192,7 @@ metadata:
|
|
214
192
|
changelog_uri: https://github.com/rubocop/rubocop-rspec/blob/master/CHANGELOG.md
|
215
193
|
documentation_uri: https://docs.rubocop.org/rubocop-rspec/
|
216
194
|
rubygems_mfa_required: 'true'
|
217
|
-
post_install_message:
|
195
|
+
post_install_message:
|
218
196
|
rdoc_options: []
|
219
197
|
require_paths:
|
220
198
|
- lib
|
@@ -229,8 +207,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
229
207
|
- !ruby/object:Gem::Version
|
230
208
|
version: '0'
|
231
209
|
requirements: []
|
232
|
-
rubygems_version: 3.
|
233
|
-
signing_key:
|
210
|
+
rubygems_version: 3.5.9
|
211
|
+
signing_key:
|
234
212
|
specification_version: 4
|
235
213
|
summary: Code style checking for RSpec files
|
236
214
|
test_files: []
|
@@ -1,39 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module RSpec
|
6
|
-
module Capybara
|
7
|
-
# @!parse
|
8
|
-
# # Checks that no expectations are set on Capybara's `current_path`.
|
9
|
-
# #
|
10
|
-
# # The
|
11
|
-
# # https://www.rubydoc.info/github/teamcapybara/capybara/master/Capybara/RSpecMatchers#have_current_path-instance_method[`have_current_path` matcher]
|
12
|
-
# # should be used on `page` to set expectations on Capybara's
|
13
|
-
# # current path, since it uses
|
14
|
-
# # https://github.com/teamcapybara/capybara/blob/master/README.md#asynchronous-javascript-ajax-and-friends[Capybara's waiting functionality]
|
15
|
-
# # which ensures that preceding actions (like `click_link`) have
|
16
|
-
# # completed.
|
17
|
-
# #
|
18
|
-
# # This cop does not support autocorrection in some cases.
|
19
|
-
# #
|
20
|
-
# # @example
|
21
|
-
# # # bad
|
22
|
-
# # expect(current_path).to eq('/callback')
|
23
|
-
# #
|
24
|
-
# # # good
|
25
|
-
# # expect(page).to have_current_path('/callback')
|
26
|
-
# #
|
27
|
-
# # # bad (does not support autocorrection)
|
28
|
-
# # expect(page.current_path).to match(variable)
|
29
|
-
# #
|
30
|
-
# # # good
|
31
|
-
# # expect(page).to have_current_path('/callback')
|
32
|
-
# #
|
33
|
-
# class CurrentPathExpectation < ::RuboCop::Cop::Base; end
|
34
|
-
CurrentPathExpectation =
|
35
|
-
::RuboCop::Cop::Capybara::CurrentPathExpectation
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
@@ -1,104 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module RSpec
|
6
|
-
module Capybara
|
7
|
-
# Checks for consistent method usage in feature specs.
|
8
|
-
#
|
9
|
-
# By default, the cop disables all Capybara-specific methods that have
|
10
|
-
# the same native RSpec method (e.g. are just aliases). Some teams
|
11
|
-
# however may prefer using some of the Capybara methods (like `feature`)
|
12
|
-
# to make it obvious that the test uses Capybara, while still disable
|
13
|
-
# the rest of the methods, like `given` (alias for `let`), `background`
|
14
|
-
# (alias for `before`), etc. You can configure which of the methods to
|
15
|
-
# be enabled by using the EnabledMethods configuration option.
|
16
|
-
#
|
17
|
-
# @example
|
18
|
-
# # bad
|
19
|
-
# feature 'User logs in' do
|
20
|
-
# given(:user) { User.new }
|
21
|
-
#
|
22
|
-
# background do
|
23
|
-
# visit new_session_path
|
24
|
-
# end
|
25
|
-
#
|
26
|
-
# scenario 'with OAuth' do
|
27
|
-
# # ...
|
28
|
-
# end
|
29
|
-
# end
|
30
|
-
#
|
31
|
-
# # good
|
32
|
-
# describe 'User logs in' do
|
33
|
-
# let(:user) { User.new }
|
34
|
-
#
|
35
|
-
# before do
|
36
|
-
# visit new_session_path
|
37
|
-
# end
|
38
|
-
#
|
39
|
-
# it 'with OAuth' do
|
40
|
-
# # ...
|
41
|
-
# end
|
42
|
-
# end
|
43
|
-
#
|
44
|
-
class FeatureMethods < Base
|
45
|
-
extend AutoCorrector
|
46
|
-
include InsideExampleGroup
|
47
|
-
|
48
|
-
MSG = 'Use `%<replacement>s` instead of `%<method>s`.'
|
49
|
-
|
50
|
-
# https://github.com/teamcapybara/capybara/blob/e283c1aeaa72441f5403963577e16333bf111a81/lib/capybara/rspec/features.rb#L31-L36
|
51
|
-
MAP = {
|
52
|
-
background: :before,
|
53
|
-
scenario: :it,
|
54
|
-
xscenario: :xit,
|
55
|
-
given: :let,
|
56
|
-
given!: :let!,
|
57
|
-
feature: :describe
|
58
|
-
}.freeze
|
59
|
-
|
60
|
-
# @!method capybara_speak(node)
|
61
|
-
def_node_matcher :capybara_speak, <<-PATTERN
|
62
|
-
{#{MAP.keys.map(&:inspect).join(' ')}}
|
63
|
-
PATTERN
|
64
|
-
|
65
|
-
# @!method feature_method(node)
|
66
|
-
def_node_matcher :feature_method, <<-PATTERN
|
67
|
-
(block
|
68
|
-
$(send #rspec? $#capybara_speak ...)
|
69
|
-
...)
|
70
|
-
PATTERN
|
71
|
-
|
72
|
-
def on_block(node) # rubocop:disable InternalAffairs/NumblockHandler
|
73
|
-
return unless inside_example_group?(node)
|
74
|
-
|
75
|
-
feature_method(node) do |send_node, match|
|
76
|
-
next if enabled?(match)
|
77
|
-
|
78
|
-
add_offense(send_node.loc.selector) do |corrector|
|
79
|
-
corrector.replace(send_node.loc.selector, MAP[match].to_s)
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
def message(range)
|
85
|
-
name = range.source.to_sym
|
86
|
-
format(MSG, method: name, replacement: MAP[name])
|
87
|
-
end
|
88
|
-
|
89
|
-
private
|
90
|
-
|
91
|
-
def enabled?(method_name)
|
92
|
-
enabled_methods.include?(method_name)
|
93
|
-
end
|
94
|
-
|
95
|
-
def enabled_methods
|
96
|
-
cop_config
|
97
|
-
.fetch('EnabledMethods', [])
|
98
|
-
.map(&:to_sym)
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module RSpec
|
6
|
-
module Capybara
|
7
|
-
# @!parse
|
8
|
-
# # Checks for usage of deprecated style methods.
|
9
|
-
# #
|
10
|
-
# # @example when using `assert_style`
|
11
|
-
# # # bad
|
12
|
-
# # page.find(:css, '#first').assert_style(display: 'block')
|
13
|
-
# #
|
14
|
-
# # # good
|
15
|
-
# # page.find(:css, '#first').assert_matches_style(display: 'block')
|
16
|
-
# #
|
17
|
-
# # @example when using `has_style?`
|
18
|
-
# # # bad
|
19
|
-
# # expect(page.find(:css, 'first')
|
20
|
-
# # .has_style?(display: 'block')).to be true
|
21
|
-
# #
|
22
|
-
# # # good
|
23
|
-
# # expect(page.find(:css, 'first')
|
24
|
-
# # .matches_style?(display: 'block')).to be true
|
25
|
-
# #
|
26
|
-
# # @example when using `have_style`
|
27
|
-
# # # bad
|
28
|
-
# # expect(page).to have_style(display: 'block')
|
29
|
-
# #
|
30
|
-
# # # good
|
31
|
-
# # expect(page).to match_style(display: 'block')
|
32
|
-
# #
|
33
|
-
# class MatchStyle < ::RuboCop::Cop::Base; end
|
34
|
-
MatchStyle = ::RuboCop::Cop::Capybara::MatchStyle
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module RSpec
|
6
|
-
module Capybara
|
7
|
-
# @!parse
|
8
|
-
# # Enforces use of `have_no_*` or `not_to` for negated expectations.
|
9
|
-
# #
|
10
|
-
# # @example EnforcedStyle: not_to (default)
|
11
|
-
# # # bad
|
12
|
-
# # expect(page).to have_no_selector
|
13
|
-
# # expect(page).to have_no_css('a')
|
14
|
-
# #
|
15
|
-
# # # good
|
16
|
-
# # expect(page).not_to have_selector
|
17
|
-
# # expect(page).not_to have_css('a')
|
18
|
-
# #
|
19
|
-
# # @example EnforcedStyle: have_no
|
20
|
-
# # # bad
|
21
|
-
# # expect(page).not_to have_selector
|
22
|
-
# # expect(page).not_to have_css('a')
|
23
|
-
# #
|
24
|
-
# # # good
|
25
|
-
# # expect(page).to have_no_selector
|
26
|
-
# # expect(page).to have_no_css('a')
|
27
|
-
# #
|
28
|
-
# class NegationMatcher < ::RuboCop::Cop::Base; end
|
29
|
-
NegationMatcher = ::RuboCop::Cop::Capybara::NegationMatcher
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module RSpec
|
6
|
-
module Capybara
|
7
|
-
# @!parse
|
8
|
-
# # Checks for there is a more specific actions offered by Capybara.
|
9
|
-
# #
|
10
|
-
# # @example
|
11
|
-
# #
|
12
|
-
# # # bad
|
13
|
-
# # find('a').click
|
14
|
-
# # find('button.cls').click
|
15
|
-
# # find('a', exact_text: 'foo').click
|
16
|
-
# # find('div button').click
|
17
|
-
# #
|
18
|
-
# # # good
|
19
|
-
# # click_link
|
20
|
-
# # click_button(class: 'cls')
|
21
|
-
# # click_link(exact_text: 'foo')
|
22
|
-
# # find('div').click_button
|
23
|
-
# #
|
24
|
-
# class SpecificActions < ::RuboCop::Cop::Base; end
|
25
|
-
SpecificActions = ::RuboCop::Cop::Capybara::SpecificActions
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module RSpec
|
6
|
-
module Capybara
|
7
|
-
# @!parse
|
8
|
-
# # Checks if there is a more specific finder offered by Capybara.
|
9
|
-
# #
|
10
|
-
# # @example
|
11
|
-
# # # bad
|
12
|
-
# # find('#some-id')
|
13
|
-
# # find('[visible][id=some-id]')
|
14
|
-
# #
|
15
|
-
# # # good
|
16
|
-
# # find_by_id('some-id')
|
17
|
-
# # find_by_id('some-id', visible: true)
|
18
|
-
# #
|
19
|
-
# class SpecificFinders < ::RuboCop::Cop::Base; end
|
20
|
-
SpecificFinders = ::RuboCop::Cop::Capybara::SpecificFinders
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module RSpec
|
6
|
-
module Capybara
|
7
|
-
# @!parse
|
8
|
-
# # Checks for there is a more specific matcher offered by Capybara.
|
9
|
-
# #
|
10
|
-
# # @example
|
11
|
-
# #
|
12
|
-
# # # bad
|
13
|
-
# # expect(page).to have_selector('button')
|
14
|
-
# # expect(page).to have_no_selector('button.cls')
|
15
|
-
# # expect(page).to have_css('button')
|
16
|
-
# # expect(page).to have_no_css('a.cls', href: 'http://example.com')
|
17
|
-
# # expect(page).to have_css('table.cls')
|
18
|
-
# # expect(page).to have_css('select')
|
19
|
-
# # expect(page).to have_css('input', exact_text: 'foo')
|
20
|
-
# #
|
21
|
-
# # # good
|
22
|
-
# # expect(page).to have_button
|
23
|
-
# # expect(page).to have_no_button(class: 'cls')
|
24
|
-
# # expect(page).to have_button
|
25
|
-
# # expect(page).to have_no_link('foo', class: 'cls', href: 'http://example.com')
|
26
|
-
# # expect(page).to have_table(class: 'cls')
|
27
|
-
# # expect(page).to have_select
|
28
|
-
# # expect(page).to have_field('foo')
|
29
|
-
# #
|
30
|
-
# class SpecificMatcher < ::RuboCop::Cop::Base; end
|
31
|
-
SpecificMatcher = ::RuboCop::Cop::Capybara::SpecificMatcher
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Cop
|
5
|
-
module RSpec
|
6
|
-
module Capybara
|
7
|
-
# @!parse
|
8
|
-
# # Checks for boolean visibility in Capybara finders.
|
9
|
-
# #
|
10
|
-
# # Capybara lets you find elements that match a certain visibility
|
11
|
-
# # using the `:visible` option. `:visible` accepts both boolean and
|
12
|
-
# # symbols as values, however using booleans can have unwanted
|
13
|
-
# # effects. `visible: false` does not find just invisible elements,
|
14
|
-
# # but both visible and invisible elements. For expressiveness and
|
15
|
-
# # clarity, use one of the # symbol values, `:all`, `:hidden` or
|
16
|
-
# # `:visible`.
|
17
|
-
# # Read more in
|
18
|
-
# # https://www.rubydoc.info/gems/capybara/Capybara%2FNode%2FFinders:all[the documentation].
|
19
|
-
# #
|
20
|
-
# # @example
|
21
|
-
# # # bad
|
22
|
-
# # expect(page).to have_selector('.foo', visible: false)
|
23
|
-
# # expect(page).to have_css('.foo', visible: true)
|
24
|
-
# # expect(page).to have_link('my link', visible: false)
|
25
|
-
# #
|
26
|
-
# # # good
|
27
|
-
# # expect(page).to have_selector('.foo', visible: :visible)
|
28
|
-
# # expect(page).to have_css('.foo', visible: :all)
|
29
|
-
# # expect(page).to have_link('my link', visible: :hidden)
|
30
|
-
# #
|
31
|
-
# class VisibilityMatcher < ::RuboCop::Cop::Base; end
|
32
|
-
VisibilityMatcher = ::RuboCop::Cop::Capybara::VisibilityMatcher
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|