Sha256: 87a5eba814ce3605302ce55cdf362fdecff6cea56a092bc124645d43a79c1e45

Contents?: true

Size: 1.06 KB

Versions: 1

Compression:

Stored size: 1.06 KB

Contents

require 'assert/view/terminal'

module Assert
  class Runner

    # a Runner runs a suite of tests.

    def initialize(suite, view)
      raise ArgumentError if !suite.kind_of?(Suite)
      @suite = suite
      @view = view
    end

    def run(*args)
      @suite.setup_blocks.each do |setup| # TODO: tests!
        setup.call
      end
      @view.render do
        benchmark { run_suite }
      end
      @suite.teardown_blocks.each do |teardown| # TODO: tests!
        teardown.call
      end
      count(:failed) + count(:errored)
    end

    def count(type)
      @suite.count(type)
    end

    protected

    def tests_to_run
      tests = @suite.tests

      # order tests randomly
      max = tests.size
      srand
      seed = srand % 0xFFFF
      srand seed
      tests.sort.sort_by { rand max }
      tests
    end

    private

    def benchmark
      @suite.start_time = Time.now
      yield if block_given?
      @suite.end_time = Time.now
    end

    def run_suite
      # TODO: parallel running
      tests_to_run.each {|test| test.run(@view)}
    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
assert-0.1.0 lib/assert/runner.rb