| Class | Spec::Runner::BehaviourRunner |
| In: |
lib/spec/runner/behaviour_runner.rb
|
| Parent: | Object |
| FILE_SORTERS | = | { 'mtime' => lambda {|file_a, file_b| File.mtime(file_b) <=> File.mtime(file_a)} |
# File lib/spec/runner/behaviour_runner.rb, line 5 5: def initialize(options) 6: @behaviours = [] 7: @options = options 8: end
# File lib/spec/runner/behaviour_runner.rb, line 10
10: def add_behaviour(behaviour)
11: if !specified_examples.nil? && !specified_examples.empty? #&& behaviour.matches?(specified_examples)
12: behaviour.retain_examples_matching!(specified_examples) #if behaviour.matches?(specified_examples)
13: end
14: @behaviours << behaviour if behaviour.number_of_examples != 0 && !behaviour.shared?
15: end
# File lib/spec/runner/behaviour_runner.rb, line 49
49: def number_of_examples
50: @behaviours.inject(0) {|sum, behaviour| sum + behaviour.number_of_examples}
51: end
Runs all contexts and returns the number of failures.
# File lib/spec/runner/behaviour_runner.rb, line 18
18: def run(paths, exit_when_done)
19: unless paths.nil? # It's nil when running single specs with ruby
20: paths = find_paths(paths)
21: sorted_paths = sort_paths(paths)
22: load_specs(sorted_paths)
23: end
24: @options.reporter.start(number_of_examples)
25: behaviours = @options.reverse ? @behaviours.reverse : @behaviours
26: begin
27: run_behaviours(behaviours)
28: rescue Interrupt
29: ensure
30: @options.reporter.end
31: end
32: failure_count = @options.reporter.dump
33:
34: heckle if(failure_count == 0 && !@options.heckle_runner.nil?)
35:
36: if(exit_when_done)
37: exit_code = (failure_count == 0) ? 0 : 1
38: exit(exit_code)
39: end
40: failure_count
41: end
# File lib/spec/runner/behaviour_runner.rb, line 43
43: def run_behaviours(behaviours)
44: behaviours.each do |behaviour|
45: behaviour.run(@options.reporter, @options.dry_run, @options.reverse, @options.timeout)
46: end
47: end
# File lib/spec/runner/behaviour_runner.rb, line 61
61: def sort_paths(paths)
62: sorter = sorter(paths)
63: paths = paths.sort(&sorter) unless sorter.nil?
64: paths
65: end