openstreetmap-website/vendor/gems/rspec-1.1.2/lib/spec/story/runner.rb
2008-01-22 16:39:09 +00:00

58 lines
1.9 KiB
Ruby

require 'spec/story/runner/scenario_collector.rb'
require 'spec/story/runner/scenario_runner.rb'
require 'spec/story/runner/story_runner.rb'
require 'spec/story/runner/story_parser.rb'
require 'spec/story/runner/story_mediator.rb'
require 'spec/story/runner/plain_text_story_runner.rb'
module Spec
module Story
module Runner
class << self
def run_options # :nodoc:
@run_options ||= ::Spec::Runner::OptionParser.parse(ARGV, $stderr, $stdout)
end
def story_runner # :nodoc:
unless @story_runner
@story_runner = StoryRunner.new(scenario_runner, world_creator)
run_options.story_formatters.each do |formatter|
register_listener(formatter)
end
Runner.register_exit_hook
end
@story_runner
end
def scenario_runner # :nodoc:
@scenario_runner ||= ScenarioRunner.new
end
def world_creator # :nodoc:
@world_creator ||= World
end
# Use this to register a customer output formatter.
def register_listener(listener)
story_runner.add_listener(listener) # run_started, story_started, story_ended, #run_ended
world_creator.add_listener(listener) # found_scenario, step_succeeded, step_failed, step_failed
scenario_runner.add_listener(listener) # scenario_started, scenario_succeeded, scenario_pending, scenario_failed
end
def register_exit_hook # :nodoc:
# TODO - when story runner uses test/unit runners like example runner does we can kill
# this and also the assorted Kernel.stub!(:at_exit) in examples
at_exit do
Runner.story_runner.run_stories unless $!
end
# TODO exit with non-zero status if run fails
end
def dry_run
run_options.dry_run
end
end
end
end
end