class Coverband::Adapters::Base
Constants
- ABSTRACT_KEY
- DATA_KEY
- FILE_HASH
- FIRST_UPDATED_KEY
- LAST_UPDATED_KEY
Attributes
type[RW]
Public Class Methods
new()
click to toggle source
# File lib/coverband/adapters/base.rb, line 14 def initialize @type = Coverband::RUNTIME_TYPE end
Public Instance Methods
clear!()
click to toggle source
# File lib/coverband/adapters/base.rb, line 18 def clear! raise ABSTRACT_KEY end
clear_file!(_file = nil)
click to toggle source
# File lib/coverband/adapters/base.rb, line 22 def clear_file!(_file = nil) raise ABSTRACT_KEY end
coverage(_local_type = nil)
click to toggle source
# File lib/coverband/adapters/base.rb, line 38 def coverage(_local_type = nil) raise ABSTRACT_KEY end
covered_files()
click to toggle source
# File lib/coverband/adapters/base.rb, line 59 def covered_files coverage.keys || [] end
get_coverage_report()
click to toggle source
# File lib/coverband/adapters/base.rb, line 54 def get_coverage_report data = Coverband.configuration.store.split_coverage(Coverband::TYPES) data.merge(Coverband::MERGED_TYPE => Coverband.configuration.store.merged_coverage(Coverband::TYPES)) end
migrate!()
click to toggle source
# File lib/coverband/adapters/base.rb, line 26 def migrate! raise ABSTRACT_KEY end
raw_store()
click to toggle source
# File lib/coverband/adapters/base.rb, line 63 def raw_store raise ABSTRACT_KEY end
save_coverage()
click to toggle source
# File lib/coverband/adapters/base.rb, line 34 def save_coverage raise ABSTRACT_KEY end
save_report(_report)
click to toggle source
# File lib/coverband/adapters/base.rb, line 50 def save_report(_report) raise "abstract" end
size()
click to toggle source
# File lib/coverband/adapters/base.rb, line 30 def size raise ABSTRACT_KEY end
size_in_mib()
click to toggle source
# File lib/coverband/adapters/base.rb, line 42 def size_in_mib if size format("%<size>.2f", size: (size.to_f / 2**20)) else "N/A" end end
Protected Instance Methods
array_add(latest, original)
click to toggle source
TODO: This should only be 2 cases get our dup / not dups aligned
# File lib/coverband/adapters/base.rb, line 145 def array_add(latest, original) if Coverband.configuration.use_oneshot_lines_coverage latest.map!.with_index { |v, i| (v + original[i] >= 1 ? 1 : 0) if v && original[i] } elsif Coverband.configuration.simulate_oneshot_lines_coverage latest.map.with_index { |v, i| (v + original[i] >= 1 ? 1 : 0) if v && original[i] } else latest.map.with_index { |v, i| v && original[i] ? v + original[i] : nil } end end
expand_report(report)
click to toggle source
TODO: modify to extend report inline?
# File lib/coverband/adapters/base.rb, line 99 def expand_report(report) expanded = {} report_time = Time.now.to_i updated_time = type == Coverband::EAGER_TYPE ? nil : report_time report.each_pair do |key, line_data| extended_data = { FIRST_UPDATED_KEY => report_time, LAST_UPDATED_KEY => updated_time, FILE_HASH => file_hash(key), DATA_KEY => line_data } expanded[Utils::RelativeFileConverter.convert(key)] = extended_data end expanded end
file_hash(file)
click to toggle source
# File lib/coverband/adapters/base.rb, line 94 def file_hash(file) Coverband::Utils::FileHasher.hash(file) end
merge_expanded_data(new_expanded, old_expanded)
click to toggle source
# File lib/coverband/adapters/base.rb, line 135 def merge_expanded_data(new_expanded, old_expanded) { FIRST_UPDATED_KEY => old_expanded[FIRST_UPDATED_KEY], LAST_UPDATED_KEY => new_expanded[LAST_UPDATED_KEY], FILE_HASH => new_expanded[FILE_HASH], DATA_KEY => array_add(new_expanded[DATA_KEY], old_expanded[DATA_KEY]) } end
merge_reports(new_report, old_report, options = {})
click to toggle source
# File lib/coverband/adapters/base.rb, line 115 def merge_reports(new_report, old_report, options = {}) # transparently update from RUNTIME_TYPE = nil to RUNTIME_TYPE = :runtime # transparent update for format coveband_3_2 old_report = coverage(nil, override_type: nil) if old_report.nil? && type == Coverband::RUNTIME_TYPE new_report = expand_report(new_report) unless options[:skip_expansion] keys = (new_report.keys + old_report.keys).uniq keys.each do |file| new_report[file] = if new_report[file] && old_report[file] && new_report[file][FILE_HASH] == old_report[file][FILE_HASH] merge_expanded_data(new_report[file], old_report[file]) elsif new_report[file] new_report[file] else old_report[file] end end new_report end
merged_coverage(types)
click to toggle source
# File lib/coverband/adapters/base.rb, line 88 def merged_coverage(types) types.reduce({}) do |data, type| merge_reports(data, coverage(type), skip_expansion: true) end end
simulated_runtime_coverage()
click to toggle source
# File lib/coverband/adapters/base.rb, line 79 def simulated_runtime_coverage runtime_data = coverage(Coverband::RUNTIME_TYPE) eager_data = coverage(Coverband::EAGER_TYPE) eager_data.values do |vals| vals["data"].map! { |line_coverage| line_coverage ? (0 - line_coverage) : line_coverage } end merge_reports(runtime_data, eager_data, skip_expansion: true) end
split_coverage(types)
click to toggle source
# File lib/coverband/adapters/base.rb, line 69 def split_coverage(types) types.reduce({}) do |data, type| if type == Coverband::RUNTIME_TYPE && Coverband.configuration.simulate_oneshot_lines_coverage data.update(type => simulated_runtime_coverage) else data.update(type => coverage(type)) end end end