Sha256: 02cb85ffe0fa690e3ec324d11f4b81736dc35fed411a59495e35f00428f5747d

Contents?: true

Size: 1.59 KB

Versions: 14

Compression:

Stored size: 1.59 KB

Contents

# frozen_string_literal: true

module Mutant
  module Runner
    class Sink
      include Concord.new(:env)

      # Initialize object
      #
      # @return [undefined]
      def initialize(*)
        super
        @start           = env.world.timer.now
        @subject_results = {}
      end

      # Runner status
      #
      # @return [Result::Env]
      def status
        Result::Env.new(
          env:             env,
          runtime:         env.world.timer.now - @start,
          subject_results: @subject_results.values
        )
      end

      # Test if scheduling stopped
      #
      # @return [Boolean]
      def stop?
        status.stop?
      end

      # Handle mutation finish
      #
      # @param [Result::Mutation] mutation_result
      #
      # @return [self]
      def result(mutation_result)
        subject = mutation_result.mutation.subject

        @subject_results[subject] = Result::Subject.new(
          subject:          subject,
          coverage_results: previous_coverage_results(subject).dup << coverage_result(mutation_result),
          tests:            env.selections.fetch(subject)
        )

        self
      end

    private

      def coverage_result(mutation_result)
        Result::Coverage.new(
          mutation_result: mutation_result,
          criteria_result: mutation_result.criteria_result(env.config.coverage_criteria)
        )
      end

      def previous_coverage_results(subject)
        subject_result = @subject_results.fetch(subject) { return EMPTY_ARRAY }
        subject_result.coverage_results
      end

    end # Sink
  end # Runner
end # Mutant

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
mutant-0.10.20 lib/mutant/runner/sink.rb
mutant-0.10.19 lib/mutant/runner/sink.rb
mutant-0.10.18 lib/mutant/runner/sink.rb
mutant-0.10.17 lib/mutant/runner/sink.rb
mutant-0.10.16 lib/mutant/runner/sink.rb
mutant-0.10.15 lib/mutant/runner/sink.rb
mutant-0.10.14 lib/mutant/runner/sink.rb
mutant-0.10.13 lib/mutant/runner/sink.rb
mutant-0.10.12 lib/mutant/runner/sink.rb
mutant-0.10.11 lib/mutant/runner/sink.rb
mutant-0.10.10 lib/mutant/runner/sink.rb
mutant-0.10.9 lib/mutant/runner/sink.rb
mutant-0.10.8 lib/mutant/runner/sink.rb
mutant-0.10.7 lib/mutant/runner/sink.rb