rubocop-rspec 1.43.1 → 2.0.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.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +40 -4
  3. data/README.md +4 -0
  4. data/config/default.yml +141 -25
  5. data/lib/rubocop-rspec.rb +7 -8
  6. data/lib/rubocop/cop/rspec/align_left_let_brace.rb +7 -3
  7. data/lib/rubocop/cop/rspec/align_right_let_brace.rb +7 -3
  8. data/lib/rubocop/cop/rspec/around_block.rb +1 -1
  9. data/lib/rubocop/cop/rspec/base.rb +7 -54
  10. data/lib/rubocop/cop/rspec/be.rb +1 -1
  11. data/lib/rubocop/cop/rspec/capybara/current_path_expectation.rb +2 -2
  12. data/lib/rubocop/cop/rspec/capybara/feature_methods.rb +3 -2
  13. data/lib/rubocop/cop/rspec/describe_class.rb +33 -14
  14. data/lib/rubocop/cop/rspec/describe_method.rb +1 -1
  15. data/lib/rubocop/cop/rspec/described_class.rb +1 -2
  16. data/lib/rubocop/cop/rspec/described_class_module_wrapping.rb +1 -2
  17. data/lib/rubocop/cop/rspec/dialect.rb +1 -1
  18. data/lib/rubocop/cop/rspec/empty_example_group.rb +33 -38
  19. data/lib/rubocop/cop/rspec/empty_hook.rb +1 -1
  20. data/lib/rubocop/cop/rspec/empty_line_after_example.rb +1 -1
  21. data/lib/rubocop/cop/rspec/empty_line_after_example_group.rb +1 -1
  22. data/lib/rubocop/cop/rspec/empty_line_after_final_let.rb +1 -1
  23. data/lib/rubocop/cop/rspec/empty_line_after_hook.rb +1 -1
  24. data/lib/rubocop/cop/rspec/empty_line_after_subject.rb +2 -2
  25. data/lib/rubocop/cop/rspec/expect_actual.rb +1 -1
  26. data/lib/rubocop/cop/rspec/expect_in_hook.rb +1 -1
  27. data/lib/rubocop/cop/rspec/file_path.rb +2 -2
  28. data/lib/rubocop/cop/rspec/focus.rb +13 -7
  29. data/lib/rubocop/cop/rspec/hook_argument.rb +2 -4
  30. data/lib/rubocop/cop/rspec/hooks_before_examples.rb +2 -2
  31. data/lib/rubocop/cop/rspec/implicit_block_expectation.rb +1 -2
  32. data/lib/rubocop/cop/rspec/implicit_expect.rb +1 -1
  33. data/lib/rubocop/cop/rspec/instance_variable.rb +1 -1
  34. data/lib/rubocop/cop/rspec/leading_subject.rb +5 -1
  35. data/lib/rubocop/cop/rspec/let_before_examples.rb +2 -2
  36. data/lib/rubocop/cop/rspec/let_setup.rb +7 -4
  37. data/lib/rubocop/cop/rspec/message_spies.rb +1 -1
  38. data/lib/rubocop/cop/rspec/mixin/empty_line_separation.rb +51 -0
  39. data/lib/rubocop/cop/rspec/mixin/final_end_location.rb +19 -0
  40. data/lib/rubocop/cop/rspec/mixin/top_level_group.rb +54 -0
  41. data/lib/rubocop/cop/rspec/mixin/variable.rb +20 -0
  42. data/lib/rubocop/cop/rspec/multiple_describes.rb +1 -1
  43. data/lib/rubocop/cop/rspec/multiple_expectations.rb +1 -1
  44. data/lib/rubocop/cop/rspec/multiple_memoized_helpers.rb +3 -1
  45. data/lib/rubocop/cop/rspec/named_subject.rb +8 -12
  46. data/lib/rubocop/cop/rspec/nested_groups.rb +1 -1
  47. data/lib/rubocop/cop/rspec/overwriting_setup.rb +2 -1
  48. data/lib/rubocop/cop/rspec/pending.rb +13 -5
  49. data/lib/rubocop/cop/rspec/predicate_matcher.rb +3 -3
  50. data/lib/rubocop/cop/rspec/repeated_include_example.rb +104 -0
  51. data/lib/rubocop/cop/rspec/shared_context.rb +16 -6
  52. data/lib/rubocop/cop/rspec/shared_examples.rb +3 -1
  53. data/lib/rubocop/cop/rspec/stubbed_mock.rb +172 -0
  54. data/lib/rubocop/cop/rspec/subject_stub.rb +6 -6
  55. data/lib/rubocop/cop/rspec/variable_definition.rb +1 -1
  56. data/lib/rubocop/cop/rspec/variable_name.rb +1 -1
  57. data/lib/rubocop/cop/rspec_cops.rb +2 -1
  58. data/lib/rubocop/rspec/align_let_brace.rb +1 -1
  59. data/lib/rubocop/rspec/concept.rb +2 -2
  60. data/lib/rubocop/rspec/config_formatter.rb +3 -3
  61. data/lib/rubocop/rspec/corrector/move_node.rb +1 -1
  62. data/lib/rubocop/rspec/example_group.rb +15 -5
  63. data/lib/rubocop/rspec/hook.rb +2 -6
  64. data/lib/rubocop/rspec/inject.rb +4 -2
  65. data/lib/rubocop/rspec/language.rb +144 -105
  66. data/lib/rubocop/rspec/language/node_pattern.rb +7 -24
  67. data/lib/rubocop/rspec/version.rb +1 -1
  68. metadata +25 -13
  69. data/lib/rubocop/cop/rspec/cop.rb +0 -10
  70. data/lib/rubocop/cop/rspec/invalid_predicate_matcher.rb +0 -41
  71. data/lib/rubocop/rspec.rb +0 -12
  72. data/lib/rubocop/rspec/empty_line_separation.rb +0 -48
  73. data/lib/rubocop/rspec/final_end_location.rb +0 -17
  74. data/lib/rubocop/rspec/top_level_describe.rb +0 -52
  75. data/lib/rubocop/rspec/top_level_group.rb +0 -57
  76. data/lib/rubocop/rspec/variable.rb +0 -16
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f4a711b9695e84aeeb5dd5775251d1de3bb4e2517e4d9489e4fe8df85095be2d
4
- data.tar.gz: 7f45719f6b6f89106003d5af2b4f4add6374b0d558220d9eb10974e9d944a043
3
+ metadata.gz: 53f24b40715eb1f00efa9978b77383037e8c9d61d13c23b068928b05043430ca
4
+ data.tar.gz: 2d295003c7eefe76dfc7ca0f29711313b8b18b9c8579ce4464a47b47f412b54e
5
5
  SHA512:
6
- metadata.gz: 25069ce548603cbea393b93ac9047b3356b3dea575f2007a3f385a88c27c7112f127b3871ea0472fa45a207c08e9d41fb0e9e5702aaa1cb9bb4de21093257212
7
- data.tar.gz: 74e4fcf11b03a47c29ef8959fef7faa44215d3177c7184e2e2473f24a9b8cffa3eb71f6e42c9dc8610b159813c63ccde4f17f5a9d858b686082893d8d006ceba
6
+ metadata.gz: 15221270a01b2a273708d0e0fd3c35b52a9e40f87f672b2c4b7b547c55df0415394c7d762e4255406553ab26e0432d9a610d38a36d9fa92dddec47209428c856
7
+ data.tar.gz: 7bbcba195d894aa24d2985444421042314dd018f931763164502ee511c857d3010c074e8206f0af777e99b13ac668d1a32e03a8aefaa8dc38b3714c95ceb9555
@@ -1,7 +1,39 @@
1
- # Change log
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
+
14
+ ## 2.0.0.pre (2020-10-22)
15
+
16
+ * Update RuboCop dependency to v1.0.0. ([@bquorning][])
17
+ * Change namespace of several cops (`Capybara/*` -> `RSpec/Capybara/*`, `FactoryBot/*` -> `RSpec/FactoryBot/*`, `Rails/*` -> `RSpec/Rails/*`). ([@pirj][], [@bquorning][])
18
+
19
+ ## 1.44.1 (2020-10-20)
20
+
21
+ * Relax `rubocop-ast` version constraint. ([@PhilCoggins][])
22
+
23
+ ## 1.44.0 (2020-10-20)
24
+
25
+ * Move our documentation from rubocop-rspec.readthedocs.io to docs.rubocop.org/rubocop-rspec. ([@bquorning][])
26
+ * Add `RSpec/RepeatedIncludeExample` cop. ([@biinari][])
27
+ * Add `RSpec/StubbedMock` cop. ([@bquorning][], [@pirj][])
28
+ * Add `IgnoredMetadata` configuration option to `RSpec/DescribeClass`. ([@Rafix02][])
29
+ * Fix false positives in `RSpec/EmptyExampleGroup`. ([@pirj][])
30
+ * Fix a false positive for `RSpec/EmptyExampleGroup` when example is defined in an `if` branch. ([@koic][])
31
+
32
+ ## 1.43.2 (2020-08-25)
33
+
34
+ * Fix `RSpec/FilePath` when checking a file with a shared example. ([@pirj][])
35
+ * Fix subject nesting detection in `RSpec/LeadingSubject`. ([@pirj][])
36
+
5
37
  ## 1.43.1 (2020-08-17)
6
38
 
7
39
  * Fix `RSpec/FilePath` when checking a file defining e.g. an empty class. ([@bquorning][])
@@ -501,8 +533,8 @@ Compatibility release so users can upgrade RuboCop to 0.51.0. No new features.
501
533
  [@rspeicher]: https://github.com/rspeicher
502
534
  [@jonatas]: https://github.com/jonatas
503
535
  [@pocke]: https://github.com/pocke
504
- [@bmorrall]: https:/github.com/bmorrall
505
- [@zverok]: https:/github.com/zverok
536
+ [@bmorrall]: https://github.com/bmorrall
537
+ [@zverok]: https://github.com/zverok
506
538
  [@timrogers]: https://github.com/timrogers
507
539
  [@yevhene]: https://github.com/yevhene
508
540
  [@walf443]: https://github.com/walf443
@@ -547,6 +579,10 @@ Compatibility release so users can upgrade RuboCop to 0.51.0. No new features.
547
579
  [@andrykonchin]: https://github.com/andrykonchin
548
580
  [@harrylewis]: https://github.com/harrylewis
549
581
  [@elliterate]: https://github.com/elliterate
550
- [@mlarraz]: https://github.com/mlarraz
551
582
  [@jtannas]: https://github.com/jtannas
552
583
  [@mockdeep]: https://github.com/mockdeep
584
+ [@biinari]: https://github.com/biinari
585
+ [@koic]: https://github.com/koic
586
+ [@Rafix02]: https://github.com/Rafix02
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
@@ -1,14 +1,85 @@
1
1
  ---
2
- AllCops:
3
- RSpec:
4
- Patterns:
5
- - _spec.rb
6
- - "(?:^|/)spec/"
7
- RSpec/FactoryBot:
8
- Patterns:
9
- - spec/factories.rb
10
- - spec/factories/**/*.rb
11
- - features/support/factories/**/*.rb
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.
@@ -76,7 +147,23 @@ RSpec/ContextWording:
76
147
  RSpec/DescribeClass:
77
148
  Description: Check that the first argument to the top-level describe is a constant.
78
149
  Enabled: true
150
+ IgnoredMetadata:
151
+ type:
152
+ - channel
153
+ - controller
154
+ - helper
155
+ - job
156
+ - mailer
157
+ - model
158
+ - request
159
+ - routing
160
+ - view
161
+ - feature
162
+ - system
163
+ - mailbox
164
+ - aruba
79
165
  VersionAdded: '1.0'
166
+ VersionChanged: '1.44'
80
167
  StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/DescribeClass
81
168
 
82
169
  RSpec/DescribeMethod:
@@ -120,8 +207,8 @@ RSpec/Dialect:
120
207
  RSpec/EmptyExampleGroup:
121
208
  Description: Checks if an example group does not include any tests.
122
209
  Enabled: true
123
- CustomIncludeMethods: []
124
210
  VersionAdded: '1.7'
211
+ VersionChanged: '2.0'
125
212
  StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/EmptyExampleGroup
126
213
 
127
214
  RSpec/EmptyHook:
@@ -225,6 +312,9 @@ RSpec/ExpectOutput:
225
312
  RSpec/FilePath:
226
313
  Description: Checks that spec file paths are consistent and well-formed.
227
314
  Enabled: true
315
+ Include:
316
+ - "**/*_spec*rb*"
317
+ - "**/spec/**/*"
228
318
  CustomTransform:
229
319
  RuboCop: rubocop
230
320
  RSpec: rspec
@@ -299,12 +389,6 @@ RSpec/InstanceVariable:
299
389
  VersionChanged: '1.7'
300
390
  StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/InstanceVariable
301
391
 
302
- RSpec/InvalidPredicateMatcher:
303
- Description: Checks invalid usage for predicate matcher.
304
- Enabled: true
305
- VersionAdded: '1.16'
306
- StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/InvalidPredicateMatcher
307
-
308
392
  RSpec/ItBehavesLike:
309
393
  Description: Checks that only one `it_behaves_like` style is used.
310
394
  Enabled: true
@@ -494,6 +578,12 @@ RSpec/RepeatedExampleGroupDescription:
494
578
  VersionAdded: '1.38'
495
579
  StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/RepeatedExampleGroupDescription
496
580
 
581
+ RSpec/RepeatedIncludeExample:
582
+ Description: Check for repeated include of shared examples.
583
+ Enabled: true
584
+ VersionAdded: '1.44'
585
+ StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/RepeatedIncludeExample
586
+
497
587
  RSpec/ReturnFromStub:
498
588
  Description: Checks for consistent style of stub's return setting.
499
589
  Enabled: true
@@ -537,6 +627,12 @@ RSpec/SingleArgumentMessageChain:
537
627
  VersionChanged: '1.10'
538
628
  StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/SingleArgumentMessageChain
539
629
 
630
+ RSpec/StubbedMock:
631
+ Description: Checks that message expectations do not have a configured response.
632
+ Enabled: true
633
+ VersionAdded: '1.44'
634
+ StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/StubbedMock
635
+
540
636
  RSpec/SubjectStub:
541
637
  Description: Checks for stubbed test subjects.
542
638
  Enabled: true
@@ -592,49 +688,68 @@ RSpec/Yield:
592
688
  VersionAdded: '1.32'
593
689
  StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Yield
594
690
 
595
- Capybara/CurrentPathExpectation:
691
+ RSpec/Capybara/CurrentPathExpectation:
596
692
  Description: Checks that no expectations are set on Capybara's `current_path`.
597
693
  Enabled: true
598
694
  VersionAdded: '1.18'
695
+ VersionChanged: '2.0'
599
696
  StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Capybara/CurrentPathExpectation
600
697
 
601
- Capybara/FeatureMethods:
698
+ RSpec/Capybara/FeatureMethods:
602
699
  Description: Checks for consistent method usage in feature specs.
603
700
  Enabled: true
604
701
  EnabledMethods: []
605
702
  VersionAdded: '1.17'
606
- VersionChanged: '1.25'
703
+ VersionChanged: '2.0'
607
704
  StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Capybara/FeatureMethods
608
705
 
609
- Capybara/VisibilityMatcher:
706
+ RSpec/Capybara/VisibilityMatcher:
610
707
  Description: Checks for boolean visibility in capybara finders.
611
708
  Enabled: true
612
709
  VersionAdded: '1.39'
710
+ VersionChanged: '2.0'
613
711
  StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Capybara/VisibilityMatcher
614
712
 
615
- FactoryBot/AttributeDefinedStatically:
713
+ RSpec/FactoryBot/AttributeDefinedStatically:
616
714
  Description: Always declare attribute values as blocks.
617
715
  Enabled: true
716
+ Include:
717
+ - spec/factories.rb
718
+ - spec/factories/**/*.rb
719
+ - features/support/factories/**/*.rb
618
720
  VersionAdded: '1.28'
721
+ VersionChanged: '2.0'
619
722
  StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/FactoryBot/AttributeDefinedStatically
620
723
 
621
- FactoryBot/CreateList:
724
+ RSpec/FactoryBot/CreateList:
622
725
  Description: Checks for create_list usage.
623
726
  Enabled: true
727
+ Include:
728
+ - "**/*_spec.rb"
729
+ - "**/spec/**/*"
730
+ - spec/factories.rb
731
+ - spec/factories/**/*.rb
732
+ - features/support/factories/**/*.rb
624
733
  EnforcedStyle: create_list
625
734
  SupportedStyles:
626
735
  - create_list
627
736
  - n_times
628
737
  VersionAdded: '1.25'
738
+ VersionChanged: '2.0'
629
739
  StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/FactoryBot/CreateList
630
740
 
631
- FactoryBot/FactoryClassName:
741
+ RSpec/FactoryBot/FactoryClassName:
632
742
  Description: Use string value when setting the class attribute explicitly.
633
743
  Enabled: true
744
+ Include:
745
+ - spec/factories.rb
746
+ - spec/factories/**/*.rb
747
+ - features/support/factories/**/*.rb
634
748
  VersionAdded: '1.37'
749
+ VersionChanged: '2.0'
635
750
  StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/FactoryBot/FactoryClassName
636
751
 
637
- Rails/HttpStatus:
752
+ RSpec/Rails/HttpStatus:
638
753
  Description: Enforces use of symbolic or numeric value to describe HTTP status.
639
754
  Enabled: true
640
755
  EnforcedStyle: symbolic
@@ -642,4 +757,5 @@ Rails/HttpStatus:
642
757
  - numeric
643
758
  - symbolic
644
759
  VersionAdded: '1.23'
760
+ VersionChanged: '2.0'
645
761
  StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Rails/HttpStatus
@@ -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/top_level_group'
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
@@ -31,7 +31,7 @@ module RuboCop
31
31
  'or `%<arg>s.run`.'
32
32
 
33
33
  def_node_matcher :hook, <<-PATTERN
34
- (block {(send nil? :around) (send nil? :around sym)} (args $...) ...)
34
+ (block (send nil? :around sym ?) (args $...) ...)
35
35
  PATTERN
36
36
 
37
37
  def_node_search :find_arg_usage, <<-PATTERN
@@ -4,69 +4,22 @@ 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
- include RuboCop::RSpec::Language::NodePattern
9
+ extend RuboCop::RSpec::Language::NodePattern
23
10
 
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
- )
11
+ exclude_from_registry
31
12
 
32
13
  # Invoke the original inherited hook so our cops are recognized
33
14
  def self.inherited(subclass) # rubocop:disable Lint/MissingSuper
34
15
  RuboCop::Cop::Base.inherited(subclass)
35
16
  end
36
17
 
37
- def relevant_file?(file)
38
- relevant_rubocop_rspec_file?(file) && super
39
- end
40
-
41
- private
42
-
43
- def relevant_rubocop_rspec_file?(file)
44
- rspec_pattern.match?(file)
45
- end
46
-
47
- def rspec_pattern
48
- if rspec_pattern_config?
49
- Regexp.union(rspec_pattern_config.map(&Regexp.public_method(:new)))
50
- else
51
- DEFAULT_PATTERN_RE
52
- end
53
- end
54
-
55
- def all_cops_config
56
- config
57
- .for_all_cops
58
- end
59
-
60
- def rspec_pattern_config?
61
- return unless all_cops_config.key?('RSpec')
62
-
63
- all_cops_config.fetch('RSpec').key?('Patterns')
64
- end
65
-
66
- def rspec_pattern_config
67
- all_cops_config
68
- .fetch('RSpec', DEFAULT_CONFIGURATION)
69
- .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']
70
23
  end
71
24
  end
72
25
  end