summaryrefslogtreecommitdiff
path: root/config/initializers/rspec_profiling.rb
blob: ac353d1449901cc3fcc212efa8c305b2f42eb1c9 (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
module RspecProfilingExt
  module PSQL
    def establish_connection
      ::RspecProfiling::Collectors::PSQL::Result.establish_connection(ENV['RSPEC_PROFILING_POSTGRES_URL'])
    end
  end

  module Git
    def branch
      ENV['CI_BUILD_REF_NAME'] || super
    end
  end

  module Run
    def example_finished(*args)
      super
    rescue => err
      return if @already_logged_example_finished_error

      $stderr.puts "rspec_profiling couldn't collect an example: #{err}. Further warnings suppressed."
      @already_logged_example_finished_error = true
    end

    alias_method :example_passed, :example_finished
    alias_method :example_failed, :example_finished
  end
end

if Rails.env.test?
  RspecProfiling.configure do |config|
    if ENV['RSPEC_PROFILING_POSTGRES_URL']
      RspecProfiling::Collectors::PSQL.prepend(RspecProfilingExt::PSQL)
      config.collector = RspecProfiling::Collectors::PSQL
    end
  end

  if ENV.has_key?('CI')
    RspecProfiling::VCS::Git.prepend(RspecProfilingExt::Git)
    RspecProfiling::Run.prepend(RspecProfilingExt::Run)
  end
end