rubocop-rspec 1.43.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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