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

Instance Method Summary collapse

Instance Method Details

#eager_loadingObject



36
37
38
39
40
41
42
43
# File 'lib/coverband/collectors/coverage.rb', line 36

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

#eager_loading!Object



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

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

#report_coverageObject



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/coverband/collectors/coverage.rb', line 53

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



17
18
19
20
21
22
23
24
25
26
# File 'lib/coverband/collectors/coverage.rb', line 17

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



28
29
30
# File 'lib/coverband/collectors/coverage.rb', line 28

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

#toggle_eager_loadingObject



45
46
47
48
49
50
51
# File 'lib/coverband/collectors/coverage.rb', line 45

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