Sha256: 6cfdde92c221b95357a7debbc9931cb127cf3e8c15fa888c64bde912bc0ff985

Contents?: true

Size: 1.08 KB

Versions: 24

Compression:

Stored size: 1.08 KB

Contents

# frozen_string_literal: true

require 'coverage'
require 'simplecov'

class << SimpleCov::LinesClassifier
  alias_method :orig_whitespace_line?, :whitespace_line?
  def whitespace_line?(line)
    line.strip =~ /^(begin|end|ensure|else|\})|(\s*rescue\s.+)$/ || orig_whitespace_line?(line)
  end
end

module Coverage
  EXCLUDE = %w{coverage eg helper run
  }.map { |n| File.expand_path("test/#{n}.rb") }

  LIB_FILES = Dir["#{File.join(FileUtils.pwd, 'lib')}/polyphony/**/*.rb"]

  class << self
    def relevant_lines_for_filename(filename)
      @classifier ||= SimpleCov::LinesClassifier.new
      @classifier.classify(IO.read(filename).lines)
    end

    def start
      @result = {}
      trace = TracePoint.new(:line) do |tp|
        next if tp.path =~ /\(/
      
        absolute = File.expand_path(tp.path)
        next unless LIB_FILES.include?(absolute)# =~ /^#{LIB_DIR}/
        
        @result[absolute] ||= relevant_lines_for_filename(absolute)
        @result[absolute][tp.lineno - 1] = 1
      end
      trace.enable
    end

    def result
      @result
    end
  end
end

SimpleCov.start

Version data entries

24 entries across 24 versions & 3 rubygems

Version Path
tipi-0.43 test/coverage.rb
tipi-0.42 test/coverage.rb
tipi-0.41 test/coverage.rb
tipi-0.40 test/coverage.rb
tipi-0.39 test/coverage.rb
tipi-0.38 test/coverage.rb
tipi-0.37.2 test/coverage.rb
tipi-0.37.1 test/coverage.rb
tipi-0.37 test/coverage.rb
tipi-0.36 test/coverage.rb
tipi-0.35 test/coverage.rb
tipi-0.34 test/coverage.rb
tipi-0.33 test/coverage.rb
tipi-0.32 test/coverage.rb
tipi-0.31 test/coverage.rb
tipi-0.30 test/coverage.rb
polyphony-http-0.28 test/coverage.rb
polyphony-http-0.27 test/coverage.rb
polyphony-http-0.26 test/coverage.rb
polyphony-http-0.25 test/coverage.rb