lib/rubysl/coverage/coverage.rb in rubysl-coverage-2.0.3 vs lib/rubysl/coverage/coverage.rb in rubysl-coverage-2.1
- old
+ new
@@ -1,55 +1,22 @@
+require "rubinius/coverage"
+
module Coverage
- @coverage_tool = nil
+ @coverage_generator = nil
def self.start
- require 'rubinius/coverage'
-
- @coverage_tool = Rubinius::Coverage.new
- @coverage_tool.start
+ @coverage_generator = Rubinius::Coverage.new
+ @coverage_generator.start
end
def self.result
- return unless @coverage_tool
-
- map = @coverage_tool.stop.results
-
- kernel = File.dirname Rubinius::KERNEL_PATH
-
- coverage = Hash.new { |h, k| h[k] = [] }
-
- map.each do |id, attr|
- counts = attr[:counts]
- code = attr[:code]
- next unless code
-
- file = code.file.to_s
- next if file[0] == ?(
- file = File.join kernel, file unless file[0] == ?/
-
- code.lines.to_a.drop(1).each_slice(2) do |line, _|
- next unless line > 0
- next if coverage[file][line - 1]
-
- coverage[file][line - 1] = 0
- end
-
- counts.each do |ip, count|
- line = code.line_from_ip(ip)
- next unless line > 0
-
- coverage[file][line - 1] = count
- end
+ if @coverage_generator
+ @coverage_generator.result
+ else
+ {}
end
+ end
- coverage.each do |file, counts|
- next unless File.exists? file
-
- lines = File.open(file, "r") { |f| f.lines.count }
- next unless lines > 0
-
- counts[lines - 1] = nil unless counts.size == lines
- end
-
- coverage
+ class << self
+ alias_method :peek_result, :result
end
end