Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
teak-dev / lib / rubocop / cop / require_spec_helper.rb
Size: Mime:
# frozen_string_literal: true

require 'rubocop'

module RuboCop
  module Cop
    # This cops checks to ensure that RSpec suites properly require the `spec_helper` file.
    class RequireSpecHelper < RuboCop::Cop::Base
      REQUIRES_SPEC_HELPER = <<~PATTERN
        `(begin
          (send nil? :require
            (str "spec_helper")
          )
          ...
        )
      PATTERN

      def_node_matcher :requires_spec_helper?, REQUIRES_SPEC_HELPER

      # Any file ending in `_spec.rb` should require `spec_helper` once.
      def on_new_investigation
        return unless processed_source.file_path.end_with?('_spec.rb')

        ast = processed_source.ast

        return unless ast

        return if requires_spec_helper?(ast)

        add_offense(ast, message: 'RSpec suites must require `spec_helper`')
      end
    end
  end
end