Class: Coverband::Collectors::Coverage

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/coverband/collectors/coverage.rb

Overview

StandardError seems like be better option coverband previously had RuntimeError here but runtime error can let a large number of error crash this method and this method is currently in a ensure block in middleware and threads

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.ruby_version_greater_than_or_equal_to?(version) ⇒ Boolean

Returns:

  • (Boolean)


17
18
19
# File 'lib/coverband/collectors/coverage.rb', line 17

def self.ruby_version_greater_than_or_equal_to?(version)
  Gem::Version.new(RUBY_VERSION) >= Gem::Version.new(version)
end

Instance Method Details

#eager_loadingObject



40
41
42
43
44
45
46
47
# File 'lib/coverband/collectors/coverage.rb', line 40

def eager_loading
  old_coverage_type = @store.type
  eager_loading!
  yield
ensure
  report_coverage
  @store.type = old_coverage_type
end

#eager_loading!Object



36
37
38
# File 'lib/coverband/collectors/coverage.rb', line 36

def eager_loading!
  @store.type = Coverband::EAGER_TYPE
end

#report_coverageObject



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/coverband/collectors/coverage.rb', line 57

def report_coverage
  @semaphore.synchronize do
    raise "no Coverband store set" unless @store

    files_with_line_usage = filtered_files(Delta.results)
    if @store.type == Coverband::EAGER_TYPE && Coverband.configuration.defer_eager_loading_data?
      @deferred_eager_loading_data = files_with_line_usage
    else
      if @deferred_eager_loading_data && Coverband.configuration.defer_eager_loading_data?
        toggle_eager_loading do
          @store.save_report(@deferred_eager_loading_data) if Coverband.configuration.send_deferred_eager_loading_data?
          @deferred_eager_loading_data = nil
        end
      end
      @store.save_report(files_with_line_usage)
    end
  end
rescue => e
  @logger&.error "coverage failed to store"
  @logger&.error "Coverband Error: #{e.inspect} #{e.message}"
  e.backtrace.each { |line| @logger&.error line } if @verbose
  raise e if @test_env
end

#reset_instanceObject



21
22
23
24
25
26
27
28
29
30
# File 'lib/coverband/collectors/coverage.rb', line 21

def reset_instance
  @project_directory = File.expand_path(Coverband.configuration.root)
  @ignore_patterns = Coverband.configuration.ignore
  @store = Coverband.configuration.store
  @verbose = Coverband.configuration.verbose
  @logger = Coverband.configuration.logger
  @test_env = Coverband.configuration.test_env
  Delta.reset
  self
end

#runtime!Object



32
33
34
# File 'lib/coverband/collectors/coverage.rb', line 32

def runtime!
  @store.type = Coverband::RUNTIME_TYPE
end

#toggle_eager_loadingObject



49
50
51
52
53
54
55
# File 'lib/coverband/collectors/coverage.rb', line 49

def toggle_eager_loading
  old_coverage_type = @store.type
  eager_loading!
  yield
ensure
  @store.type = old_coverage_type
end