Sha256: 00e39a64bb1069d542b868151e8ba3e1070051704db9e39a22fead553b4315f2

Contents?: true

Size: 1.68 KB

Versions: 7

Compression:

Stored size: 1.68 KB

Contents

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

7 entries across 7 versions & 1 rubygems

Version Path
mutant-0.3.0.beta21 lib/mutant/runner/config.rb
mutant-0.3.0.beta20 lib/mutant/runner/config.rb
mutant-0.3.0.beta19 lib/mutant/runner/config.rb
mutant-0.3.0.beta18 lib/mutant/runner/config.rb
mutant-0.3.0.beta17 lib/mutant/runner/config.rb
mutant-0.3.0.beta16 lib/mutant/runner/config.rb
mutant-0.3.0.beta15 lib/mutant/runner/config.rb