Welcome to mirror list, hosted at ThFree Co, Russian Federation.

spec_helpers.rb « rubocop - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: b38dc3f8cdb0124f534ba4fe53ee6d56b7af1277 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
module RuboCop
  module SpecHelpers
    SPEC_HELPERS = %w[fast_spec_helper.rb rails_helper.rb spec_helper.rb].freeze
    MIGRATION_SPEC_DIRECTORIES = ['spec/migrations', 'spec/lib/gitlab/background_migration'].freeze
    CONTROLLER_SPEC_DIRECTORIES = ['spec/controllers', 'spec/support/shared_examples/controllers'].freeze

    # Returns true if the given node originated from the spec directory.
    def in_spec?(node)
      path = node.location.expression.source_buffer.name
      pwd = RuboCop::PathUtil.pwd

      !SPEC_HELPERS.include?(File.basename(path)) &&
        path.start_with?(File.join(pwd, 'spec'), File.join(pwd, 'ee', 'spec'))
    end

    def migration_directories
      @migration_directories ||= MIGRATION_SPEC_DIRECTORIES.map do |dir|
        pwd = RuboCop::PathUtil.pwd
        [File.join(pwd, dir), File.join(pwd, 'ee', dir)]
      end.flatten
    end

    # Returns true if the given node originated from a migration spec.
    def in_migration_spec?(node)
      path = node.location.expression.source_buffer.name

      in_spec?(node) &&
        path.start_with?(*migration_directories)
    end

    def controller_directories
      @controller_directories ||= CONTROLLER_SPEC_DIRECTORIES.map do |dir|
        pwd = RuboCop::PathUtil.pwd
        [File.join(pwd, dir), File.join(pwd, 'ee', dir)]
      end.flatten
    end

    # Returns true if the given node originated from a controller spec.
    def in_controller_spec?(node)
      path = node.location.expression.source_buffer.name

      in_spec?(node) &&
        path.start_with?(*controller_directories)
    end
  end
end