rubocop-rspec 2.16.0 → 2.24.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 +124 -9
- data/README.md +3 -3
- data/config/default.yml +145 -18
- data/config/obsoletion.yml +15 -0
- data/lib/rubocop/cop/rspec/be_empty.rb +44 -0
- data/lib/rubocop/cop/rspec/be_nil.rb +2 -2
- data/lib/rubocop/cop/rspec/capybara/current_path_expectation.rb +29 -115
- data/lib/rubocop/cop/rspec/capybara/match_style.rb +38 -0
- data/lib/rubocop/cop/rspec/capybara/negation_matcher.rb +23 -96
- data/lib/rubocop/cop/rspec/capybara/specific_actions.rb +19 -75
- data/lib/rubocop/cop/rspec/capybara/specific_finders.rb +14 -83
- data/lib/rubocop/cop/rspec/capybara/specific_matcher.rb +25 -69
- data/lib/rubocop/cop/rspec/capybara/visibility_matcher.rb +26 -63
- data/lib/rubocop/cop/rspec/change_by_zero.rb +33 -23
- data/lib/rubocop/cop/rspec/contain_exactly.rb +56 -0
- data/lib/rubocop/cop/rspec/context_method.rb +5 -1
- data/lib/rubocop/cop/rspec/context_wording.rb +13 -6
- data/lib/rubocop/cop/rspec/describe_method.rb +16 -8
- data/lib/rubocop/cop/rspec/described_class.rb +2 -1
- data/lib/rubocop/cop/rspec/described_class_module_wrapping.rb +7 -5
- data/lib/rubocop/cop/rspec/dialect.rb +1 -1
- data/lib/rubocop/cop/rspec/duplicated_metadata.rb +2 -2
- data/lib/rubocop/cop/rspec/empty_example_group.rb +10 -7
- data/lib/rubocop/cop/rspec/empty_hook.rb +2 -2
- data/lib/rubocop/cop/rspec/empty_line_after_example_group.rb +1 -1
- data/lib/rubocop/cop/rspec/empty_metadata.rb +46 -0
- data/lib/rubocop/cop/rspec/eq.rb +47 -0
- data/lib/rubocop/cop/rspec/example_wording.rb +1 -1
- data/lib/rubocop/cop/rspec/excessive_docstring_spacing.rb +14 -5
- data/lib/rubocop/cop/rspec/expect_actual.rb +4 -4
- data/lib/rubocop/cop/rspec/expect_in_hook.rb +1 -1
- data/lib/rubocop/cop/rspec/factory_bot/attribute_defined_statically.rb +25 -118
- data/lib/rubocop/cop/rspec/factory_bot/consistent_parentheses_style.rb +40 -107
- data/lib/rubocop/cop/rspec/factory_bot/create_list.rb +30 -250
- data/lib/rubocop/cop/rspec/factory_bot/factory_class_name.rb +19 -46
- data/lib/rubocop/cop/rspec/factory_bot/factory_name_style.rb +23 -64
- data/lib/rubocop/cop/rspec/factory_bot/syntax_methods.rb +45 -79
- data/lib/rubocop/cop/rspec/file_path.rb +8 -2
- data/lib/rubocop/cop/rspec/focus.rb +19 -5
- data/lib/rubocop/cop/rspec/hook_argument.rb +12 -9
- data/lib/rubocop/cop/rspec/hooks_before_examples.rb +5 -3
- data/lib/rubocop/cop/rspec/indexed_let.rb +112 -0
- data/lib/rubocop/cop/rspec/instance_variable.rb +1 -1
- data/lib/rubocop/cop/rspec/leaky_constant_declaration.rb +1 -1
- data/lib/rubocop/cop/rspec/let_before_examples.rb +8 -4
- data/lib/rubocop/cop/rspec/let_setup.rb +6 -8
- data/lib/rubocop/cop/rspec/match_array.rb +59 -0
- data/lib/rubocop/cop/rspec/metadata_style.rb +197 -0
- data/lib/rubocop/cop/rspec/mixin/empty_line_separation.rb +1 -2
- data/lib/rubocop/cop/rspec/mixin/file_help.rb +14 -0
- data/lib/rubocop/cop/rspec/mixin/location_help.rb +37 -0
- data/lib/rubocop/cop/rspec/mixin/metadata.rb +21 -7
- data/lib/rubocop/cop/rspec/mixin/skip_or_pending.rb +20 -4
- data/lib/rubocop/cop/rspec/multiple_expectations.rb +2 -1
- data/lib/rubocop/cop/rspec/named_subject.rb +7 -5
- data/lib/rubocop/cop/rspec/no_expectation_example.rb +2 -5
- data/lib/rubocop/cop/rspec/overwriting_setup.rb +3 -1
- data/lib/rubocop/cop/rspec/pending.rb +23 -13
- data/lib/rubocop/cop/rspec/pending_without_reason.rb +72 -36
- data/lib/rubocop/cop/rspec/predicate_matcher.rb +49 -40
- data/lib/rubocop/cop/rspec/rails/have_http_status.rb +11 -6
- data/lib/rubocop/cop/rspec/rails/http_status.rb +107 -34
- data/lib/rubocop/cop/rspec/rails/inferred_spec_type.rb +4 -4
- data/lib/rubocop/cop/rspec/rails/minitest_assertions.rb +60 -0
- data/lib/rubocop/cop/rspec/rails/negation_be_valid.rb +102 -0
- data/lib/rubocop/cop/rspec/rails/travel_around.rb +92 -0
- 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_around.rb +65 -0
- data/lib/rubocop/cop/rspec/repeated_example_group_body.rb +3 -6
- data/lib/rubocop/cop/rspec/repeated_example_group_description.rb +3 -6
- data/lib/rubocop/cop/rspec/repeated_include_example.rb +3 -4
- data/lib/rubocop/cop/rspec/scattered_setup.rb +23 -6
- data/lib/rubocop/cop/rspec/shared_context.rb +12 -13
- data/lib/rubocop/cop/rspec/shared_examples.rb +6 -4
- data/lib/rubocop/cop/rspec/skip_block_inside_example.rb +46 -0
- data/lib/rubocop/cop/rspec/sort_metadata.rb +4 -3
- 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 +1 -1
- data/lib/rubocop/cop/rspec/subject_stub.rb +0 -1
- data/lib/rubocop/cop/rspec/variable_definition.rb +5 -2
- data/lib/rubocop/cop/rspec/variable_name.rb +4 -1
- data/lib/rubocop/cop/rspec/verified_double_reference.rb +7 -7
- data/lib/rubocop/cop/rspec/verified_doubles.rb +1 -1
- data/lib/rubocop/cop/rspec/void_expect.rb +2 -1
- data/lib/rubocop/cop/rspec_cops.rb +16 -0
- data/lib/rubocop/rspec/config_formatter.rb +16 -0
- data/lib/rubocop/rspec/example_group.rb +6 -8
- data/lib/rubocop/rspec/language/node_pattern.rb +26 -0
- data/lib/rubocop/rspec/language.rb +25 -16
- data/lib/rubocop/rspec/version.rb +1 -1
- data/lib/rubocop-rspec.rb +4 -5
- metadata +50 -8
- data/lib/rubocop/cop/rspec/mixin/capybara_help.rb +0 -80
- data/lib/rubocop/cop/rspec/mixin/css_selector.rb +0 -146
- data/lib/rubocop/rspec/factory_bot/language.rb +0 -37
- data/lib/rubocop/rspec/factory_bot.rb +0 -64
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c86b897dee5441bce313de34844ccae87313b9a5f8b4d84d3957b2a36d48aa5a
|
4
|
+
data.tar.gz: 517269204d37e39e80cb75b75d517e55817c8c13ec6a4574a8ed7d12d85145c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aed811c032c6094c898369be38925f59e7cd637de6268f0a5787d123b20505058b1659102bfc571a134983f51cf5984848caf7d7c539bf7816c94a6471f4ae19
|
7
|
+
data.tar.gz: cdd65ce7e146cc32035fef6d258fac99a6191b62e57e3e32b89176faa8d9ab6fc44400d37f903e4e71b64515292f8a2734aaa723099d0e5cf2064a29cbbb7032
|
data/CHANGELOG.md
CHANGED
@@ -2,13 +2,120 @@
|
|
2
2
|
|
3
3
|
## Master (Unreleased)
|
4
4
|
|
5
|
+
## 2.24.1 (2023-09-23)
|
6
|
+
|
7
|
+
- Fix an error when using `RSpec/FilePath` and revert to enabled by default. If you have already moved to `RSpec/SpecFilePathSuffix` and `RSpec/SpecFilePathFormat`, disable `RSpec/FilePath` explicitly as `Enabled: false`. The `RSpec/FilePath` before migration and the `RSpec/SpecFilePathSuffix` and `RSpec/SpecFilePathFormat` as the target are available respectively. ([@ydah])
|
8
|
+
|
9
|
+
## 2.24.0 (2023-09-08)
|
10
|
+
|
11
|
+
- Split `RSpec/FilePath` into `RSpec/SpecFilePathSuffix` and `RSpec/SpecFilePathFormat`. `RSpec/FilePath` cop is disabled by default and the two new cops are pending and need to be enabled explicitly. ([@ydah])
|
12
|
+
- Add new `RSpec/Eq` cop. ([@ydah])
|
13
|
+
- Add `RSpec/MetadataStyle` and `RSpec/EmptyMetadata` cops. ([@r7kamura])
|
14
|
+
- Add support `RSpec/Rails/HttpStatus` when `have_http_status` with string argument. ([@ydah])
|
15
|
+
- Fix an infinite loop error when `RSpec/ExcessiveDocstringSpacing` finds a description with non-ASCII leading/trailing whitespace. ([@bcgraham])
|
16
|
+
- Fix an incorrect autocorrect for `RSpec/ReceiveMessages` when return values declared between stubs. ([@marocchino])
|
17
|
+
- Fix a false positive `RSpec/Focus` when chained method call and inside define method. ([@ydah])
|
18
|
+
|
19
|
+
## 2.23.2 (2023-08-09)
|
20
|
+
|
21
|
+
- Fix an incorrect autocorrect for `RSpec/ReceiveMessages` when method is only non-word character. ([@marocchino])
|
22
|
+
- Fix a false positive for `RSpec/ReceiveMessages` when return with splat. ([@marocchino])
|
23
|
+
|
24
|
+
## 2.23.1 (2023-08-07)
|
25
|
+
|
26
|
+
- Mark to `Safe: false` for `RSpec/Rails/NegationBeValid` cop. ([@ydah])
|
27
|
+
- Declare autocorrect as unsafe for `RSpec/ReceiveMessages`. ([@bquorning])
|
28
|
+
|
29
|
+
## 2.23.0 (2023-07-30)
|
30
|
+
|
31
|
+
- Add new `RSpec/Rails/NegationBeValid` cop. ([@ydah])
|
32
|
+
- Fix a false negative for `RSpec/ExcessiveDocstringSpacing` when finds description with em space. ([@ydah])
|
33
|
+
- Fix a false positive for `RSpec/EmptyExampleGroup` when example group with examples defined in `if` branch inside iterator. ([@ydah])
|
34
|
+
- Update the message output of `RSpec/ExpectActual` to include the word 'value'. ([@corydiamand])
|
35
|
+
- Fix a false negative for `RSpec/Pending` when `it` without body. ([@ydah])
|
36
|
+
- Add new `RSpec/ReceiveMessages` cop. ([@ydah])
|
37
|
+
- Change default.yml path to use `**/spec/*` instead of `spec/*`. ([@ydah])
|
38
|
+
- Add `AllowedIdentifiers` and `AllowedPatterns` configuration option to `RSpec/IndexedLet`. ([@ydah])
|
39
|
+
- Fix `RSpec/NamedSubject` when block has no body. ([@splattael])
|
40
|
+
- Fix `RSpec/LetBeforeExamples` autocorrect incompatible with `RSpec/ScatteredLet` autocorrect. ([@ydah])
|
41
|
+
- Update `RSpec/Focus` to support `shared_context` and `shared_examples`. ([@tmaier])
|
42
|
+
|
43
|
+
## 2.22.0 (2023-05-06)
|
44
|
+
|
45
|
+
- Extract factory_bot cops to a separate repository, [`rubocop-factory_bot`](https://github.com/rubocop/rubocop-factory_bot). The `rubocop-factory_bot` repository is a dependency of `rubocop-rspec` and the factory_bot cops are aliased (`RSpec/FactoryBot/Foo` == `FactoryBot/Foo`) until v3.0 is released, so the change will be invisible to users until then. ([@ydah])
|
46
|
+
|
47
|
+
## 2.21.0 (2023-05-05)
|
48
|
+
|
49
|
+
- Fix a false positive in `RSpec/IndexedLet` with suffixes after index-like numbers. ([@pirj])
|
50
|
+
- Fix an error for `RSpec/Rails/HaveHttpStatus` with comparison with strings containing non-numeric characters. ([@ydah])
|
51
|
+
- Fix an error for `RSpec/MatchArray` when `match_array` with no argument. ([@ydah])
|
52
|
+
- Add support `a_block_changing` and `changing` for `RSpec/ChangeByZero`. ([@ydah])
|
53
|
+
- Drop Ruby 2.6 support. ([@ydah])
|
54
|
+
|
55
|
+
## 2.20.0 (2023-04-18)
|
56
|
+
|
57
|
+
- Add new `RSpec/IndexedLet` cop. ([@dmitrytsepelev])
|
58
|
+
- Add new `RSpec/BeEmpty` cop. ([@ydah], [@bquorning])
|
59
|
+
- Add autocorrect support for `RSpec/ScatteredSetup`. ([@ydah])
|
60
|
+
- Add support `be_status` style for `RSpec/Rails/HttpStatus`. ([@ydah])
|
61
|
+
- Add support for shared example groups to `RSpec/EmptyLineAfterExampleGroup`. ([@pirj])
|
62
|
+
- Add support for `RSpec/HaveHttpStatus` when using `response.code`. ([@ydah])
|
63
|
+
- Fix order of expected and actual in correction for `RSpec/Rails/MinitestAssertions`. ([@mvz])
|
64
|
+
- Fix a false positive for `RSpec/DescribedClassModuleWrapping` when RSpec.describe numblock is nested within a module. ([@ydah])
|
65
|
+
- Fix a false positive for `RSpec/FactoryBot/ConsistentParenthesesStyle` inside `&&`, `||` and `:?` when `omit_parentheses` is on. ([@dmitrytsepelev])
|
66
|
+
- Fix a false positive for `RSpec/PendingWithoutReason` when pending/skip has a reason inside an example group. ([@ydah])
|
67
|
+
- Fix a false negative for `RSpec/RedundantAround` when redundant numblock `around`. ([@ydah])
|
68
|
+
- Change `RSpec/ContainExactly` to ignore calls with no arguments, and change `RSpec/MatchArray` to ignore calls with an empty array literal argument. ([@ydah], [@bquorning])
|
69
|
+
- Make `RSpec/MatchArray` and `RSpec/ContainExactly` pending. ([@ydah])
|
70
|
+
|
71
|
+
## 2.19.0 (2023-03-06)
|
72
|
+
|
73
|
+
- Fix a false positive for `RSpec/ContextWording` when context is interpolated string literal or execute string. ([@ydah])
|
74
|
+
- Fix a false positive for `RSpec/DescribeMethod` when multi-line describe without `#` and `.` at the beginning. ([@ydah], [@pirj])
|
75
|
+
- Fix a false positive for `RSpec/VariableName` when inside non-spec code. ([@ydah])
|
76
|
+
- Fix a false positive for `RSpec/VariableDefinition` when inside non-spec code. ([@ydah])
|
77
|
+
- Add new `RSpec/PendingBlockInsideExample` cop. ([@ydah])
|
78
|
+
- Add `RSpec/RedundantAround` cop. ([@r7kamura])
|
79
|
+
- Add `RSpec/Rails/TravelAround` cop. ([@r7kamura])
|
80
|
+
- Add `RSpec/ContainExactly` and `RSpec/MatchArray` cops. ([@faucct])
|
81
|
+
- Fix a false positive for `RSpec/PendingWithoutReason` when not inside example and pending/skip with block. ([@ydah], [@pirj])
|
82
|
+
- Fix a false positive for `RSpec/PendingWithoutReason` when `skip` is passed a block inside example. ([@ydah], [@pirj])
|
83
|
+
- Rename `RSpec/PendingBlockInsideExample` cop to `RSpec/SkipBlockInsideExample`. ([@pirj])
|
84
|
+
- Deprecate `send_pattern`/`block_pattern`/`numblock_pattern` helpers in favour of using node pattern explicitly. ([@pirj], [@ydah])
|
85
|
+
- Fix an incorrect autocorrect for `RSpec/VerifiedDoubleReference` when namespaced class. ([@ydah])
|
86
|
+
|
87
|
+
## 2.18.1 (2023-01-19)
|
88
|
+
|
89
|
+
- Add `rubocop-capybara` version constraint to prevent sudden cop enabling when it hits 3.0. ([@pirj])
|
90
|
+
|
91
|
+
## 2.18.0 (2023-01-16)
|
92
|
+
|
93
|
+
- Extract Capybara cops to a separate repository, [`rubocop-capybara`](https://github.com/rubocop/rubocop-capybara). The `rubocop-capybara` repository is a dependency of `rubocop-rspec` and the Capybara cops are aliased (`RSpec/Capybara/Foo` == `Capybara/Foo`) until v3.0 is released, so the change will be invisible to users until then. ([@pirj])
|
94
|
+
|
95
|
+
## 2.17.1 (2023-01-16)
|
96
|
+
|
97
|
+
- Fix a false negative for `RSpec/Pending` when using skipped in metadata is multiline string. ([@ydah])
|
98
|
+
- Fix a false positive for `RSpec/NoExpectationExample` when using skipped in metadata is multiline string. ([@ydah])
|
99
|
+
- Fix a false positive for `RSpec/ContextMethod` when multi-line context with `#` at the beginning. ([@ydah])
|
100
|
+
- Fix an incorrect autocorrect for `RSpec/PredicateMatcher` when multiline expect and predicate method with heredoc. ([@ydah])
|
101
|
+
- Fix a false positive for `RSpec/PredicateMatcher` when `include` with multiple argument. ([@ydah])
|
102
|
+
|
103
|
+
## 2.17.0 (2023-01-13)
|
104
|
+
|
105
|
+
- Fix a false positive for `RSpec/PendingWithoutReason` when pending/skip is argument of methods. ([@ydah])
|
106
|
+
- Add new `RSpec/Capybara/MatchStyle` cop. ([@ydah])
|
107
|
+
- Add new `RSpec/Rails/MinitestAssertions` cop. ([@ydah])
|
108
|
+
- Fix a false positive for `RSpec/PendingWithoutReason` when not inside example. ([@ydah])
|
109
|
+
- Fix a false negative for `RSpec/PredicateMatcher` when using `include` and `respond_to`. ([@ydah])
|
110
|
+
- Fix a false positive for `RSpec/StubbedMock` when stubbed message expectation with a block and block parameter. ([@ydah])
|
111
|
+
|
5
112
|
## 2.16.0 (2022-12-13)
|
6
113
|
|
7
114
|
- Add new `RSpec/FactoryBot/FactoryNameStyle` cop. ([@ydah])
|
8
115
|
- Improved processing speed for `RSpec/Be`, `RSpec/ExpectActual`, `RSpec/ImplicitExpect`, `RSpec/MessageSpies`, `RSpec/PredicateMatcher` and `RSpec/Rails/HaveHttpStatus`. ([@ydah])
|
9
116
|
- Fix wrong autocorrection in `n_times` style on `RSpec/FactoryBot/CreateList`. ([@r7kamura])
|
10
117
|
- Fix a false positive for `RSpec/FactoryBot/ConsistentParenthesesStyle` when using `generate` with multiple arguments. ([@ydah])
|
11
|
-
- Mark `RSpec/BeEq` as `Safe: false
|
118
|
+
- Mark `RSpec/BeEq` as `Safe: false`. ([@r7kamura])
|
12
119
|
- Add `RSpec/DuplicatedMetadata` cop. ([@r7kamura])
|
13
120
|
- Mark `RSpec/BeEql` as `Safe: false`. ([@r7kamura])
|
14
121
|
- Add `RSpec/PendingWithoutReason` cop. ([@r7kamura])
|
@@ -41,8 +148,8 @@
|
|
41
148
|
- Fix a false positive for `RSpec/Capybara/SpecificMatcher` when `have_css("a")` without attribute. ([@ydah])
|
42
149
|
- Update `RSpec/ExampleWording` cop to raise error for insufficient descriptions. ([@akrox58])
|
43
150
|
- Add new `RSpec/Capybara/NegationMatcher` cop. ([@ydah])
|
44
|
-
- Add `AllowedPatterns` configuration option to `RSpec/NoExpectationExample`.
|
45
|
-
- Improve `RSpec/NoExpectationExample` cop to ignore examples skipped or pending via metadata.
|
151
|
+
- Add `AllowedPatterns` configuration option to `RSpec/NoExpectationExample`. ([@ydah])
|
152
|
+
- Improve `RSpec/NoExpectationExample` cop to ignore examples skipped or pending via metadata. ([@pirj])
|
46
153
|
- Add `RSpec/FactoryBot/ConsistentParenthesesStyle` cop. ([@Liberatys])
|
47
154
|
- Add `RSpec/Rails/InferredSpecType` cop. ([@r7kamura])
|
48
155
|
- Add new `RSpec/Capybara/SpecificActions` cop. ([@ydah])
|
@@ -288,7 +395,7 @@
|
|
288
395
|
## 1.37.0 (2019-11-25)
|
289
396
|
|
290
397
|
- Implement `RSpec/DescribedClassModuleWrapping` to disallow RSpec statements within a module. ([@kellysutton])
|
291
|
-
- Fix documentation rake task to support
|
398
|
+
- Fix documentation rake task to support RuboCop 0.75. ([@nickcampbell18])
|
292
399
|
- Fix `RSpec/SubjectStub` to detect implicit subjects stubbed. ([@QQism])
|
293
400
|
- Fix `RSpec/Pending` not flagging `skip` with string values. ([@pirj])
|
294
401
|
- Add `AllowedExplicitMatchers` config option for `RSpec/PredicateMatcher`. ([@mkrawc])
|
@@ -358,7 +465,7 @@
|
|
358
465
|
- Add config to `RSpec/VerifiedDoubles` to enforcement of verification on unnamed doubles. ([@BrentWheeldon])
|
359
466
|
- Fix `FactoryBot/AttributeDefinedStatically` not working when there is a non-symbol key. ([@vzvu3k6k])
|
360
467
|
- Fix false positive in `RSpec/ImplicitSubject` when `is_expected` is used inside `its()` block. ([@Darhazer])
|
361
|
-
- Add `single_statement_only` style to
|
468
|
+
- Add `single_statement_only` style to `RSpec/ImplicitSubject` as a more relaxed alternative to `single_line_only`. ([@Darhazer])
|
362
469
|
- Add `RSpec/UnspecifiedException` as a default cop to encourage more-specific `expect{}.to raise_error(ExceptionType)`, or `raise_exception` style handling of exceptions. ([@daveworth])
|
363
470
|
|
364
471
|
## 1.29.1 (2018-09-01)
|
@@ -393,14 +500,14 @@
|
|
393
500
|
|
394
501
|
## 1.26.0 (2018-06-06)
|
395
502
|
|
396
|
-
- Fix false positive in `RSpec/EmptyExampleGroup` cop when methods named like a RSpec method are used.
|
503
|
+
- Fix false positive in `RSpec/EmptyExampleGroup` cop when methods named like a RSpec method are used. ([@Darhazer])
|
397
504
|
- Fix `Capybara/FeatureMethods` not working when there is require before the spec. ([@Darhazer])
|
398
505
|
- Fix `RSpec/EmptyLineAfterFinalLet`: allow a comment to be placed after latest let, requiring empty line after the comment. ([@Darhazer])
|
399
506
|
- Add `RSpec/ReceiveCounts` cop to enforce usage of :once and :twice matchers. ([@Darhazer])
|
400
507
|
|
401
508
|
## 1.25.1 (2018-04-10)
|
402
509
|
|
403
|
-
- Fix false positive in `RSpec/Pending` cop when pending is used as a method name.
|
510
|
+
- Fix false positive in `RSpec/Pending` cop when pending is used as a method name. ([@Darhazer])
|
404
511
|
- Fix `FactoryBot/DynamicAttributeDefinedStatically` false positive when using symbol proc argument for a sequence. ([@tdeo])
|
405
512
|
|
406
513
|
## 1.25.0 (2018-04-07)
|
@@ -408,7 +515,7 @@
|
|
408
515
|
- Add `RSpec/SharedExamples` cop to enforce consistent usage of string to titleize shared examples. ([@anthony-robin])
|
409
516
|
- Add `RSpec/Be` cop to enforce passing argument to the generic `be` matcher. ([@Darhazer])
|
410
517
|
- Fix false positives in `StaticAttributeDefinedDynamically` and `ReturnFromStub` when a const is used in an array or hash. ([@Darhazer])
|
411
|
-
- Add `RSpec/Pending` cop to enforce no existing pending or skipped examples.
|
518
|
+
- Add `RSpec/Pending` cop to enforce no existing pending or skipped examples. This is disabled by default. ([@patrickomatic])
|
412
519
|
- Fix `RSpec/NestedGroups` cop support --auto-gen-config. ([@walf443])
|
413
520
|
- Fix false positives in `Capybara/FeatureMethods` when feature methods are used as property names in a factory. ([@Darhazer])
|
414
521
|
- Allow configuring enabled methods in `Capybara/FeatureMethods`. ([@Darhazer])
|
@@ -619,7 +726,7 @@ Compatibility release so users can upgrade RuboCop to 0.51.0. No new features.
|
|
619
726
|
- Skip `DescribeClass` cop for view specs. ([@andyw8])
|
620
727
|
- Skip `FilePath` cop for Rails routing specs. ([@andyw8])
|
621
728
|
- Add cop to check for focused specs. ([@renanborgescampos], [@jaredmoody])
|
622
|
-
- Clean-up `RSpec::NotToNot` to use same configuration semantics as other
|
729
|
+
- Clean-up `RSpec::NotToNot` to use same configuration semantics as other RuboCop cops, add autocorrect support for `RSpec::NotToNot`. ([@baberthal])
|
623
730
|
- Update to rubocop 0.40.0. ([@nijikon])
|
624
731
|
|
625
732
|
## 1.4.1 (2016-04-03)
|
@@ -704,6 +811,7 @@ Compatibility release so users can upgrade RuboCop to 0.51.0. No new features.
|
|
704
811
|
[@aried3r]: https://github.com/aried3r
|
705
812
|
[@baberthal]: https://github.com/baberthal
|
706
813
|
[@backus]: https://github.com/backus
|
814
|
+
[@bcgraham]: https://github.com/bcgraham
|
707
815
|
[@biinari]: https://github.com/biinari
|
708
816
|
[@bmorrall]: https://github.com/bmorrall
|
709
817
|
[@bquorning]: https://github.com/bquorning
|
@@ -712,11 +820,13 @@ Compatibility release so users can upgrade RuboCop to 0.51.0. No new features.
|
|
712
820
|
[@cfabianski]: https://github.com/cfabianski
|
713
821
|
[@clupprich]: https://github.com/clupprich
|
714
822
|
[@composerinteralia]: https://github.com/composerinteralia
|
823
|
+
[@corydiamand]: https://github.com/corydiamand
|
715
824
|
[@darhazer]: https://github.com/Darhazer
|
716
825
|
[@daveworth]: https://github.com/daveworth
|
717
826
|
[@dduugg]: https://github.com/dduugg
|
718
827
|
[@deivid-rodriguez]: https://github.com/deivid-rodriguez
|
719
828
|
[@dgollahon]: https://github.com/dgollahon
|
829
|
+
[@dmitrytsepelev]: https://github.com/dmitrytsepelev
|
720
830
|
[@drowze]: https://github.com/Drowze
|
721
831
|
[@dswij]: https://github.com/dswij
|
722
832
|
[@dvandersluis]: https://github.com/dvandersluis
|
@@ -726,6 +836,7 @@ Compatibility release so users can upgrade RuboCop to 0.51.0. No new features.
|
|
726
836
|
[@elebow]: https://github.com/elebow
|
727
837
|
[@elisefitz15]: https://github.com/EliseFitz15
|
728
838
|
[@elliterate]: https://github.com/elliterate
|
839
|
+
[@faucct]: https://github.com/faucct
|
729
840
|
[@foton]: https://github.com/foton
|
730
841
|
[@francois-ferrandis]: https://github.com/francois-ferrandis
|
731
842
|
[@g-rath]: https://github.com/G-Rath
|
@@ -752,12 +863,14 @@ Compatibility release so users can upgrade RuboCop to 0.51.0. No new features.
|
|
752
863
|
[@lokhi]: https://github.com/lokhi
|
753
864
|
[@luke-hill]: https://github.com/luke-hill
|
754
865
|
[@m-yamashita01]: https://github.com/M-Yamashita01
|
866
|
+
[@marocchino]: https://github.com/marocchino
|
755
867
|
[@miguelfteixeira]: https://github.com/miguelfteixeira
|
756
868
|
[@mkenyon]: https://github.com/mkenyon
|
757
869
|
[@mkrawc]: https://github.com/mkrawc
|
758
870
|
[@mlarraz]: https://github.com/mlarraz
|
759
871
|
[@mockdeep]: https://github.com/mockdeep
|
760
872
|
[@mothonmars]: https://github.com/MothOnMars
|
873
|
+
[@mvz]: https://github.com/mvz
|
761
874
|
[@nc-holodakg]: https://github.com/nc-holodakg
|
762
875
|
[@nevir]: https://github.com/nevir
|
763
876
|
[@ngouy]: https://github.com/ngouy
|
@@ -787,6 +900,7 @@ Compatibility release so users can upgrade RuboCop to 0.51.0. No new features.
|
|
787
900
|
[@seanpdoyle]: https://github.com/seanpdoyle
|
788
901
|
[@sl4vr]: https://github.com/sl4vr
|
789
902
|
[@smcgivern]: https://github.com/smcgivern
|
903
|
+
[@splattael]: https://github.com/splattael
|
790
904
|
[@stephannv]: https://github.com/stephannv
|
791
905
|
[@t3h2mas]: https://github.com/t3h2mas
|
792
906
|
[@tdeo]: https://github.com/tdeo
|
@@ -794,6 +908,7 @@ Compatibility release so users can upgrade RuboCop to 0.51.0. No new features.
|
|
794
908
|
[@telmofcosta]: https://github.com/telmofcosta
|
795
909
|
[@tietew]: https://github.com/Tietew
|
796
910
|
[@timrogers]: https://github.com/timrogers
|
911
|
+
[@tmaier]: https://github.com/tmaier
|
797
912
|
[@topalovic]: https://github.com/topalovic
|
798
913
|
[@twalpole]: https://github.com/twalpole
|
799
914
|
[@vzvu3k6k]: https://github.com/vzvu3k6k
|
data/README.md
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
[](https://gitter.im/rubocop-rspec/Lobby)
|
4
4
|
[](https://rubygems.org/gems/rubocop-rspec)
|
5
|
-

|
6
6
|
|
7
|
-
RSpec-specific analysis for your projects, as an extension to
|
7
|
+
[RSpec](https://rspec.info/)-specific analysis for your projects, as an extension to
|
8
8
|
[RuboCop](https://github.com/rubocop/rubocop).
|
9
9
|
|
10
10
|
## Installation
|
@@ -17,7 +17,7 @@ gem install rubocop-rspec
|
|
17
17
|
|
18
18
|
or if you use bundler put this in your `Gemfile`
|
19
19
|
|
20
|
-
```
|
20
|
+
```ruby
|
21
21
|
gem 'rubocop-rspec', require: false
|
22
22
|
```
|
23
23
|
|
data/config/default.yml
CHANGED
@@ -144,6 +144,12 @@ RSpec/Be:
|
|
144
144
|
StyleGuide: https://rspec.rubystyle.guide/#be-matcher
|
145
145
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Be
|
146
146
|
|
147
|
+
RSpec/BeEmpty:
|
148
|
+
Description: Prefer using `be_empty` when checking for an empty array.
|
149
|
+
Enabled: pending
|
150
|
+
VersionAdded: '2.20'
|
151
|
+
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/BeEmpty
|
152
|
+
|
147
153
|
RSpec/BeEq:
|
148
154
|
Description: Check for expectations where `be(...)` can replace `eq(...)`.
|
149
155
|
Enabled: pending
|
@@ -175,10 +181,11 @@ RSpec/BeforeAfterAll:
|
|
175
181
|
Description: Check that before/after(:all) isn't being used.
|
176
182
|
Enabled: true
|
177
183
|
Exclude:
|
178
|
-
- spec/spec_helper.rb
|
179
|
-
- spec/rails_helper.rb
|
180
|
-
- spec/support/**/*.rb
|
184
|
+
- "**/spec/spec_helper.rb"
|
185
|
+
- "**/spec/rails_helper.rb"
|
186
|
+
- "**/spec/support/**/*.rb"
|
181
187
|
VersionAdded: '1.12'
|
188
|
+
VersionChanged: '2.23'
|
182
189
|
StyleGuide: https://rspec.rubystyle.guide/#avoid-hooks-with-context-scope
|
183
190
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/BeforeAfterAll
|
184
191
|
|
@@ -201,6 +208,12 @@ RSpec/ClassCheck:
|
|
201
208
|
- be_kind_of
|
202
209
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ClassCheck
|
203
210
|
|
211
|
+
RSpec/ContainExactly:
|
212
|
+
Description: Checks where `contain_exactly` is used.
|
213
|
+
Enabled: pending
|
214
|
+
VersionAdded: '2.19'
|
215
|
+
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ContainExactly
|
216
|
+
|
204
217
|
RSpec/ContextMethod:
|
205
218
|
Description: "`context` should not be used for specifying methods."
|
206
219
|
Enabled: true
|
@@ -346,6 +359,18 @@ RSpec/EmptyLineAfterSubject:
|
|
346
359
|
StyleGuide: https://rspec.rubystyle.guide/#empty-line-after-let
|
347
360
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/EmptyLineAfterSubject
|
348
361
|
|
362
|
+
RSpec/EmptyMetadata:
|
363
|
+
Description: Avoid empty metadata hash.
|
364
|
+
Enabled: pending
|
365
|
+
VersionAdded: '2.24'
|
366
|
+
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/EmptyMetadata
|
367
|
+
|
368
|
+
RSpec/Eq:
|
369
|
+
Description: Use `eq` instead of `be ==` to compare objects.
|
370
|
+
Enabled: pending
|
371
|
+
VersionAdded: '2.24'
|
372
|
+
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Eq
|
373
|
+
|
349
374
|
RSpec/ExampleLength:
|
350
375
|
Description: Checks for long examples.
|
351
376
|
Enabled: true
|
@@ -392,8 +417,9 @@ RSpec/ExpectActual:
|
|
392
417
|
Description: Checks for `expect(...)` calls containing literal values.
|
393
418
|
Enabled: true
|
394
419
|
Exclude:
|
395
|
-
- spec/routing/**/*
|
420
|
+
- "**/spec/routing/**/*"
|
396
421
|
VersionAdded: '1.7'
|
422
|
+
VersionChanged: '2.23'
|
397
423
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ExpectActual
|
398
424
|
|
399
425
|
RSpec/ExpectChange:
|
@@ -432,7 +458,7 @@ RSpec/FilePath:
|
|
432
458
|
IgnoreMethods: false
|
433
459
|
SpecSuffixOnly: false
|
434
460
|
VersionAdded: '1.2'
|
435
|
-
VersionChanged: '
|
461
|
+
VersionChanged: '2.24'
|
436
462
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/FilePath
|
437
463
|
|
438
464
|
RSpec/Focus:
|
@@ -497,6 +523,16 @@ RSpec/ImplicitSubject:
|
|
497
523
|
VersionChanged: '2.13'
|
498
524
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ImplicitSubject
|
499
525
|
|
526
|
+
RSpec/IndexedLet:
|
527
|
+
Description: Do not set up test data using indexes (e.g., `item_1`, `item_2`).
|
528
|
+
Enabled: pending
|
529
|
+
VersionAdded: '2.20'
|
530
|
+
VersionChanged: '2.23'
|
531
|
+
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/IndexedLet
|
532
|
+
Max: 1
|
533
|
+
AllowedIdentifiers: []
|
534
|
+
AllowedPatterns: []
|
535
|
+
|
500
536
|
RSpec/InstanceSpy:
|
501
537
|
Description: Checks for `instance_double` used with `have_received`.
|
502
538
|
Enabled: true
|
@@ -556,6 +592,12 @@ RSpec/LetSetup:
|
|
556
592
|
VersionAdded: '1.7'
|
557
593
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/LetSetup
|
558
594
|
|
595
|
+
RSpec/MatchArray:
|
596
|
+
Description: Checks where `match_array` is used.
|
597
|
+
Enabled: pending
|
598
|
+
VersionAdded: '2.19'
|
599
|
+
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/MatchArray
|
600
|
+
|
559
601
|
RSpec/MessageChain:
|
560
602
|
Description: Check that chains of messages are not being stubbed.
|
561
603
|
Enabled: true
|
@@ -583,6 +625,16 @@ RSpec/MessageSpies:
|
|
583
625
|
VersionAdded: '1.9'
|
584
626
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/MessageSpies
|
585
627
|
|
628
|
+
RSpec/MetadataStyle:
|
629
|
+
Description: Use consistent metadata style.
|
630
|
+
Enabled: pending
|
631
|
+
EnforcedStyle: symbol
|
632
|
+
SupportedStyles:
|
633
|
+
- hash
|
634
|
+
- symbol
|
635
|
+
VersionAdded: '2.24'
|
636
|
+
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/MetadataStyle
|
637
|
+
|
586
638
|
RSpec/MissingExampleGroupArgument:
|
587
639
|
Description: Checks that the first argument to an example group is not empty.
|
588
640
|
Enabled: true
|
@@ -700,12 +752,25 @@ RSpec/ReceiveCounts:
|
|
700
752
|
VersionAdded: '1.26'
|
701
753
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ReceiveCounts
|
702
754
|
|
755
|
+
RSpec/ReceiveMessages:
|
756
|
+
Description: Checks for multiple messages stubbed on the same object.
|
757
|
+
Enabled: pending
|
758
|
+
SafeAutoCorrect: false
|
759
|
+
VersionAdded: '2.23'
|
760
|
+
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ReceiveMessages
|
761
|
+
|
703
762
|
RSpec/ReceiveNever:
|
704
763
|
Description: Prefer `not_to receive(...)` over `receive(...).never`.
|
705
764
|
Enabled: true
|
706
765
|
VersionAdded: '1.28'
|
707
766
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ReceiveNever
|
708
767
|
|
768
|
+
RSpec/RedundantAround:
|
769
|
+
Description: Remove redundant `around` hook.
|
770
|
+
Enabled: pending
|
771
|
+
VersionAdded: '2.19'
|
772
|
+
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/RedundantAround
|
773
|
+
|
709
774
|
RSpec/RepeatedDescription:
|
710
775
|
Description: Check for repeated description strings in example groups.
|
711
776
|
Enabled: true
|
@@ -779,12 +844,43 @@ RSpec/SingleArgumentMessageChain:
|
|
779
844
|
VersionChanged: '1.10'
|
780
845
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/SingleArgumentMessageChain
|
781
846
|
|
847
|
+
RSpec/SkipBlockInsideExample:
|
848
|
+
Description: Checks for passing a block to `skip` within examples.
|
849
|
+
Enabled: pending
|
850
|
+
VersionAdded: '2.19'
|
851
|
+
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/SkipBlockInsideExample
|
852
|
+
|
782
853
|
RSpec/SortMetadata:
|
783
854
|
Description: Sort RSpec metadata alphabetically.
|
784
855
|
Enabled: pending
|
785
856
|
VersionAdded: '2.14'
|
786
857
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/SortMetadata
|
787
858
|
|
859
|
+
RSpec/SpecFilePathFormat:
|
860
|
+
Description: Checks that spec file paths are consistent and well-formed.
|
861
|
+
Enabled: pending
|
862
|
+
Include:
|
863
|
+
- "**/*_spec.rb"
|
864
|
+
Exclude:
|
865
|
+
- "**/spec/routing/**/*"
|
866
|
+
CustomTransform:
|
867
|
+
RuboCop: rubocop
|
868
|
+
RSpec: rspec
|
869
|
+
IgnoreMethods: false
|
870
|
+
IgnoreMetadata:
|
871
|
+
type: routing
|
872
|
+
VersionAdded: '2.24'
|
873
|
+
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/SpecFilePathFormat
|
874
|
+
|
875
|
+
RSpec/SpecFilePathSuffix:
|
876
|
+
Description: Checks that spec file paths suffix are consistent and well-formed.
|
877
|
+
Enabled: pending
|
878
|
+
VersionAdded: '2.24'
|
879
|
+
Include:
|
880
|
+
- "**/*_spec*rb*"
|
881
|
+
- "**/spec/**/*"
|
882
|
+
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/SpecFilePathSuffix
|
883
|
+
|
788
884
|
RSpec/StubbedMock:
|
789
885
|
Description: Checks that message expectations do not have a configured response.
|
790
886
|
Enabled: true
|
@@ -887,6 +983,12 @@ RSpec/Capybara/FeatureMethods:
|
|
887
983
|
VersionChanged: '2.0'
|
888
984
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Capybara/FeatureMethods
|
889
985
|
|
986
|
+
RSpec/Capybara/MatchStyle:
|
987
|
+
Description: Checks for usage of deprecated style methods.
|
988
|
+
Enabled: pending
|
989
|
+
VersionAdded: '2.17'
|
990
|
+
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Capybara/MatchStyle
|
991
|
+
|
890
992
|
RSpec/Capybara/NegationMatcher:
|
891
993
|
Description: Enforces use of `have_no_*` or `not_to` for negated expectations.
|
892
994
|
Enabled: pending
|
@@ -931,11 +1033,11 @@ RSpec/FactoryBot/AttributeDefinedStatically:
|
|
931
1033
|
Description: Always declare attribute values as blocks.
|
932
1034
|
Enabled: true
|
933
1035
|
Include:
|
934
|
-
- spec/factories.rb
|
935
|
-
- spec/factories/**/*.rb
|
936
|
-
- features/support/factories/**/*.rb
|
1036
|
+
- "**/spec/factories.rb"
|
1037
|
+
- "**/spec/factories/**/*.rb"
|
1038
|
+
- "**/features/support/factories/**/*.rb"
|
937
1039
|
VersionAdded: '1.28'
|
938
|
-
VersionChanged: '2.
|
1040
|
+
VersionChanged: '2.23'
|
939
1041
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/FactoryBot/AttributeDefinedStatically
|
940
1042
|
|
941
1043
|
RSpec/FactoryBot/ConsistentParenthesesStyle:
|
@@ -954,26 +1056,26 @@ RSpec/FactoryBot/CreateList:
|
|
954
1056
|
Include:
|
955
1057
|
- "**/*_spec.rb"
|
956
1058
|
- "**/spec/**/*"
|
957
|
-
- spec/factories.rb
|
958
|
-
- spec/factories/**/*.rb
|
959
|
-
- features/support/factories/**/*.rb
|
1059
|
+
- "**/spec/factories.rb"
|
1060
|
+
- "**/spec/factories/**/*.rb"
|
1061
|
+
- "**/features/support/factories/**/*.rb"
|
960
1062
|
EnforcedStyle: create_list
|
961
1063
|
SupportedStyles:
|
962
1064
|
- create_list
|
963
1065
|
- n_times
|
964
1066
|
VersionAdded: '1.25'
|
965
|
-
VersionChanged: '2.
|
1067
|
+
VersionChanged: '2.23'
|
966
1068
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/FactoryBot/CreateList
|
967
1069
|
|
968
1070
|
RSpec/FactoryBot/FactoryClassName:
|
969
1071
|
Description: Use string value when setting the class attribute explicitly.
|
970
1072
|
Enabled: true
|
971
1073
|
Include:
|
972
|
-
- spec/factories.rb
|
973
|
-
- spec/factories/**/*.rb
|
974
|
-
- features/support/factories/**/*.rb
|
1074
|
+
- "**/spec/factories.rb"
|
1075
|
+
- "**/spec/factories/**/*.rb"
|
1076
|
+
- "**/features/support/factories/**/*.rb"
|
975
1077
|
VersionAdded: '1.37'
|
976
|
-
VersionChanged: '2.
|
1078
|
+
VersionChanged: '2.23'
|
977
1079
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/FactoryBot/FactoryClassName
|
978
1080
|
|
979
1081
|
RSpec/FactoryBot/FactoryNameStyle:
|
@@ -1018,8 +1120,9 @@ RSpec/Rails/HttpStatus:
|
|
1018
1120
|
SupportedStyles:
|
1019
1121
|
- numeric
|
1020
1122
|
- symbolic
|
1123
|
+
- be_status
|
1021
1124
|
VersionAdded: '1.23'
|
1022
|
-
VersionChanged: '2.
|
1125
|
+
VersionChanged: '2.20'
|
1023
1126
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Rails/HttpStatus
|
1024
1127
|
|
1025
1128
|
RSpec/Rails/InferredSpecType:
|
@@ -1044,3 +1147,27 @@ RSpec/Rails/InferredSpecType:
|
|
1044
1147
|
routing: routing
|
1045
1148
|
system: system
|
1046
1149
|
views: view
|
1150
|
+
|
1151
|
+
RSpec/Rails/MinitestAssertions:
|
1152
|
+
Description: Check if using Minitest matchers.
|
1153
|
+
Enabled: pending
|
1154
|
+
VersionAdded: '2.17'
|
1155
|
+
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Rails/MinitestAssertions
|
1156
|
+
|
1157
|
+
RSpec/Rails/NegationBeValid:
|
1158
|
+
Description: Enforces use of `be_invalid` or `not_to` for negated be_valid.
|
1159
|
+
Safe: false
|
1160
|
+
EnforcedStyle: not_to
|
1161
|
+
SupportedStyles:
|
1162
|
+
- not_to
|
1163
|
+
- be_invalid
|
1164
|
+
Enabled: pending
|
1165
|
+
VersionAdded: '2.23'
|
1166
|
+
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Rails/NegationBeValid
|
1167
|
+
|
1168
|
+
RSpec/Rails/TravelAround:
|
1169
|
+
Description: Prefer to travel in `before` rather than `around`.
|
1170
|
+
Enabled: pending
|
1171
|
+
Safe: false
|
1172
|
+
VersionAdded: '2.19'
|
1173
|
+
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Rails/TravelAround
|
data/config/obsoletion.yml
CHANGED
@@ -12,3 +12,18 @@ changed_parameters:
|
|
12
12
|
parameters: IgnoredPatterns
|
13
13
|
alternative: AllowedPatterns
|
14
14
|
severity: warning
|
15
|
+
|
16
|
+
renamed:
|
17
|
+
RSpec/Capybara/CurrentPathExpectation: Capybara/CurrentPathExpectation
|
18
|
+
RSpec/Capybara/MatchStyle: Capybara/MatchStyle
|
19
|
+
RSpec/Capybara/NegationMatcher: Capybara/NegationMatcher
|
20
|
+
RSpec/Capybara/SpecificActions: Capybara/SpecificActions
|
21
|
+
RSpec/Capybara/SpecificFinders: Capybara/SpecificFinders
|
22
|
+
RSpec/Capybara/SpecificMatcher: Capybara/SpecificMatcher
|
23
|
+
RSpec/Capybara/VisibilityMatcher: Capybara/VisibilityMatcher
|
24
|
+
RSpec/FactoryBot/AttributeDefinedStatically: FactoryBot/AttributeDefinedStatically
|
25
|
+
RSpec/FactoryBot/ConsistentParenthesesStyle: FactoryBot/ConsistentParenthesesStyle
|
26
|
+
RSpec/FactoryBot/CreateList: FactoryBot/CreateList
|
27
|
+
RSpec/FactoryBot/FactoryClassName: FactoryBot/FactoryClassName
|
28
|
+
RSpec/FactoryBot/FactoryNameStyle: FactoryBot/FactoryNameStyle
|
29
|
+
RSpec/FactoryBot/SyntaxMethods: FactoryBot/SyntaxMethods
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module RSpec
|
6
|
+
# Prefer using `be_empty` when checking for an empty array.
|
7
|
+
#
|
8
|
+
# @example
|
9
|
+
# # bad
|
10
|
+
# expect(array).to contain_exactly
|
11
|
+
# expect(array).to match_array([])
|
12
|
+
#
|
13
|
+
# # good
|
14
|
+
# expect(array).to be_empty
|
15
|
+
#
|
16
|
+
class BeEmpty < Base
|
17
|
+
extend AutoCorrector
|
18
|
+
|
19
|
+
MSG = 'Use `be_empty` matchers for checking an empty array.'
|
20
|
+
RESTRICT_ON_SEND = %i[contain_exactly match_array].freeze
|
21
|
+
|
22
|
+
# @!method expect_array_matcher?(node)
|
23
|
+
def_node_matcher :expect_array_matcher?, <<~PATTERN
|
24
|
+
(send
|
25
|
+
(send nil? :expect _)
|
26
|
+
#Runners.all
|
27
|
+
${
|
28
|
+
(send nil? :match_array (array))
|
29
|
+
(send nil? :contain_exactly)
|
30
|
+
}
|
31
|
+
)
|
32
|
+
PATTERN
|
33
|
+
|
34
|
+
def on_send(node)
|
35
|
+
expect_array_matcher?(node.parent) do |expect|
|
36
|
+
add_offense(expect) do |corrector|
|
37
|
+
corrector.replace(expect, 'be_empty')
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -57,7 +57,7 @@ module RuboCop
|
|
57
57
|
return unless be_nil_matcher?(node)
|
58
58
|
|
59
59
|
add_offense(node, message: BE_MSG) do |corrector|
|
60
|
-
corrector.replace(node
|
60
|
+
corrector.replace(node, 'be(nil)')
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
@@ -65,7 +65,7 @@ module RuboCop
|
|
65
65
|
return unless nil_value_expectation?(node)
|
66
66
|
|
67
67
|
add_offense(node, message: BE_NIL_MSG) do |corrector|
|
68
|
-
corrector.replace(node
|
68
|
+
corrector.replace(node, 'be_nil')
|
69
69
|
end
|
70
70
|
end
|
71
71
|
end
|