module Hoe::RCov

def activate_rcov_deps

def activate_rcov_deps
  dependency "rcov", "~> 0.9", :development
end

def define_rcov_tasks

def define_rcov_tasks
  begin # take a whack at defining rcov tasks
    task :isolate # ensure it exists
    task :rcov => :isolate do
      sh(*make_rcov_cmd)
    end
    task :clobber_rcov do
      rm_rf "coverage"
    end
    task :clobber => :clobber_rcov
    # this is for my emacs rcov overlay stuff on emacswiki.
    task :rcov_overlay do
      path = ENV["FILE"]
      rcov, eol = Marshal.load(File.read("coverage.info")).last[path], 1
      puts rcov[:lines].zip(rcov[:coverage]).map { |line, coverage|
        bol, eol = eol, eol + line.length
        [bol, eol, "#ffcccc"] unless coverage
      }.compact.inspect
    end
  rescue LoadError
    # skip
    task :clobber_rcov # in case rcov didn't load
  end
end

def make_rcov_cmd

def make_rcov_cmd
  rcov  = Gem.bin_wrapper "rcov"
  tests = test_globs.sort.map { |g| Dir.glob(g) }.flatten.map(&:inspect)
  cmd = %W[#{rcov}
           #{Hoe::RUBY_FLAGS}
           --text-report
           --no-color
           --save coverage.info
           -x ^/
           -x tmp/isolate
           --sort coverage
           --sort-reverse
           -o coverage
          ] + tests
  cmd
end