27: def process_work_units
28: prepare
29:
30: examples = example_groups.map {|g| g.send(:examples_to_run)}.flatten
31: examples_by_location = {}
32: examples.each do |example|
33: raise "duplicate example: #{example.identifier}" if examples_by_location[example.identifier]
34: examples_by_location[example.identifier] = example
35: blackboard.write_work Spec::WorkUnit.new(example.identifier)
36: end
37:
38: success = true
39:
40: missing_exmaples = ResultReader.new(blackboard).read(examples_by_location) do |example, result|
41: @options.reporter.example_finished(example, result.error)
42: success &= result.success?
43: end
44:
45: success &= missing_exmaples.empty?
46:
47: missing_exmaples.each do |identifier, example|
48: @options.reporter.example_finished(example, WorkUnitNeverReceivedError.new)
49: end
50:
51: success
52: ensure
53: finish
54: end