rubocop-rspec 2.11.1 → 2.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +125 -81
- data/config/default.yml +59 -6
- data/lib/rubocop/cop/rspec/align_left_let_brace.rb +8 -9
- data/lib/rubocop/cop/rspec/align_right_let_brace.rb +8 -9
- data/lib/rubocop/cop/rspec/any_instance.rb +1 -0
- data/lib/rubocop/cop/rspec/around_block.rb +26 -3
- data/lib/rubocop/cop/rspec/be.rb +0 -1
- data/lib/rubocop/cop/rspec/be_eq.rb +0 -1
- data/lib/rubocop/cop/rspec/be_eql.rb +0 -1
- data/lib/rubocop/cop/rspec/before_after_all.rb +1 -0
- data/lib/rubocop/cop/rspec/capybara/current_path_expectation.rb +9 -3
- data/lib/rubocop/cop/rspec/capybara/feature_methods.rb +2 -1
- data/lib/rubocop/cop/rspec/capybara/specific_finders.rb +86 -0
- data/lib/rubocop/cop/rspec/capybara/specific_matcher.rb +158 -0
- data/lib/rubocop/cop/rspec/capybara/visibility_matcher.rb +0 -1
- data/lib/rubocop/cop/rspec/change_by_zero.rb +67 -7
- data/lib/rubocop/cop/rspec/class_check.rb +101 -0
- data/lib/rubocop/cop/rspec/context_method.rb +2 -1
- data/lib/rubocop/cop/rspec/context_wording.rb +49 -18
- data/lib/rubocop/cop/rspec/describe_class.rb +1 -1
- data/lib/rubocop/cop/rspec/describe_method.rb +1 -0
- data/lib/rubocop/cop/rspec/described_class.rb +5 -15
- data/lib/rubocop/cop/rspec/dialect.rb +1 -0
- data/lib/rubocop/cop/rspec/empty_example_group.rb +19 -4
- data/lib/rubocop/cop/rspec/empty_hook.rb +4 -5
- data/lib/rubocop/cop/rspec/empty_line_after_example.rb +4 -9
- data/lib/rubocop/cop/rspec/empty_line_after_example_group.rb +1 -1
- data/lib/rubocop/cop/rspec/empty_line_after_final_let.rb +2 -1
- data/lib/rubocop/cop/rspec/empty_line_after_hook.rb +32 -2
- data/lib/rubocop/cop/rspec/empty_line_after_subject.rb +2 -1
- data/lib/rubocop/cop/rspec/example_length.rb +3 -2
- data/lib/rubocop/cop/rspec/example_without_description.rb +3 -2
- data/lib/rubocop/cop/rspec/example_wording.rb +2 -1
- data/lib/rubocop/cop/rspec/excessive_docstring_spacing.rb +1 -0
- data/lib/rubocop/cop/rspec/expect_actual.rb +5 -0
- data/lib/rubocop/cop/rspec/expect_change.rb +9 -9
- data/lib/rubocop/cop/rspec/expect_in_hook.rb +4 -1
- data/lib/rubocop/cop/rspec/expect_output.rb +1 -0
- data/lib/rubocop/cop/rspec/factory_bot/attribute_defined_statically.rb +2 -1
- data/lib/rubocop/cop/rspec/factory_bot/create_list.rb +50 -13
- data/lib/rubocop/cop/rspec/factory_bot/factory_class_name.rb +1 -0
- data/lib/rubocop/cop/rspec/factory_bot/syntax_methods.rb +1 -1
- data/lib/rubocop/cop/rspec/file_path.rb +8 -4
- data/lib/rubocop/cop/rspec/focus.rb +20 -4
- data/lib/rubocop/cop/rspec/hook_argument.rb +10 -5
- data/lib/rubocop/cop/rspec/hooks_before_examples.rb +10 -9
- data/lib/rubocop/cop/rspec/identical_equality_assertion.rb +0 -1
- data/lib/rubocop/cop/rspec/implicit_block_expectation.rb +1 -0
- data/lib/rubocop/cop/rspec/implicit_expect.rb +1 -3
- data/lib/rubocop/cop/rspec/instance_spy.rb +1 -1
- data/lib/rubocop/cop/rspec/instance_variable.rb +0 -1
- data/lib/rubocop/cop/rspec/it_behaves_like.rb +3 -2
- data/lib/rubocop/cop/rspec/iterated_expectation.rb +16 -0
- data/lib/rubocop/cop/rspec/leading_subject.rb +15 -15
- data/lib/rubocop/cop/rspec/leaky_constant_declaration.rb +1 -1
- data/lib/rubocop/cop/rspec/let_before_examples.rb +7 -8
- data/lib/rubocop/cop/rspec/let_setup.rb +4 -4
- data/lib/rubocop/cop/rspec/message_chain.rb +1 -1
- data/lib/rubocop/cop/rspec/message_expectation.rb +1 -1
- data/lib/rubocop/cop/rspec/message_spies.rb +7 -1
- data/lib/rubocop/cop/rspec/missing_example_group_argument.rb +2 -1
- data/lib/rubocop/cop/rspec/mixin/css_selector.rb +99 -0
- data/lib/rubocop/cop/rspec/mixin/empty_line_separation.rb +13 -4
- data/lib/rubocop/cop/rspec/mixin/namespace.rb +23 -0
- data/lib/rubocop/cop/rspec/multiple_describes.rb +1 -0
- data/lib/rubocop/cop/rspec/multiple_expectations.rb +19 -3
- data/lib/rubocop/cop/rspec/multiple_memoized_helpers.rb +1 -3
- data/lib/rubocop/cop/rspec/multiple_subjects.rb +17 -2
- data/lib/rubocop/cop/rspec/named_subject.rb +2 -1
- data/lib/rubocop/cop/rspec/nested_groups.rb +45 -25
- data/lib/rubocop/cop/rspec/no_expectation_example.rb +64 -0
- data/lib/rubocop/cop/rspec/not_to_not.rb +13 -1
- data/lib/rubocop/cop/rspec/overwriting_setup.rb +2 -1
- data/lib/rubocop/cop/rspec/pending.rb +1 -0
- data/lib/rubocop/cop/rspec/predicate_matcher.rb +2 -1
- data/lib/rubocop/cop/rspec/rails/avoid_setup_hook.rb +1 -2
- data/lib/rubocop/cop/rspec/rails/have_http_status.rb +47 -0
- data/lib/rubocop/cop/rspec/receive_counts.rb +14 -15
- data/lib/rubocop/cop/rspec/receive_never.rb +4 -5
- data/lib/rubocop/cop/rspec/repeated_description.rb +25 -26
- data/lib/rubocop/cop/rspec/repeated_example.rb +1 -1
- data/lib/rubocop/cop/rspec/repeated_example_group_body.rb +28 -29
- data/lib/rubocop/cop/rspec/repeated_example_group_description.rb +28 -29
- data/lib/rubocop/cop/rspec/repeated_include_example.rb +32 -33
- data/lib/rubocop/cop/rspec/return_from_stub.rb +12 -12
- data/lib/rubocop/cop/rspec/scattered_let.rb +1 -5
- data/lib/rubocop/cop/rspec/scattered_setup.rb +2 -2
- data/lib/rubocop/cop/rspec/shared_context.rb +1 -1
- data/lib/rubocop/cop/rspec/stubbed_mock.rb +0 -1
- data/lib/rubocop/cop/rspec/subject_declaration.rb +0 -1
- data/lib/rubocop/cop/rspec/subject_stub.rb +2 -2
- data/lib/rubocop/cop/rspec/unspecified_exception.rb +15 -15
- data/lib/rubocop/cop/rspec/variable_definition.rb +1 -0
- data/lib/rubocop/cop/rspec/variable_name.rb +6 -7
- data/lib/rubocop/cop/rspec/verified_doubles.rb +1 -0
- data/lib/rubocop/cop/rspec/void_expect.rb +2 -1
- data/lib/rubocop/cop/rspec/yield.rb +3 -2
- data/lib/rubocop/cop/rspec_cops.rb +5 -0
- data/lib/rubocop/rspec/config_formatter.rb +14 -3
- data/lib/rubocop/rspec/inject.rb +1 -3
- data/lib/rubocop/rspec/language/node_pattern.rb +4 -0
- data/lib/rubocop/rspec/language.rb +6 -1
- data/lib/rubocop/rspec/node.rb +1 -1
- data/lib/rubocop/rspec/version.rb +1 -1
- data/lib/rubocop/rspec/wording.rb +2 -2
- data/lib/rubocop/rspec.rb +14 -0
- data/lib/rubocop-rspec.rb +3 -0
- metadata +12 -88
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 31d7e881e40be6a9b27f78f77789f1ecc5056bb073f5028a5c3dc0c6e1fe81ad
|
4
|
+
data.tar.gz: 7ad05e5a9ecfa1230aabfa54c7e6f9d7649f428017c405a9ed68d4da95218dd2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dfa4fca8f641da881b6014b91f5df8678af96c60e937339a81a64efd0bd87859ddc5876f977a995ae52a844e88bd53d46d50e0b37fd933b37e18da830991f245
|
7
|
+
data.tar.gz: f7779621a7c6fc6e33bf47b6823cfe7c4be08cc0f32ac02465cd4cbe35a1b8d4ed280a71c33f6fcfd7195a65191f68c9f9c13cdb0f8624a0a3e80be56af4dd50
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,44 @@
|
|
2
2
|
|
3
3
|
## Master (Unreleased)
|
4
4
|
|
5
|
+
## 2.13.0 (2022-09-12)
|
6
|
+
|
7
|
+
* Fix `RSpec/FilePath` cop missing mismatched expanded namespace. ([@sl4vr][])
|
8
|
+
* Add new `AllowConsecutiveOneLiners` (default true) option for `Rspec/EmptyLineAfterHook` cop. ([@ngouy][])
|
9
|
+
* Add autocorrect support for `RSpec/EmptyExampleGroup`. ([@r7kamura][])
|
10
|
+
* Fix `RSpec/ChangeByZero` with compound expressions using `&` or `|` operators. ([@BrianHawley][])
|
11
|
+
* Add `RSpec/NoExpectationExample`. ([@r7kamura][])
|
12
|
+
* Add some expectation methods to default configuration. ([@r7kamura][])
|
13
|
+
* Fix a false positive for `RSpec/Capybara/SpecificMatcher`. ([@ydah][])
|
14
|
+
* Fix a false negative for `RSpec/Capybara/SpecificMatcher` for `have_field`. ([@ydah][])
|
15
|
+
* Fix a false positive for `RSpec/Capybara/SpecificMatcher` when may not have a `href` by `have_link`. ([@ydah][])
|
16
|
+
* Add `NegatedMatcher` configuration option to `RSpec/ChangeByZero`. ([@ydah][])
|
17
|
+
* Add new `RSpec/Capybara/SpecificFinders` cop. ([@ydah][])
|
18
|
+
* Add support for numblocks to `RSpec/AroundBlock`, `RSpec/EmptyLineAfterHook`, `RSpec/ExpectInHook`, `RSpec/HookArgument`, `RSpec/HooksBeforeExamples`, `RSpec/IteratedExpectation`, and `RSpec/NoExpectationExample`. ([@ydah][])
|
19
|
+
* Fix incorrect documentation URLs when using `rubocop --show-docs-url`. ([@r7kamura][])
|
20
|
+
* Add `AllowedGroups` configuration option to `RSpec/NestedGroups`. ([@ydah][])
|
21
|
+
* Deprecate `IgnoredPatterns` option in favor of the `AllowedPatterns` options. ([@ydah][])
|
22
|
+
* Add `AllowedPatterns` configuration option to `RSpec/ContextWording`. ([@ydah][])
|
23
|
+
* Add `RSpec/ClassCheck` cop. ([@r7kamura][])
|
24
|
+
* Fix a false positive for `RSpec/Capybara/SpecificMatcher` when pseudo-classes. ([@ydah][])
|
25
|
+
* Fix a false negative for `RSpec/SubjectStub` when the subject is declared with the `subject!` method and called by name. ([@eikes][])
|
26
|
+
* Support `Array.new(n)` on `RSpec/FactoryBot/CreateList` cop. ([@r7kamura][])
|
27
|
+
|
28
|
+
## 2.12.1 (2022-07-03)
|
29
|
+
|
30
|
+
* Fix a false positive for `RSpec/Capybara/SpecificMatcher`. ([@ydah][])
|
31
|
+
|
32
|
+
## 2.12.0 (2022-07-02)
|
33
|
+
|
34
|
+
* Fix incorrect path suggested by `RSpec/FilePath` cop when second argument contains spaces. ([@tejasbubane][])
|
35
|
+
* Fix autocorrect for EmptyLineSeparation. ([@johnny-miyake][])
|
36
|
+
* Add new `RSpec/Capybara/SpecificMatcher` cop. ([@ydah][])
|
37
|
+
* Fixed false offense detection in `FactoryBot/CreateList` when a n.times block is including method calls in the factory create arguments. ([@ngouy][])
|
38
|
+
* Fix error in `RSpec/RSpec/FactoryBot/CreateList` cop for empty block. ([@tejasbubane][])
|
39
|
+
* Update `RSpec/MultipleExpectations` cop documentation with examples of aggregate_failures use. ([@edgibbs][])
|
40
|
+
* Declare autocorrect as unsafe for `RSpec/VerifiedDoubleReference`. ([@Drowze][])
|
41
|
+
* Add new `RSpec/Rails/HaveHttpStatus` cop. ([@akiomik][])
|
42
|
+
|
5
43
|
## 2.11.1 (2022-05-18)
|
6
44
|
|
7
45
|
* Fix a regression in `RSpec/ExpectChange` flagging chained method calls. ([@pirj][])
|
@@ -588,109 +626,115 @@ Compatibility release so users can upgrade RuboCop to 0.51.0. No new features.
|
|
588
626
|
* Split `UnitSpecNaming` cop into `RSpecDescribeClass`, `RSpecDescribeMethod` and `RSpecFileName` and enabled them all by default. ([@geniou][])
|
589
627
|
* Add `RSpecExampleWording` cop to prevent to use of should at the beginning of the spec description. ([@geniou][])
|
590
628
|
* Fix `RSpecFileName` cop for non-class specs. ([@geniou][])
|
591
|
-
* Adapt `RSpecFileName` cop to
|
629
|
+
* Adapt `RSpecFileName` cop to common naming convention and skip spec with multiple top level describes. ([@geniou][])
|
592
630
|
* Add `RSpecMultipleDescribes` cop to check for multiple top level describes. ([@geniou][])
|
593
631
|
* Add `RSpecDescribedClass` to promote the use of `described_class`. ([@geniou][])
|
594
632
|
* Add `RSpecInstanceVariable` cop to check for the usage of instance variables. ([@geniou][])
|
595
633
|
|
596
|
-
<!-- Contributors -->
|
634
|
+
<!-- Contributors (alphabetically) -->
|
597
635
|
|
636
|
+
[@abrom]: https://github.com/abrom
|
637
|
+
[@ahukkanen]: https://github.com/ahukkanen
|
638
|
+
[@akiomik]: https://github.com/akiomik
|
639
|
+
[@AlexWayfer]: https://github.com/AlexWayfer
|
640
|
+
[@andrykonchin]: https://github.com/andrykonchin
|
598
641
|
[@andyw8]: https://github.com/andyw8
|
642
|
+
[@anthony-robin]: https://github.com/anthony-robin
|
643
|
+
[@aried3r]: https://github.com/aried3r
|
644
|
+
[@baberthal]: https://github.com/baberthal
|
599
645
|
[@backus]: https://github.com/backus
|
646
|
+
[@biinari]: https://github.com/biinari
|
647
|
+
[@bmorrall]: https://github.com/bmorrall
|
600
648
|
[@bquorning]: https://github.com/bquorning
|
649
|
+
[@BrentWheeldon]: https://github.com/BrentWheeldon
|
650
|
+
[@BrianHawley]: https://github.com/BrianHawley
|
651
|
+
[@cfabianski]: https://github.com/cfabianski
|
652
|
+
[@clupprich]: https://github.com/clupprich
|
653
|
+
[@composerinteralia]: https://github.com/composerinteralia
|
654
|
+
[@Darhazer]: https://github.com/Darhazer
|
655
|
+
[@daveworth]: https://github.com/daveworth
|
656
|
+
[@dduugg]: https://github.com/dduugg
|
601
657
|
[@deivid-rodriguez]: https://github.com/deivid-rodriguez
|
658
|
+
[@dgollahon]: https://github.com/dgollahon
|
659
|
+
[@Drowze]: https://github.com/Drowze
|
660
|
+
[@dswij]: https://github.com/dswij
|
661
|
+
[@dvandersluis]: https://github.com/dvandersluis
|
662
|
+
[@edgibbs]: https://github.com/edgibbs
|
663
|
+
[@eikes]: https://github.com/eikes
|
664
|
+
[@eitoball]: https://github.com/eitoball
|
665
|
+
[@elebow]: https://github.com/elebow
|
666
|
+
[@EliseFitz15]: https://github.com/EliseFitz15
|
667
|
+
[@elliterate]: https://github.com/elliterate
|
668
|
+
[@foton]: https://github.com/foton
|
669
|
+
[@francois-ferrandis]: https://github.com/francois-ferrandis
|
670
|
+
[@G-Rath]: https://github.com/G-Rath
|
602
671
|
[@geniou]: https://github.com/geniou
|
672
|
+
[@gsamokovarov]: https://github.com/gsamokovarov
|
673
|
+
[@harry-graham]: https://github.com/harry-graham
|
674
|
+
[@harrylewis]: https://github.com/harrylewis
|
675
|
+
[@hosamaly]: https://github.com/hosamaly
|
603
676
|
[@jaredbeck]: https://github.com/jaredbeck
|
604
|
-
[@jawshooah]: https://github.com/jawshooah
|
605
|
-
[@nevir]: https://github.com/nevir
|
606
|
-
[@nijikon]: https://github.com/nijikon
|
607
|
-
[@pstengel]: https://github.com/pstengel
|
608
|
-
[@miguelfteixeira]: https://github.com/miguelfteixeira
|
609
|
-
[@mlarraz]: https://github.com/mlarraz
|
610
|
-
[@renanborgescampos]: https://github.com/renanborgescampos
|
611
677
|
[@jaredmoody]: https://github.com/jaredmoody
|
612
|
-
[@baberthal]: https://github.com/baberthal
|
613
678
|
[@jeffreyc]: https://github.com/jeffreyc
|
614
|
-
[@
|
615
|
-
[@
|
616
|
-
[@Darhazer]: https://github.com/Darhazer
|
617
|
-
[@redross]: https://github.com/redross
|
618
|
-
[@cfabianski]: https://github.com/cfabianski
|
619
|
-
[@dgollahon]: https://github.com/dgollahon
|
620
|
-
[@rspeicher]: https://github.com/rspeicher
|
621
|
-
[@jonatas]: https://github.com/jonatas
|
622
|
-
[@pocke]: https://github.com/pocke
|
623
|
-
[@bmorrall]: https://github.com/bmorrall
|
624
|
-
[@zverok]: https://github.com/zverok
|
625
|
-
[@timrogers]: https://github.com/timrogers
|
626
|
-
[@yevhene]: https://github.com/yevhene
|
627
|
-
[@walf443]: https://github.com/walf443
|
628
|
-
[@pirj]: https://github.com/pirj
|
629
|
-
[@telmofcosta]: https://github.com/telmofcosta
|
630
|
-
[@EliseFitz15]: https://github.com/EliseFitz15
|
631
|
-
[@anthony-robin]: https://github.com/anthony-robin
|
679
|
+
[@jfragoulis]: https://github.com/jfragoulis
|
680
|
+
[@johnny-miyake]: https://github.com/johnny-miyake
|
632
681
|
[@jojos003]: https://github.com/jojos003
|
633
|
-
[@
|
634
|
-
[@
|
635
|
-
[@
|
636
|
-
[@
|
637
|
-
[@
|
638
|
-
[@
|
639
|
-
[@
|
640
|
-
[@
|
641
|
-
[@
|
642
|
-
[@
|
682
|
+
[@jonatas]: https://github.com/jonatas
|
683
|
+
[@jtannas]: https://github.com/jtannas
|
684
|
+
[@kellysutton]: https://github.com/kellysutton
|
685
|
+
[@koic]: https://github.com/koic
|
686
|
+
[@lazycoder9]: https://github.com/lazycoder9
|
687
|
+
[@leoarnold]: https://github.com/leoarnold
|
688
|
+
[@lokhi]: https://github.com/lokhi
|
689
|
+
[@luke-hill]: https://github.com/luke-hill
|
690
|
+
[@M-Yamashita01]: https://github.com/M-Yamashita01
|
691
|
+
[@miguelfteixeira]: https://github.com/miguelfteixeira
|
643
692
|
[@mkenyon]: https://github.com/mkenyon
|
644
|
-
[@
|
645
|
-
[@
|
646
|
-
[@
|
693
|
+
[@mkrawc]: https://github.com/mkrawc
|
694
|
+
[@mlarraz]: https://github.com/mlarraz
|
695
|
+
[@mockdeep]: https://github.com/mockdeep
|
696
|
+
[@MothOnMars]: https://github.com/MothOnMars
|
647
697
|
[@nc-holodakg]: https://github.com/nc-holodakg
|
648
|
-
[@
|
698
|
+
[@nevir]: https://github.com/nevir
|
699
|
+
[@ngouy]: https://github.com/ngouy
|
649
700
|
[@nickcampbell18]: https://github.com/nickcampbell18
|
701
|
+
[@nijikon]: https://github.com/nijikon
|
702
|
+
[@onk]: https://github.com/onk
|
703
|
+
[@onumis]: https://github.com/onumis
|
704
|
+
[@oshiro3]: https://github.com/oshiro3
|
705
|
+
[@patrickomatic]: https://github.com/patrickomatic
|
706
|
+
[@paydaylight]: https://github.com/paydaylight
|
707
|
+
[@PhilCoggins]: https://github.com/PhilCoggins
|
708
|
+
[@pirj]: https://github.com/pirj
|
709
|
+
[@pocke]: https://github.com/pocke
|
710
|
+
[@pstengel]: https://github.com/pstengel
|
650
711
|
[@QQism]: https://github.com/QQism
|
651
|
-
[@
|
652
|
-
[@
|
653
|
-
[@
|
654
|
-
[@
|
655
|
-
[@dduugg]: https://github.com/dduugg
|
656
|
-
[@lazycoder9]: https://github.com/lazycoder9
|
657
|
-
[@elebow]: https://github.com/elebow
|
658
|
-
[@eitoball]: https://github.com/eitoball
|
659
|
-
[@aried3r]: https://github.com/aried3r
|
660
|
-
[@AlexWayfer]: https://github.com/AlexWayfer
|
661
|
-
[@tejasbubane]: https://github.com/tejasbubane
|
662
|
-
[@twalpole]: https://github.com/twalpole
|
663
|
-
[@zdennis]: https://github.com/zdennis
|
712
|
+
[@r7kamura]: https://github.com/r7kamura
|
713
|
+
[@Rafix02]: https://github.com/Rafix02
|
714
|
+
[@redross]: https://github.com/redross
|
715
|
+
[@renanborgescampos]: https://github.com/renanborgescampos
|
664
716
|
[@robotdana]: https://github.com/robotdana
|
665
717
|
[@rolfschmidt]: https://github.com/rolfschmidt
|
666
|
-
[@
|
667
|
-
[@
|
668
|
-
[@
|
669
|
-
[@
|
670
|
-
[@
|
671
|
-
[@biinari]: https://github.com/biinari
|
672
|
-
[@koic]: https://github.com/koic
|
673
|
-
[@Rafix02]: https://github.com/Rafix02
|
674
|
-
[@PhilCoggins]: https://github.com/PhilCoggins
|
718
|
+
[@rrosenblum]: https://github.com/rrosenblum
|
719
|
+
[@rspeicher]: https://github.com/rspeicher
|
720
|
+
[@RST-J]: https://github.com/RST-J
|
721
|
+
[@schmijos]: https://github.com/schmijos
|
722
|
+
[@seanpdoyle]: https://github.com/seanpdoyle
|
675
723
|
[@sl4vr]: https://github.com/sl4vr
|
676
|
-
[@ahukkanen]: https://github.com/ahukkanen
|
677
|
-
[@dvandersluis]: https://github.com/dvandersluis
|
678
|
-
[@hosamaly]: https://github.com/hosamaly
|
679
724
|
[@stephannv]: https://github.com/stephannv
|
725
|
+
[@t3h2mas]: https://github.com/t3h2mas
|
726
|
+
[@tdeo]: https://github.com/tdeo
|
727
|
+
[@tejasbubane]: https://github.com/tejasbubane
|
728
|
+
[@telmofcosta]: https://github.com/telmofcosta
|
680
729
|
[@Tietew]: https://github.com/Tietew
|
681
|
-
[@
|
682
|
-
[@paydaylight]: https://github.com/paydaylight
|
730
|
+
[@timrogers]: https://github.com/timrogers
|
683
731
|
[@topalovic]: https://github.com/topalovic
|
684
|
-
[@
|
685
|
-
[@
|
686
|
-
[@
|
687
|
-
[@
|
688
|
-
[@francois-ferrandis]: https://github.com/francois-ferrandis
|
689
|
-
[@r7kamura]: https://github.com/r7kamura
|
690
|
-
[@leoarnold]: https://github.com/leoarnold
|
691
|
-
[@harry-graham]: https://github.com/harry-graham
|
692
|
-
[@oshiro3]: https://github.com/oshiro3
|
732
|
+
[@twalpole]: https://github.com/twalpole
|
733
|
+
[@vzvu3k6k]: https://github.com/vzvu3k6k
|
734
|
+
[@walf443]: https://github.com/walf443
|
735
|
+
[@ybiquitous]: https://github.com/ybiquitous
|
693
736
|
[@ydah]: https://github.com/ydah
|
694
|
-
[@
|
695
|
-
[@
|
696
|
-
[@
|
737
|
+
[@yevhene]: https://github.com/yevhene
|
738
|
+
[@ypresto]: https://github.com/ypresto
|
739
|
+
[@zdennis]: https://github.com/zdennis
|
740
|
+
[@zverok]: https://github.com/zverok
|
data/config/default.yml
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
RSpec:
|
3
3
|
Enabled: true
|
4
4
|
StyleGuideBaseURL: https://rspec.rubystyle.guide
|
5
|
+
DocumentationBaseURL: https://docs.rubocop.org/rubocop-rspec
|
5
6
|
Include: &1
|
6
7
|
- "**/*_spec.rb"
|
7
8
|
- "**/spec/**/*"
|
@@ -61,9 +62,14 @@ RSpec:
|
|
61
62
|
Pending:
|
62
63
|
- pending
|
63
64
|
Expectations:
|
65
|
+
- are_expected
|
64
66
|
- expect
|
65
|
-
- is_expected
|
66
67
|
- expect_any_instance_of
|
68
|
+
- is_expected
|
69
|
+
- should
|
70
|
+
- should_not
|
71
|
+
- should_not_receive
|
72
|
+
- should_receive
|
67
73
|
Helpers:
|
68
74
|
- let
|
69
75
|
- let!
|
@@ -187,8 +193,21 @@ RSpec/BeforeAfterAll:
|
|
187
193
|
RSpec/ChangeByZero:
|
188
194
|
Description: Prefer negated matchers over `to change.by(0)`.
|
189
195
|
Enabled: pending
|
190
|
-
VersionAdded: 2.11
|
196
|
+
VersionAdded: '2.11'
|
197
|
+
VersionChanged: '2.13'
|
191
198
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ChangeByZero
|
199
|
+
NegatedMatcher: ~
|
200
|
+
|
201
|
+
RSpec/ClassCheck:
|
202
|
+
Description: Enforces consistent use of `be_a` or `be_kind_of`.
|
203
|
+
StyleGuide: "#is-a-vs-kind-of"
|
204
|
+
Enabled: pending
|
205
|
+
VersionAdded: '2.13'
|
206
|
+
EnforcedStyle: be_a
|
207
|
+
SupportedStyles:
|
208
|
+
- be_a
|
209
|
+
- be_kind_of
|
210
|
+
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ClassCheck
|
192
211
|
|
193
212
|
RSpec/ContextMethod:
|
194
213
|
Description: "`context` should not be used for specifying methods."
|
@@ -204,8 +223,9 @@ RSpec/ContextWording:
|
|
204
223
|
- when
|
205
224
|
- with
|
206
225
|
- without
|
226
|
+
AllowedPatterns: []
|
207
227
|
VersionAdded: '1.20'
|
208
|
-
VersionChanged:
|
228
|
+
VersionChanged: '2.13'
|
209
229
|
StyleGuide: https://rspec.rubystyle.guide/#context-descriptions
|
210
230
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/ContextWording
|
211
231
|
|
@@ -279,8 +299,9 @@ RSpec/Dialect:
|
|
279
299
|
RSpec/EmptyExampleGroup:
|
280
300
|
Description: Checks if an example group does not include any tests.
|
281
301
|
Enabled: true
|
302
|
+
SafeAutoCorrect: false
|
282
303
|
VersionAdded: '1.7'
|
283
|
-
VersionChanged: '2.
|
304
|
+
VersionChanged: '2.13'
|
284
305
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/EmptyExampleGroup
|
285
306
|
|
286
307
|
RSpec/EmptyHook:
|
@@ -315,8 +336,10 @@ RSpec/EmptyLineAfterHook:
|
|
315
336
|
Description: Checks if there is an empty line after hook blocks.
|
316
337
|
Enabled: true
|
317
338
|
VersionAdded: '1.27'
|
339
|
+
VersionChanged: '2.13'
|
318
340
|
StyleGuide: https://rspec.rubystyle.guide/#empty-line-after-let
|
319
341
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/EmptyLineAfterHook
|
342
|
+
AllowConsecutiveOneLiners: true
|
320
343
|
|
321
344
|
RSpec/EmptyLineAfterSubject:
|
322
345
|
Description: Checks if there is an empty line after subject block.
|
@@ -607,10 +630,18 @@ RSpec/NestedGroups:
|
|
607
630
|
Description: Checks for nested example groups.
|
608
631
|
Enabled: true
|
609
632
|
Max: 3
|
633
|
+
AllowedGroups: []
|
610
634
|
VersionAdded: '1.7'
|
611
|
-
VersionChanged: '
|
635
|
+
VersionChanged: '2.13'
|
612
636
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/NestedGroups
|
613
637
|
|
638
|
+
RSpec/NoExpectationExample:
|
639
|
+
Description: Checks if an example contains any expectation.
|
640
|
+
Enabled: pending
|
641
|
+
Safe: false
|
642
|
+
VersionAdded: '2.13'
|
643
|
+
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/NoExpectationExample
|
644
|
+
|
614
645
|
RSpec/NotToNot:
|
615
646
|
Description: Checks for consistent method usage for negating expectations.
|
616
647
|
Enabled: true
|
@@ -775,19 +806,22 @@ RSpec/VariableName:
|
|
775
806
|
SupportedStyles:
|
776
807
|
- snake_case
|
777
808
|
- camelCase
|
809
|
+
AllowedPatterns: []
|
778
810
|
IgnoredPatterns: []
|
779
811
|
VersionAdded: '1.40'
|
780
|
-
VersionChanged: '
|
812
|
+
VersionChanged: '2.13'
|
781
813
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/VariableName
|
782
814
|
|
783
815
|
RSpec/VerifiedDoubleReference:
|
784
816
|
Description: Checks for consistent verified double reference style.
|
785
817
|
Enabled: pending
|
818
|
+
SafeAutoCorrect: false
|
786
819
|
EnforcedStyle: constant
|
787
820
|
SupportedStyles:
|
788
821
|
- constant
|
789
822
|
- string
|
790
823
|
VersionAdded: 2.10.0
|
824
|
+
VersionChanged: '2.12'
|
791
825
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/VerifiedDoubleReference
|
792
826
|
|
793
827
|
RSpec/VerifiedDoubles:
|
@@ -832,6 +866,18 @@ RSpec/Capybara/FeatureMethods:
|
|
832
866
|
VersionChanged: '2.0'
|
833
867
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Capybara/FeatureMethods
|
834
868
|
|
869
|
+
RSpec/Capybara/SpecificFinders:
|
870
|
+
Description: Checks if there is a more specific finder offered by Capybara.
|
871
|
+
Enabled: pending
|
872
|
+
VersionAdded: '2.13'
|
873
|
+
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Capybara/SpecificFinders
|
874
|
+
|
875
|
+
RSpec/Capybara/SpecificMatcher:
|
876
|
+
Description: Checks for there is a more specific matcher offered by Capybara.
|
877
|
+
Enabled: pending
|
878
|
+
VersionAdded: '2.12'
|
879
|
+
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Capybara/SpecificMatcher
|
880
|
+
|
835
881
|
RSpec/Capybara/VisibilityMatcher:
|
836
882
|
Description: Checks for boolean visibility in Capybara finders.
|
837
883
|
Enabled: true
|
@@ -901,6 +947,13 @@ RSpec/Rails/AvoidSetupHook:
|
|
901
947
|
VersionAdded: '2.4'
|
902
948
|
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Rails/AvoidSetupHook
|
903
949
|
|
950
|
+
RSpec/Rails/HaveHttpStatus:
|
951
|
+
Description: Checks that tests use `have_http_status` instead of equality matchers.
|
952
|
+
Enabled: pending
|
953
|
+
SafeAutoCorrect: false
|
954
|
+
VersionAdded: '2.12'
|
955
|
+
Reference: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/Rails/HaveHttpStatus
|
956
|
+
|
904
957
|
RSpec/Rails/HttpStatus:
|
905
958
|
Description: Enforces use of symbolic or numeric value to describe HTTP status.
|
906
959
|
Enabled: true
|
@@ -6,16 +6,15 @@ module RuboCop
|
|
6
6
|
# Checks that left braces for adjacent single line lets are aligned.
|
7
7
|
#
|
8
8
|
# @example
|
9
|
+
# # bad
|
10
|
+
# let(:foobar) { blahblah }
|
11
|
+
# let(:baz) { bar }
|
12
|
+
# let(:a) { b }
|
9
13
|
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
# # good
|
16
|
-
# let(:foobar) { blahblah }
|
17
|
-
# let(:baz) { bar }
|
18
|
-
# let(:a) { b }
|
14
|
+
# # good
|
15
|
+
# let(:foobar) { blahblah }
|
16
|
+
# let(:baz) { bar }
|
17
|
+
# let(:a) { b }
|
19
18
|
#
|
20
19
|
class AlignLeftLetBrace < Base
|
21
20
|
extend AutoCorrector
|
@@ -6,16 +6,15 @@ module RuboCop
|
|
6
6
|
# Checks that right braces for adjacent single line lets are aligned.
|
7
7
|
#
|
8
8
|
# @example
|
9
|
+
# # bad
|
10
|
+
# let(:foobar) { blahblah }
|
11
|
+
# let(:baz) { bar }
|
12
|
+
# let(:a) { b }
|
9
13
|
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
# # good
|
16
|
-
# let(:foobar) { blahblah }
|
17
|
-
# let(:baz) { bar }
|
18
|
-
# let(:a) { b }
|
14
|
+
# # good
|
15
|
+
# let(:foobar) { blahblah }
|
16
|
+
# let(:baz) { bar }
|
17
|
+
# let(:a) { b }
|
19
18
|
#
|
20
19
|
class AlignRightLetBrace < Base
|
21
20
|
extend AutoCorrector
|
@@ -25,23 +25,29 @@ module RuboCop
|
|
25
25
|
# some_method
|
26
26
|
# test.run
|
27
27
|
# end
|
28
|
+
#
|
28
29
|
class AroundBlock < Base
|
29
30
|
MSG_NO_ARG = 'Test object should be passed to around block.'
|
30
31
|
MSG_UNUSED_ARG = 'You should call `%<arg>s.call` ' \
|
31
32
|
'or `%<arg>s.run`.'
|
32
33
|
|
33
|
-
# @!method
|
34
|
-
def_node_matcher :
|
34
|
+
# @!method hook_block(node)
|
35
|
+
def_node_matcher :hook_block, <<-PATTERN
|
35
36
|
(block (send nil? :around sym ?) (args $...) ...)
|
36
37
|
PATTERN
|
37
38
|
|
39
|
+
# @!method hook_numblock(node)
|
40
|
+
def_node_matcher :hook_numblock, <<-PATTERN
|
41
|
+
(numblock (send nil? :around sym ?) ...)
|
42
|
+
PATTERN
|
43
|
+
|
38
44
|
# @!method find_arg_usage(node)
|
39
45
|
def_node_search :find_arg_usage, <<-PATTERN
|
40
46
|
{(send $... {:call :run}) (send _ _ $...) (yield $...) (block-pass $...)}
|
41
47
|
PATTERN
|
42
48
|
|
43
49
|
def on_block(node)
|
44
|
-
|
50
|
+
hook_block(node) do |(example_proxy)|
|
45
51
|
if example_proxy.nil?
|
46
52
|
add_no_arg_offense(node)
|
47
53
|
else
|
@@ -50,6 +56,12 @@ module RuboCop
|
|
50
56
|
end
|
51
57
|
end
|
52
58
|
|
59
|
+
def on_numblock(node)
|
60
|
+
hook_numblock(node) do
|
61
|
+
check_for_numblock(node)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
53
65
|
private
|
54
66
|
|
55
67
|
def add_no_arg_offense(node)
|
@@ -68,6 +80,17 @@ module RuboCop
|
|
68
80
|
message: format(MSG_UNUSED_ARG, arg: name)
|
69
81
|
)
|
70
82
|
end
|
83
|
+
|
84
|
+
def check_for_numblock(block)
|
85
|
+
find_arg_usage(block) do |usage|
|
86
|
+
return if usage.include?(s(:lvar, :_1))
|
87
|
+
end
|
88
|
+
|
89
|
+
add_offense(
|
90
|
+
block.children.last,
|
91
|
+
message: format(MSG_UNUSED_ARG, arg: :_1)
|
92
|
+
)
|
93
|
+
end
|
71
94
|
end
|
72
95
|
end
|
73
96
|
end
|
data/lib/rubocop/cop/rspec/be.rb
CHANGED
@@ -23,6 +23,7 @@ module RuboCop
|
|
23
23
|
# before(:each) { Widget.create }
|
24
24
|
# after(:each) { Widget.delete_all }
|
25
25
|
# end
|
26
|
+
#
|
26
27
|
class BeforeAfterAll < Base
|
27
28
|
MSG = 'Beware of using `%<hook>s` as it may cause state to leak ' \
|
28
29
|
'between tests. If you are using `rspec-rails`, and ' \
|
@@ -14,14 +14,20 @@ module RuboCop
|
|
14
14
|
# which ensures that preceding actions (like `click_link`) have
|
15
15
|
# completed.
|
16
16
|
#
|
17
|
+
# This cop does not support autocorrection in some cases.
|
18
|
+
#
|
17
19
|
# @example
|
18
20
|
# # bad
|
19
21
|
# expect(current_path).to eq('/callback')
|
20
|
-
# expect(page.current_path).to match(/widgets/)
|
21
22
|
#
|
22
23
|
# # good
|
23
|
-
# expect(page).to have_current_path(
|
24
|
-
#
|
24
|
+
# expect(page).to have_current_path('/callback')
|
25
|
+
#
|
26
|
+
# # bad (does not support autocorrection)
|
27
|
+
# expect(page.current_path).to match(variable)
|
28
|
+
#
|
29
|
+
# # good
|
30
|
+
# expect(page).to have_current_path('/callback')
|
25
31
|
#
|
26
32
|
class CurrentPathExpectation < Base
|
27
33
|
extend AutoCorrector
|
@@ -40,6 +40,7 @@ module RuboCop
|
|
40
40
|
# # ...
|
41
41
|
# end
|
42
42
|
# end
|
43
|
+
#
|
43
44
|
class FeatureMethods < Base
|
44
45
|
extend AutoCorrector
|
45
46
|
include InsideExampleGroup
|
@@ -68,7 +69,7 @@ module RuboCop
|
|
68
69
|
...)
|
69
70
|
PATTERN
|
70
71
|
|
71
|
-
def on_block(node)
|
72
|
+
def on_block(node) # rubocop:disable InternalAffairs/NumblockHandler
|
72
73
|
return unless inside_example_group?(node)
|
73
74
|
|
74
75
|
feature_method(node) do |send_node, match|
|