Sha256: 3f9c85eb4ddab1b9ebca1dc6a81bee5f50449840789ce28a11e2cb69d3efd38b

Contents?: true

Size: 1.7 KB

Versions: 13

Compression:

Stored size: 1.7 KB

Contents

# encoding: utf-8

module Mutant
  class Runner
    # Runner for object config
    class Config < self

      register Mutant::Config

      # Run runner for object
      #
      # @param [Config] config
      # @param [Object] object
      #
      # @return [Runner]
      #
      # @api private
      #
      def self.run(config)
        handler = lookup(config.class)
        handler.new(config)
      end

      # Return subject runners
      #
      # @return [Enumerable<Runner::Subject>]
      #
      # @api private
      #
      attr_reader :subjects

      # Return failed subjects
      #
      # @return [Enumerable<Subject>]
      #
      # @api private
      #
      def failed_subjects
        subjects.reject(&:success?)
      end
      memoize :failed_subjects

      # Test if run was successful
      #
      # @return [true]
      #   if run was successful
      #
      # @return [false]
      #   otherwise
      #
      # @api private
      #
      def success?
        failed_subjects.empty?
      end
      memoize :success?

      # Return strategy
      #
      # @return [Strategy]
      #
      # @api private
      #
      def strategy
        config.strategy
      end

    private

      # Run config
      #
      # @return [undefined]
      #
      # @api private
      #
      def run_subjects
        strategy = self.strategy
        strategy.setup
        @subjects = dispatch(config.subjects)
        strategy.teardown
      end

      # Run with strategy management
      #
      # @return [undefined]
      #
      # @api private
      #
      def run
        report(config)
        run_subjects
        @end = Time.now
        report(self)
      end

    end # Config
  end # Runner
end # Mutant

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
mutant-0.3.6 lib/mutant/runner/config.rb
mutant-0.3.5 lib/mutant/runner/config.rb
mutant-0.3.4 lib/mutant/runner/config.rb
mutant-0.3.3 lib/mutant/runner/config.rb
mutant-0.3.2 lib/mutant/runner/config.rb
mutant-0.3.1 lib/mutant/runner/config.rb
mutant-0.3.0 lib/mutant/runner/config.rb
mutant-0.3.0.rc5 lib/mutant/runner/config.rb
mutant-0.3.0.rc4 lib/mutant/runner/config.rb
mutant-0.3.0.rc3 lib/mutant/runner/config.rb
mutant-0.3.0.rc2 lib/mutant/runner/config.rb
mutant-0.3.0.rc1 lib/mutant/runner/config.rb
mutant-0.3.0.beta22 lib/mutant/runner/config.rb