Class: OneshotCoverage::Reporter

Inherits:
Object
  • Object
show all
Defined in:
lib/oneshot_coverage.rb

Instance Method Summary collapse

Constructor Details

#initialize(coverage_module:, target_path:, logger:, emit_term: nil, cover_bundle_path: false) ⇒ Reporter

Returns a new instance of Reporter.



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/oneshot_coverage.rb', line 25

def initialize(
  coverage_module:,
  target_path:,
  logger:,
  emit_term: nil,
  cover_bundle_path: false
)
  @coverage_module = coverage_module
  @target_path = target_path
  @logger = logger
  @emit_term = emit_term
  if @emit_term
    @next_emit_time = Time.now.to_i + rand(@emit_term)
  end

  if defined?(Bundler)
    @bundler_path = Bundler.bundle_path.to_s
    @cover_bundle_path = cover_bundle_path
  end
end

Instance Method Details

#emit(force_emit) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/oneshot_coverage.rb', line 46

def emit(force_emit)
  if !force_emit
    if !time_to_emit?
      return
    end
  end

  logs =
    @coverage_module.result(clear: true, stop: false).
    select { |k, v| is_target?(k, v) }.
    map do |filepath, v|
      formatted_path = format_filepath(filepath)
      OneshotLog.new(format_filepath(filepath), md5_hash_for(filepath), v[:oneshot_lines])
    end

  if logs.size > 0
    @logger.post(logs)
  end
end