danmayer/coverband

View on GitHub
lib/coverband/utils/jruby_ext.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

####
# This exists in CRuby, but not in JRuby, so add it
#
# Taken from: https://github.com/ruby/ruby/blob/c5eb24349a4535948514fe765c3ddb0628d81004/ext/coverage/lib/coverage.rb
####
module Coverage
  def self.line_stub(file)
    lines = File.foreach(file).map { nil }
    iseqs = [RubyVM::InstructionSequence.compile_file(file)]
    until iseqs.empty?
      iseq = iseqs.pop
      iseq.trace_points.each { |n, type| lines[n - 1] = 0 if type == :line }
      iseq.each_child { |child| iseqs << child }
    end
    lines
  end
end