Sha256: 617a32a7a04fed29465b7579f171533566c976cab3a6e9b4cec12ee51c61d7df

Contents?: true

Size: 1.27 KB

Versions: 3

Compression:

Stored size: 1.27 KB

Contents

module Rspec
  module Core
    class Runner

      def self.installed_at_exit?
        @installed_at_exit ||= false
      end

      def self.autorun
        return if installed_at_exit?
        @installed_at_exit = true
        at_exit { new.run(ARGV) ? exit(0) : exit(1) } 
      end

      def configuration
        Rspec.configuration
      end

      def reporter
        configuration.formatter
      end

      def run(args = [])
        configure(args)
        
        reporter.report(example_count) do |reporter|
          example_groups.run_all(reporter)
        end
        
        example_groups.success?
      end
      
    private

      def configure(args)
        Rspec::Core::ConfigurationOptions.new(args).apply_to(configuration)
        configuration.require_files_to_run
        configuration.configure_mock_framework
      end

      def example_count
        Rspec::Core.world.total_examples_to_run
      end

      def example_groups
        Rspec::Core.world.example_groups_to_run.extend(ExampleGroups)
      end

      module ExampleGroups
        def run_all(reporter)
          @success = self.inject(true) {|success, group| success &= group.run(reporter)}
        end

        def success?
          @success ||= false
        end
      end
      
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rspec-core-2.0.0.beta.8 lib/rspec/core/runner.rb
rspec-core-2.0.0.beta.7 lib/rspec/core/runner.rb
rspec-core-2.0.0.beta.6 lib/rspec/core/runner.rb