summaryrefslogtreecommitdiff
path: root/spec/simplecov_env.rb
blob: fb9e2abb7f8da626a339df8c9221c11a03178052 (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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
require "simplecov"
require "active_support/core_ext/numeric/time"
require_relative "../lib/gitlab/utils"

module SimpleCovEnv
  extend self

  def start!
    return unless ENV["SIMPLECOV"]

    configure_profile
    configure_job

    SimpleCov.start
  end

  def configure_job
    SimpleCov.configure do
      if ENV["CI_JOB_NAME"]
        job_name = Gitlab::Utils.slugify(ENV["CI_JOB_NAME"])
        coverage_dir "coverage/#{job_name}"
        command_name job_name
      end

      if ENV["CI"]
        SimpleCov.at_exit do
          # In CI environment don't generate formatted reports
          # Only generate .resultset.json
          SimpleCov.result
        end
      end
    end
  end

  def configure_profile
    SimpleCov.configure do
      load_profile "test_frameworks"
      track_files "{app,lib}/**/*.rb"

      add_filter "/vendor/ruby/"
      add_filter "app/controllers/sherlock/"
      add_filter "config/initializers/"
      add_filter "db/fixtures/"
      add_filter "lib/gitlab/sidekiq_middleware/"
      add_filter "lib/system_check/"

      add_group "Controllers", "app/controllers"
      add_group "Finders",     "app/finders"
      add_group "Helpers",     "app/helpers"
      add_group "Libraries",   "lib"
      add_group "Mailers",     "app/mailers"
      add_group "Models",      "app/models"
      add_group "Policies",    "app/policies"
      add_group "Presenters",  "app/presenters"
      add_group "Serializers", "app/serializers"
      add_group "Services",    "app/services"
      add_group "Uploaders",   "app/uploaders"
      add_group "Validators",  "app/validators"
      add_group "Workers",     %w[app/jobs app/workers]

      merge_timeout 365.days
    end
  end
end