Sha256: c6e10f1beef0bf5bae0e2af543b5d6aef1b5dcae90a0b3636fe0d5cd843aa7ce

Contents?: true

Size: 1022 Bytes

Versions: 2

Compression:

Stored size: 1022 Bytes

Contents

module Pronto
  module ProntoSimplecov
    class Runner < Runner
      def run
        return [] unless @patches
        return [] if coverage.empty?
        @patches.map { |patch| process(patch) }
                .flatten.compact
      end

      def process(patch)
        file_coverage = coverage[patch.new_file_full_path.to_s]
        return unless file_coverage
        patch.added_lines
             .select { |line| file_coverage.line(line.new_lineno)&.missed? }
             .map { |line| message(line) }
      end

      def message(line)
        path = line.patch.delta.new_file[:path]
        Message.new(path, line, :error, 'This change has no test coverage', nil, self.class)
      end

      def coverage
        @coverage ||= begin
                        merged_result = SimpleCov::ResultMerger.merged_result
                        return {} if merged_result.nil?
                        Hash[merged_result.files.map { |file| [file.filename, file] }]
                      end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pronto-simplecov-0.11.0 lib/pronto/pronto_simplecov/runner.rb
pronto-simplecov-0.10.1 lib/pronto/pronto_simplecov/runner.rb