Class: Kaisoku::CoverageCollector

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

Defined Under Namespace

Classes: Result

Instance Method Summary collapse

Constructor Details

#initialize(configuration: Configuration.new, checksum: Checksum.new) ⇒ CoverageCollector

Returns a new instance of CoverageCollector.



13
14
15
16
17
18
19
20
21
# File 'lib/kaisoku/coverage_collector.rb', line 13

def initialize(configuration: Configuration.new, checksum: Checksum.new)
  @configuration = configuration
  @checksum = checksum
  @method_map = MethodMap.new(configuration: configuration)
  @started_by_collector = false
  @loaded_features_before = []
  @conflict_reason = nil
  @environment_tracker = EnvironmentTracker.new
end

Instance Method Details

#finish_entityObject



39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/kaisoku/coverage_collector.rb', line 39

def finish_entity
  return Result.new(dependencies: {}, skipped: true, reason: @conflict_reason) if @conflict_reason

  coverage = Coverage.result(stop: false, clear: true)
  coverage_files = coverage.keys
  loaded_files = $LOADED_FEATURES - @loaded_features_before
  files = (coverage_files + loaded_files).uniq
  deps = dependency_checksums(files)
  deps.merge!(method_dependency_checksums(coverage))
  deps[EnvironmentTracker::DEPENDENCY_KEY] = @environment_tracker.dependency.last if @environment_tracker.changed?

  Result.new(dependencies: deps, skipped: false, reason: nil)
end

#start_entityObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/kaisoku/coverage_collector.rb', line 23

def start_entity
  @loaded_features_before = $LOADED_FEATURES.dup
  @conflict_reason = nil
  @environment_tracker = EnvironmentTracker.new

  if Coverage.running? && !@started_by_collector
    @conflict_reason = 'Coverage is already running; map update skipped'
    return
  end

  return if @started_by_collector

  Coverage.start(oneshot_lines: true)
  @started_by_collector = true
end