class UICov::Merge

Constants

DEFAULT_FILENAME
OPTIONS
USAGE_INFO

Public Class Methods

new() click to toggle source
# File lib/uicov/commands/merge.rb, line 20
def initialize
  @merged_file = DEFAULT_FILENAME
end

Public Instance Methods

do_job(args) click to toggle source
# File lib/uicov/commands/merge.rb, line 24
def do_job(args)
  usage 'Missed coverage file', USAGE_INFO if args.empty?
  cov_files = process_args args
  merge(cov_files)
  @merged.save(@merged_file)
end
merge(cov_files) click to toggle source
# File lib/uicov/commands/merge.rb, line 31
def merge(cov_files)
  Log.warn 'Only one file is given. Nothing to merge.' if cov_files.size == 1
  @merged = CovData.load cov_files[0]
  cov_files[1..-1].each do |cov_file|
    @cd = CovData.load cov_file
    @cd.screens.each do |name, screen_data|
      msd = @merged.screens[name]
      if msd.nil?
        @merged.screens[name] = screen_data.dup
      else
        merge_screen_data msd, screen_data
      end
    end
    @merged.input_files.merge! @cd.input_files
  end
  return @merged
end

Private Instance Methods

merge_screen_data(msd, sd) click to toggle source
# File lib/uicov/commands/merge.rb, line 59
def merge_screen_data(msd, sd)
  sd.elements.each do |name, sde|
    me = msd.elements[name]
    if me.nil?
      msd.elements[name] = sde.dup
    else
      me.hit(sde.hits)
    end
  end
  sd.transitions.each do |name, sde|
    me = msd.transitions[name]
    if me.nil?
      msd.transitions[name] = sde.dup
    else
      me.hit(sde.hits)
    end
  end
  sd.actions.each do |name, sde|
    me = msd.actions[name]
    if me.nil?
      msd.actions[name] = sde.dup
    else
      me.hit(sde.hits)
    end
  end
  sd.checks.each do |name, sde|
    me = msd.checks[name]
    if me.nil?
      msd.checks[name] = sde.dup
    else
      me.hit(sde.hits)
    end
  end
end
process_args(args) click to toggle source
# File lib/uicov/commands/merge.rb, line 50
def process_args(args)
  merged_file_option = args.grep(/--merged-file=.*/)[0]
  if merged_file_option
    @merged_file = File.expand_path merged_file_option.gsub(/.*=(.+)/, '\1')
    args.delete_if { |e| e == merged_file_option }
  end
  return args
end