rubocop-rspec 2.14.0 → 2.14.2
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 +13 -1
- data/lib/rubocop/cop/rspec/example_wording.rb +7 -8
- data/lib/rubocop/cop/rspec/factory_bot/consistent_parentheses_style.rb +11 -0
- data/lib/rubocop/cop/rspec/file_path.rb +15 -8
- data/lib/rubocop/cop/rspec/no_expectation_example.rb +1 -1
- data/lib/rubocop/cop/rspec/rails/inferred_spec_type.rb +14 -4
- data/lib/rubocop/cop/rspec/sort_metadata.rb +1 -2
- data/lib/rubocop/rspec/version.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: bbd70ea9708a7d87e0a1307234e3ac5cc37cc6197e6b1cc72487342b772ec6f1
         | 
| 4 | 
            +
              data.tar.gz: 0c50303e8a0d4218508c51e778d5cb6633b54fe6f823951ea5f8df68d162dfda
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 2e1a6e55fb7aeef036448fe57f03b2d80b796e6971fbd22cd63db496e61b1e211a64e89e987cccc74f5124746713581fb621c805d458f7ff273d436432599483
         | 
| 7 | 
            +
              data.tar.gz: 76655025092f103fbd6ca3eda6d466236a8a9857f207e11bc3f8e51c38238367346971c4a0f3feeca6b9069a53fa48bf8281d5dff61f68c6562edce4405a10f0
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -2,6 +2,18 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            ## Master (Unreleased)
         | 
| 4 4 |  | 
| 5 | 
            +
            ## 2.14.2 (2022-10-25)
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            - Fix an incorrect autocorrect for `FactoryBot/ConsistentParenthesesStyle` with `omit_parentheses` option when method name and first argument are not on same line. ([@ydah])
         | 
| 8 | 
            +
            - Fix autocorrection loop in `RSpec/ExampleWording` for insufficient example wording. ([@pirj])
         | 
| 9 | 
            +
            - Fix `RSpec/SortMetadata` not to reorder arguments of `include_`/`it_behaves_like`. ([@pirj])
         | 
| 10 | 
            +
            - Fix a false positive for `RSpec/NoExpectationExample` when allowed pattern methods with arguments. ([@ydah])
         | 
| 11 | 
            +
            - Change `RSpec/FilePath` so that it only checks suffix when path is under spec/routing or type is defined as routing. ([@r7kamura])
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            ## 2.14.1 (2022-10-24)
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            - Fix an error for `RSpec/Rails/InferredSpecType` with redundant type before other Hash metadata. ([@ydah])
         | 
| 16 | 
            +
             | 
| 5 17 | 
             
            ## 2.14.0 (2022-10-23)
         | 
| 6 18 |  | 
| 7 19 | 
             
            - Add `require_implicit` style to `RSpec/ImplicitSubject`. ([@r7kamura])
         | 
| @@ -16,7 +28,7 @@ | |
| 16 28 | 
             
            - Update `config/default.yml` removing deprecated option to make the config correctable by users. ([@ignaciovillaverde])
         | 
| 17 29 | 
             
            - Do not attempt to auto-correct example groups with `include_examples` in `RSpec/LetBeforeExamples`. ([@pirj])
         | 
| 18 30 | 
             
            - Add new `RSpec/SortMetadata` cop. ([@leoarnold])
         | 
| 19 | 
            -
            - Add support for subject! method to `RSpec/SubjectDeclaration`. ([@ydah] | 
| 31 | 
            +
            - Add support for subject! method to `RSpec/SubjectDeclaration`. ([@ydah])
         | 
| 20 32 |  | 
| 21 33 | 
             
            ## 2.13.2 (2022-09-23)
         | 
| 22 34 |  | 
| @@ -68,20 +68,15 @@ module RuboCop | |
| 68 68 | 
             
                          add_wording_offense(description_node, MSG_SHOULD)
         | 
| 69 69 | 
             
                        elsif message.match?(IT_PREFIX)
         | 
| 70 70 | 
             
                          add_wording_offense(description_node, MSG_IT)
         | 
| 71 | 
            -
                         | 
| 72 | 
            -
                           | 
| 71 | 
            +
                        elsif insufficient_docstring?(description_node)
         | 
| 72 | 
            +
                          add_offense(docstring(description_node),
         | 
| 73 | 
            +
                                      message: MSG_INSUFFICIENT_DESCRIPTION)
         | 
| 73 74 | 
             
                        end
         | 
| 74 75 | 
             
                      end
         | 
| 75 76 | 
             
                    end
         | 
| 76 77 |  | 
| 77 78 | 
             
                    private
         | 
| 78 79 |  | 
| 79 | 
            -
                    def check_and_handle_insufficient_examples(description)
         | 
| 80 | 
            -
                      if insufficient_examples.include?(preprocess(text(description)))
         | 
| 81 | 
            -
                        add_wording_offense(description, MSG_INSUFFICIENT_DESCRIPTION)
         | 
| 82 | 
            -
                      end
         | 
| 83 | 
            -
                    end
         | 
| 84 | 
            -
             | 
| 85 80 | 
             
                    def add_wording_offense(node, message)
         | 
| 86 81 | 
             
                      docstring = docstring(node)
         | 
| 87 82 |  | 
| @@ -137,6 +132,10 @@ module RuboCop | |
| 137 132 | 
             
                      cop_config.fetch('IgnoredWords', [])
         | 
| 138 133 | 
             
                    end
         | 
| 139 134 |  | 
| 135 | 
            +
                    def insufficient_docstring?(description_node)
         | 
| 136 | 
            +
                      insufficient_examples.include?(preprocess(text(description_node)))
         | 
| 137 | 
            +
                    end
         | 
| 138 | 
            +
             | 
| 140 139 | 
             
                    def insufficient_examples
         | 
| 141 140 | 
             
                      examples = cop_config.fetch('DisallowedExamples', [])
         | 
| 142 141 | 
             
                      examples.map! { |example| preprocess(example) }
         | 
| @@ -30,6 +30,16 @@ module RuboCop | |
| 30 30 | 
             
                    #   create :login
         | 
| 31 31 | 
             
                    #   create :login
         | 
| 32 32 | 
             
                    #
         | 
| 33 | 
            +
                    #   # also good
         | 
| 34 | 
            +
                    #   # when method name and first argument are not on same line
         | 
| 35 | 
            +
                    #   create(
         | 
| 36 | 
            +
                    #     :user
         | 
| 37 | 
            +
                    #   )
         | 
| 38 | 
            +
                    #   build(
         | 
| 39 | 
            +
                    #     :user,
         | 
| 40 | 
            +
                    #     name: 'foo'
         | 
| 41 | 
            +
                    #   )
         | 
| 42 | 
            +
                    #
         | 
| 33 43 | 
             
                    class ConsistentParenthesesStyle < Base
         | 
| 34 44 | 
             
                      extend AutoCorrector
         | 
| 35 45 | 
             
                      include ConfigurableEnforcedStyle
         | 
| @@ -66,6 +76,7 @@ module RuboCop | |
| 66 76 |  | 
| 67 77 | 
             
                      def process_with_parentheses(node)
         | 
| 68 78 | 
             
                        return unless style == :omit_parentheses
         | 
| 79 | 
            +
                        return unless same_line?(node, node.first_argument)
         | 
| 69 80 |  | 
| 70 81 | 
             
                        add_offense(node.loc.selector,
         | 
| 71 82 | 
             
                                    message: MSG_OMIT_PARENS) do |corrector|
         | 
| @@ -76,8 +76,6 @@ module RuboCop | |
| 76 76 | 
             
                      return unless top_level_groups.one?
         | 
| 77 77 |  | 
| 78 78 | 
             
                      example_group(node) do |send_node, example_group, arguments|
         | 
| 79 | 
            -
                        next if routing_spec?(arguments)
         | 
| 80 | 
            -
             | 
| 81 79 | 
             
                        ensure_correct_file_path(send_node, example_group, arguments)
         | 
| 82 80 | 
             
                      end
         | 
| 83 81 | 
             
                    end
         | 
| @@ -85,7 +83,7 @@ module RuboCop | |
| 85 83 | 
             
                    private
         | 
| 86 84 |  | 
| 87 85 | 
             
                    def ensure_correct_file_path(send_node, example_group, arguments)
         | 
| 88 | 
            -
                      pattern = pattern_for(example_group, arguments | 
| 86 | 
            +
                      pattern = pattern_for(example_group, arguments)
         | 
| 89 87 | 
             
                      return if filename_ends_with?(pattern)
         | 
| 90 88 |  | 
| 91 89 | 
             
                      # For the suffix shown in the offense message, modify the regular
         | 
| @@ -97,11 +95,13 @@ module RuboCop | |
| 97 95 | 
             
                    end
         | 
| 98 96 |  | 
| 99 97 | 
             
                    def routing_spec?(args)
         | 
| 100 | 
            -
                      args.any?(&method(:routing_metadata?))
         | 
| 98 | 
            +
                      args.any?(&method(:routing_metadata?)) || routing_spec_path?
         | 
| 101 99 | 
             
                    end
         | 
| 102 100 |  | 
| 103 | 
            -
                    def pattern_for(example_group,  | 
| 104 | 
            -
                       | 
| 101 | 
            +
                    def pattern_for(example_group, arguments)
         | 
| 102 | 
            +
                      method_name = arguments.first
         | 
| 103 | 
            +
                      if spec_suffix_only? || !example_group.const_type? ||
         | 
| 104 | 
            +
                          routing_spec?(arguments)
         | 
| 105 105 | 
             
                        return pattern_for_spec_suffix_only
         | 
| 106 106 | 
             
                      end
         | 
| 107 107 |  | 
| @@ -149,8 +149,7 @@ module RuboCop | |
| 149 149 | 
             
                    end
         | 
| 150 150 |  | 
| 151 151 | 
             
                    def filename_ends_with?(pattern)
         | 
| 152 | 
            -
                       | 
| 153 | 
            -
                      filename.match?("#{pattern}$")
         | 
| 152 | 
            +
                      expanded_file_path.match?("#{pattern}$")
         | 
| 154 153 | 
             
                    end
         | 
| 155 154 |  | 
| 156 155 | 
             
                    def relevant_rubocop_rspec_file?(_file)
         | 
| @@ -160,6 +159,14 @@ module RuboCop | |
| 160 159 | 
             
                    def spec_suffix_only?
         | 
| 161 160 | 
             
                      cop_config['SpecSuffixOnly']
         | 
| 162 161 | 
             
                    end
         | 
| 162 | 
            +
             | 
| 163 | 
            +
                    def routing_spec_path?
         | 
| 164 | 
            +
                      expanded_file_path.include?('spec/routing/')
         | 
| 165 | 
            +
                    end
         | 
| 166 | 
            +
             | 
| 167 | 
            +
                    def expanded_file_path
         | 
| 168 | 
            +
                      File.expand_path(processed_source.buffer.name)
         | 
| 169 | 
            +
                    end
         | 
| 163 170 | 
             
                  end
         | 
| 164 171 | 
             
                end
         | 
| 165 172 | 
             
              end
         | 
| @@ -89,11 +89,21 @@ module RuboCop | |
| 89 89 | 
             
                      # @param [RuboCop::AST::Corrector] corrector
         | 
| 90 90 | 
             
                      # @param [RuboCop::AST::Node] node
         | 
| 91 91 | 
             
                      def autocorrect(corrector, node)
         | 
| 92 | 
            -
                        corrector.remove(
         | 
| 93 | 
            -
             | 
| 94 | 
            -
             | 
| 92 | 
            +
                        corrector.remove(remove_range(node))
         | 
| 93 | 
            +
                      end
         | 
| 94 | 
            +
             | 
| 95 | 
            +
                      # @param [RuboCop::AST::Node] node
         | 
| 96 | 
            +
                      # @return [Parser::Source::Range]
         | 
| 97 | 
            +
                      def remove_range(node)
         | 
| 98 | 
            +
                        if node.left_sibling
         | 
| 99 | 
            +
                          node.loc.expression.with(
         | 
| 100 | 
            +
                            begin_pos: node.left_sibling.loc.expression.end_pos
         | 
| 95 101 | 
             
                          )
         | 
| 96 | 
            -
                         | 
| 102 | 
            +
                        elsif node.right_sibling
         | 
| 103 | 
            +
                          node.loc.expression.with(
         | 
| 104 | 
            +
                            end_pos: node.right_sibling.loc.expression.begin_pos
         | 
| 105 | 
            +
                          )
         | 
| 106 | 
            +
                        end
         | 
| 97 107 | 
             
                      end
         | 
| 98 108 |  | 
| 99 109 | 
             
                      # @param [RuboCop::AST::PairNode] node
         | 
| @@ -26,8 +26,7 @@ module RuboCop | |
| 26 26 | 
             
                    def_node_matcher :rspec_metadata, <<~PATTERN
         | 
| 27 27 | 
             
                      (block
         | 
| 28 28 | 
             
                        (send
         | 
| 29 | 
            -
                          #rspec? {#Examples.all #ExampleGroups.all #SharedGroups.all #Hooks.all  | 
| 30 | 
            -
                          _ ${send str sym}* (hash $...)?)
         | 
| 29 | 
            +
                          #rspec? {#Examples.all #ExampleGroups.all #SharedGroups.all #Hooks.all} _ ${send str sym}* (hash $...)?)
         | 
| 31 30 | 
             
                        ...)
         | 
| 32 31 | 
             
                    PATTERN
         | 
| 33 32 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rubocop-rspec
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2.14. | 
| 4 | 
            +
              version: 2.14.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - John Backus
         | 
| @@ -10,7 +10,7 @@ authors: | |
| 10 10 | 
             
            autorequire:
         | 
| 11 11 | 
             
            bindir: bin
         | 
| 12 12 | 
             
            cert_chain: []
         | 
| 13 | 
            -
            date: 2022-10- | 
| 13 | 
            +
            date: 2022-10-25 00:00:00.000000000 Z
         | 
| 14 14 | 
             
            dependencies:
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 16 16 | 
             
              name: rubocop
         |