<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>vendor/plugins/rspec-rails/.gitignore</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/MIT-LICENSE</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/README</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/Rakefile</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec/CHANGES</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec/rspec_generator.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec/templates/all_stories.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec/templates/previous_failures.txt</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec/templates/rcov.opts</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec/templates/script/spec</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec/templates/script/spec_server</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec/templates/spec.opts</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec/templates/spec_helper.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec/templates/stories_helper.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec_controller/USAGE</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec_controller/rspec_controller_generator.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec_controller/templates/controller_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec_controller/templates/helper_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec_controller/templates/view_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec_model/USAGE</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec_model/rspec_model_generator.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec_model/templates/model_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec_scaffold/rspec_scaffold_generator.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec_scaffold/templates/controller_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec_scaffold/templates/edit_erb_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec_scaffold/templates/helper_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec_scaffold/templates/index_erb_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec_scaffold/templates/new_erb_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec_scaffold/templates/routing_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/generators/rspec_scaffold/templates/show_erb_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/init.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/autotest/discover.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/autotest/rails_rspec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/example.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/example/assigns_hash_proxy.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/example/controller_example_group.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/example/functional_example_group.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/example/helper_example_group.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/example/model_example_group.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/example/rails_example_group.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/example/render_observer.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/example/view_example_group.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/extensions.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/extensions/action_controller/base.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/extensions/action_controller/rescue.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/extensions/action_controller/test_response.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/extensions/action_view/base.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/extensions/active_record/base.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/extensions/object.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/extensions/spec/example/configuration.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/extensions/spec/matchers/have.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/matchers.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/matchers/assert_select.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/matchers/have_text.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/matchers/include_text.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/matchers/redirect_to.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/matchers/render_template.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/story_adapter.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/lib/spec/rails/version.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/autotest/mappings_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/autotest/rails_rspec_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/example/assigns_hash_proxy_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/example/configuration_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/example/controller_isolation_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/example/controller_spec_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/example/example_group_factory_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/example/helper_spec_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/example/model_spec_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/example/shared_behaviour_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/example/test_unit_assertion_accessibility_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/example/view_spec_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/extensions/action_controller_rescue_action_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/extensions/action_view_base_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/extensions/active_record_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/matchers/assert_select_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/matchers/description_generation_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/matchers/errors_on_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/matchers/have_text_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/matchers/include_text_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/matchers/redirect_to_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/matchers/render_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/mocks/ar_classes.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/mocks/mock_model_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/mocks/stub_model_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/sample_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/spec_server_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails/spec_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/rails_suite.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec/spec_helper.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/controllers/action_view_base_spec_controller.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/controllers/controller_spec_controller.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/controllers/redirect_spec_controller.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/controllers/render_spec_controller.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/controllers/rjs_spec_controller.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/helpers/explicit_helper.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/helpers/more_explicit_helper.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/helpers/plugin_application_helper.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/helpers/view_spec_helper.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/controller_spec/_partial.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/controller_spec/action_setting_flash_after_session_reset.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/controller_spec/action_setting_flash_before_session_reset.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/controller_spec/action_setting_the_assigns_hash.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/controller_spec/action_with_errors_in_template.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/controller_spec/action_with_template.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/render_spec/_a_partial.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/render_spec/some_action.js.rjs</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/render_spec/some_action.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/render_spec/some_action.rjs</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/rjs_spec/_replacement_partial.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/rjs_spec/hide_div.rjs</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/rjs_spec/hide_page_element.rjs</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/rjs_spec/insert_html.rjs</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/rjs_spec/replace.rjs</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/rjs_spec/replace_html.rjs</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/rjs_spec/replace_html_with_partial.rjs</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/rjs_spec/visual_effect.rjs</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/rjs_spec/visual_toggle_effect.rjs</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/tag_spec/no_tags.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/tag_spec/single_div_with_no_attributes.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/tag_spec/single_div_with_one_attribute.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/_partial.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/_partial_used_twice.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/_partial_with_local_variable.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/_partial_with_sub_partial.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/_spacer.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/accessor.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/entry_form.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/explicit_helper.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/foo/show.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/implicit_helper.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/multiple_helpers.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/template_with_partial.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/template_with_partial_using_collection.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/spec_resources/views/view_spec/template_with_partial_with_array.rhtml</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/stories/all.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/stories/helper.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/stories/steps/people.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/stories/transactions_should_rollback</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/stories/transactions_should_rollback.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec-rails/tasks/rspec.rake</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/.autotest</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/.gitignore</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/TODO</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/autogenerated_docstrings_example.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/before_and_after_example.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/behave_as_example.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/custom_expectation_matchers.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/custom_formatter.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/dynamic_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/file_accessor.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/file_accessor_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/greeter_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/helper_method_example.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/io_processor.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/io_processor_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/legacy_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/mocking_example.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/multi_threaded_behaviour_runner.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/nested_classes_example.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/partial_mock_example.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/pending_example.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/predicate_example.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/priority.txt</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/shared_example_group_example.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/shared_stack_examples.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/spec_helper.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/stack.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/stack_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/stack_spec_with_nested_example_groups.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/pure/stubbing_example.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/adder.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/addition</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/addition.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/calculator.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/.loadpath</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/README.txt</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/everything.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/examples/examples.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/examples/game_behaviour.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/examples/grid_behaviour.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/ICanCreateACell.story</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/ICanKillACell.story</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/TheGridWraps.story</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/create_a_cell.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/helper.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/kill_a_cell.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/steps.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/stories.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/behaviour/stories/stories.txt</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/life.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/life/game.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/game-of-life/life/grid.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/helper.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/examples/stories/steps/addition_steps.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/failing_examples/README.txt</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/failing_examples/failing_autogenerated_docstrings_example.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/example.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/example/configuration.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/example/errors.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/example/example_group.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/example/example_group_factory.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/example/example_group_methods.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/example/example_matcher.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/example/example_methods.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/example/module_inclusion_warnings.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/example/module_reopening_fix.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/example/pending.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/example/shared_example_group.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/extensions/class.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/extensions/metaclass.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/interop/test.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/interop/test/unit/autorunner.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/interop/test/unit/testcase.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/interop/test/unit/testresult.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/interop/test/unit/testsuite_adapter.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/interop/test/unit/ui/console/testrunner.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/matchers/exist.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/runner/class_and_arguments_parser.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/runner/example_group_runner.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/failing_example_groups_formatter.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/profile_formatter.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/story/html_formatter.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/story/plain_text_formatter.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/text_mate_formatter.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/story/extensions/regexp.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/story/extensions/string.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/story/runner/plain_text_story_runner.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/story/runner/story_mediator.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/story/runner/story_parser.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/story/step.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/lib/spec/story/step_group.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/autotest_matchers.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/ruby_forker.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec.opts</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/example/configuration_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/example/example_group/described_module_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/example/example_group/warning_messages_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/example/example_group_class_definition_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/example/example_group_factory_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/example/example_group_methods_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/example/example_group_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/example/example_matcher_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/example/example_methods_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/example/example_runner_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/example/example_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/example/nested_example_group_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/example/pending_module_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/example/predicate_matcher_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/example/shared_example_group_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/example/subclassing_example_group_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/interop/test/unit/resources/spec_that_fails.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/interop/test/unit/resources/spec_that_passes.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/interop/test/unit/resources/spec_with_errors.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/interop/test/unit/resources/test_case_that_fails.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/interop/test/unit/resources/test_case_that_passes.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/interop/test/unit/resources/test_case_with_errors.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/interop/test/unit/spec_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/interop/test/unit/test_unit_spec_helper.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/interop/test/unit/testcase_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/interop/test/unit/testsuite_adapter_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/mocks/bug_report_10263_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/mocks/bug_report_15719_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/mocks/hash_including_matcher_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/runner/class_and_argument_parser_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/profile_formatter_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/spec_mate_formatter_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/story/html_formatter_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/runner/output_one_time_fixture.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/runner/output_one_time_fixture_runner.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/runner/output_one_time_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/runner/resources/a_bar.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/runner/resources/a_foo.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/runner/resources/a_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/runner/spec_drb.opts</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/runner/spec_parser/spec_parser_fixture.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/story/extensions/main_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/story/runner/plain_text_story_runner_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/story/runner/story_mediator_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/story/runner/story_parser_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/story/step_group_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/spec/spec/story/step_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/stories/all.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/stories/example_groups/autogenerated_docstrings</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/stories/example_groups/example_group_with_should_methods</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/stories/example_groups/nested_groups</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/stories/example_groups/output</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/stories/example_groups/stories.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/stories/helper.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/stories/interop/examples_and_tests_together</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/stories/interop/stories.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/stories/interop/test_case_with_should_methods</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/stories/pending_stories/README</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/stories/resources/helpers/cmdline.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/stories/resources/helpers/story_helper.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/stories/resources/matchers/smart_match.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/stories/resources/spec/example_group_with_should_methods.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/stories/resources/spec/simple_spec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/stories/resources/steps/running_rspec.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/stories/resources/stories/failing_story.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/stories/resources/test/spec_and_test_together.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/stories/resources/test/test_case_with_should_methods.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/story_server/prototype/javascripts/builder.js</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/story_server/prototype/javascripts/controls.js</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/story_server/prototype/javascripts/dragdrop.js</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/story_server/prototype/javascripts/effects.js</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/story_server/prototype/javascripts/prototype.js</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/story_server/prototype/javascripts/rspec.js</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/story_server/prototype/javascripts/scriptaculous.js</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/story_server/prototype/javascripts/slider.js</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/story_server/prototype/javascripts/sound.js</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/story_server/prototype/javascripts/unittest.js</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/story_server/prototype/lib/server.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/story_server/prototype/stories.html</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/story_server/prototype/stylesheets/rspec.css</filename>
    </added>
    <added>
      <filename>vendor/plugins/rspec/story_server/prototype/stylesheets/test.css</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,4 +1,99 @@
-== Version 1.0.9 (in SVN)
+== Version 1.1.4 (trunk)
+
+Maintenance release.
+
+Note: we've removed the metaclass method from Object. There were some
+generated specs that used it, and they will now break. Just replace the
+metaclass call with (class &lt;&lt; self; self; end) and all will be well.
+
+* Setting mock_model object id with stubs hash - patch from Adam Meehan
+* pending steps print out yellow in stories (patch from Kyle Hargraves)
+* Deprecation warnings for specs that assume auto-inclusion of modules. Closes #326 (patch from Scott Taylor)
+* mock.should_not_receive(:anything) fails fast (once again)
+* Added as_new_record to stub_model e.g. stub_model(Foo).as_new_record
+* Improved stub_model such that new_record? does &quot;the right thing&quot;
+* Patch from Pat Maddox to get integrate_views to work in nested example groups.
+* Patch from Pat Maddox to get controller_name to work in nested example groups.
+* Patch from Corey Haines to add include_text matcher (rspec_on_rails)
+* Patch from Antti Tarvainen to stop files from being loaded repeatedly when running heckle. Closes #333.
+* Fixed bug in which session object in example was not the same instance used in the controller. Closes #331. 
+* Added stub_model method which creates a real model instance with :id stubbed and data access prohibited.
+* Applied patch from Antti Tarvainen to fix bug where heckle runs rspec runs heckle runs rspec etc. Closes #280.
+* Applied patch from Zach Dennis to merge :steps functionality to :steps_for. Closes #324.
+* Applied patch from Pat Maddox to handle redirect_to w/ SSL. Closes #320.
+* Applied patch from Ryan Davis to add eval of block passed to raise_error matcher. Closes #321.
+* alias :context :describe in example_group_methods. Closes #312.
+* Applied patch from Ben Mabey to make the Story runner exit with a non-0 exit code on failing stories. Closes #228.
+* Added #helper and #assigns to helper specs.
+* Applied patch from Bryan Helmkamp to tweak format of generated spec.opts to be more obvious. Closes #162.
+* Tweaked list of exceptions (ignores) for autotest with rspec_on_rails.
+* Applied patch from Coda Hale to get the :red hook called in autotest. Closes #279.
+* Applied patch from Patrick Ritchie to support --drb in spec.opts. Closes #274, #293.
+* Applied patch from Rick Olson to get rspec_on_rails working with rails edge (&gt;= 8862)
+* Moved metaclass method from Object to an internal module which gets included where it is needed.
+* Applied patch from Dayo Esho: and_yield clobbers return value from block. Closes #217.
+* Applied patch from Bob Cotton:  ExampleGroupFactory.default resets previously registered types. Closes #222.
+* Applied patch from Mike Williams to support the lib directory in rails apps with the Textmate Alternate File command. Closes #276.
+* ExampleGroupMethods#xspecify aliases #xit
+* A SharedExampleGroup can be created within another ExampleGroup.
+* Applied patch from Bob Cotton: Nested ExampleGroups do not have a spec_path. Closes #224.
+* Applied patch from Wincent Colaiuta to invert sense of &quot;spec --diff&quot;. Closes #281.
+* Allow any type of render in view specs. Closes #57.
+* Applied patch from Ian White to get rspec working with edge rails (8804). Closes #271.
+
+== Version 1.1.3
+
+Maintenance release.
+Notice to autotest users: you must also upgrade to ZenTest-3.9.0.
+
+* Tightened up exceptions list in autotest/rails_spec. Closes #264.
+* Applied patch from Ryan Davis for ZenTest-3.9.0 compatibility
+* Applied patch from Kero to add step_upcoming to story listeners. Closes #253.
+* Fixed bug where the wrong named error was not always caught by &quot;should raise_error&quot;
+* Applied patch from Luis Lavena: No coloured output on Windows due missing RUBYOPT. Closes #244.
+* Applied patch from Craig Demyanovich to add support for &quot;should_not render_template&quot; to rspec_on_rails. Closes #241.
+* Added --pattern (-p for short) option to control what files get loaded. Defaults to '**/*_spec.rb'
+* Exit with non-0 exit code if examples *or tests* (in test/unit interop mode) fail. Closes #203.
+* Moved at_exit hook to a method in Spec::Runner which only runs if specs get loaded. Closes #242.
+* Applied patch from kakutani ensuring that base_view_path gets cleared after each view example. Closes #235.
+* More tweaks to regexp step names
+* Fixed focused specs in nested ExampleGroups. Closes #225.
+
+== Version 1.1.2
+
+Minor bug fixes/enhancements.
+Notice to autotest users: you must also upgrade to ZenTest-3.8.0.
+
+* RSpec's Autotest subclasses compatible with ZenTest-3.8.0 (thanks to Ryan Davis for making it easier on Autotest subs).
+* Applied patch from idl to add spec/lib to rake stats. Closes #226.
+* calling setup_fixtures and teardown_fixtures for Rails &gt;= r8570. Closes #219.
+* Applied patch from Josh Knowles using ActiveSupport's Inflector (when available) to make 'should have' read a bit better. Closes #197.
+* Fixed regression in 1.1 that caused failing examples to fail to generate their own names. Closes #209.
+* Applied doc patch from Jens Kr&#228;mer for capturing content_for
+* Applied patch from Alexander Lang to clean up story steps after each story. Closes #198.
+* Applied patch from Josh Knowles to support 'string_or_response.should have_text(...)'. Closes #193.
+* Applied patch from Ian Dees to quiet the Story Runner backtrace. Closes #183.
+* Complete support for defining steps with regexp 'names'.
+
+== Version 1.1.1
+
+Bug fix release.
+
+* Fix regression in 1.1.0 that caused transactions to not get rolled back between examples.
+* Applied patch from Bob Cotton to reintroduce ExampleGroup.description_options. Closes LH[#186]
+
+== Version 1.1.0
+
+The &quot;tell me a story and go nest yourself&quot; release.
+
+* Applied patch from Mike Vincent to handle generators rails &gt; 2.0.1. Closes LH[#181]
+* Formatter.pending signature changed so it gets passed an ExampleGroup instance instead of the name ( LH[#180])
+* Fixed LH[#180] Spec::Rails::Example::ModelExampleGroup and friends show up in rspec/rails output
+* Spec::Rails no longer loads ActiveRecord extensions if it's disabled in config/boot.rb
+* Applied LH[#178] small annoyances running specs with warnings enabled (Patch from Mikko Lehtonen)
+* Tighter integration with Rails fixtures. Take advantage of fixture caching to get performance improvements (Thanks to Pat Maddox, Nick Kallen, Jonathan Barnes, and Curtis)
+
+== Version 1.1.0-RC1
 
 Textmate Bundle users - this release adds a new RSpec bundle that highlights describe, it, before and after and
 provides navigation to descriptions and examples (rather than classes and methods). When you first install this,
@@ -13,6 +108,40 @@ CMD-R runs all the specs in one file
 CMD-SHIFT-R runs an individual spec
 CMD-OPT-R runs any files or directories selected in the TextMate drawer
 
+rspec_on_rails users - don't forget to run script/generate rspec
+
+* Added shared_examples_for method, which you can (should) use instead of describe Foo, :shared =&gt; true
+* Applied LH[#168] Fix describe Object, &quot;description contains a # in it&quot; (Patch from Martin Emde)
+* Applied LH[#15] Reverse loading of ActionView::Base helper modules (Patch from Mark Van Holstyn)
+* Applied LH[#149] Update contribute page to point towards lighthouse (Patch from Josh Knowles)
+* Applied LH[#142] verify_rcov fails with latest rcov (Patch from Kyle Hargraves)
+* Applied LH[#10] Allow stubs to yield and return values (Patch from Pat Maddox)
+* Fixed LH[#139] version.rb in trunk missing svn last changed number
+* Applied LH[#14] Adding support for by_at_least/by_at_most in Change matcher (Patch from Saimon Moore)
+* Applied LH[#12] Fix for TM when switching to alternate file (Patch from Trevor Squires)
+* Applied LH[#133] ExampleMatcher should match against before(:all) (Patch from Bob Cotton)
+* Applied LH[#134] Only load spec inside spec_helper.rb (Patch from Mark Van Holstyn)
+* RSpec now bails immediately if there are examples with identical names.
+* Applied LH[#132]  Plain Text stories should support Given and Given: (Patch from Jarkko Laine)
+* Applied patch from Pat Maddox: Story Mediator - the glue that binds the plain text story parser with the rest of the system
+* Applied LH[#16] Have SimpleMatchers expose their description for specdocs (Patch from Bryan Helmkamp)
+* Stories now support --colour
+* Changed the DSL modules to Example (i.e. Spec::Example instead of Spec::DSL)
+* Applied [#15608] Story problem if parenthesis used in Given, When, Then or And (Patch from Sinclair Bain)
+* Applied [#15659] GivenScenario fails when it is a RailsStory (Patch from Nathan Sutton)
+* Fixed [#15639] rcov exclusion configuration. (Spec::Rails projects can configure rcov with spec/rcov.opts)
+* The rdoc formatter (--format rdoc) is gone. It was buggy and noone was using it.
+* Changed Spec::DSL::Behaviour to Spec::DSL::ExampleGroup
+* Changed Spec::DSL::SharedBehaviour to Spec::DSL::SharedExampleGroup
+* Applied [#14023] Small optimization for heavily proxied objects. (Patch from Ian Leitch)
+* Applied [#13943] ProfileFormatter (Top 10 slowest examples) (Patch from Ian Leitch)
+* Fixed [#15232] heckle is not working correctly in trunk (as of r2801)
+* Applied [#14399] Show pending reasons in HTML report (Patch from Bryan Helmkamp)
+* Discovered fixed: [#10263] mock &quot;leak&quot; when setting an expectation in a block passed to mock#should_receive
+* Fixed [#14671] Spec::DSL::ExampleRunner gives &quot;NO NAME because of --dry-run&quot; for every example for 'rake spec:doc'
+* Fixed [#14543] rspec_scaffold broken with Rails 2.0
+* Removed Patch [#10577] Rails with Oracle breaks 0.9.2 - was no longer necessary since we moved describe to the Main object (instead of Object)
+* Fixed [#14527] specs run twice on rails 1.2.4 and rspec/rspec_on_rails trunk
 * Applied [#14043] Change output ordering to show pending before errors (Patch from Mike Mangino)
 * Applied [#14095] Don't have ./script/generate rspec create previous_failures.txt (Patch from Bryan Helmkamp)
 * Applied [#14254] Improved error handling for Object#should and Object#should_not (Patch from Antti Tarvainen)
@@ -132,7 +261,7 @@ able to use the passed Example instance as if it were a String.
 * Fixed [#12079] auto-generated example name incomplete: should have 1 error on ....]
 * Applied [#12066] Docfix for mocks/mocks.page (Patch from Kyle Hargraves)
 * Fixed [#11891] script/generate rspec_controller fails to create appropriate views (from templates) on edge rails
-* Applied [#11921] Adds the correct controller_name from derived_controller_name() to the ViewExampleController (Patch from Eloy Duran)
+* Applied [#11921] Adds the correct controller_name from derived_controller_name() to the ViewExampleGroupController (Patch from Eloy Duran)
 * Fixed [#11903] config.include with behaviour_type 'hash' does not work
 * Examples without blocks and pending is now reported with a P instead of a *
 * Pending blocks that now pass are rendered blue</diff>
      <filename>vendor/plugins/rspec/CHANGES</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-Copyright (c) 2005-2007 The RSpec Development Team
+Copyright (c) 2005-2008 The RSpec Development Team
 
 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the</diff>
      <filename>vendor/plugins/rspec/MIT-LICENSE</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,13 @@
 == RSpec
 
-RSpec is a Behaviour Definition Framework intended for use in Behaviour
-Driven Development. RSpec plays the same role that a unit testing framework
-would play in a Test Driven Development environment, but does so using
-words and structures that better support BDD.
+RSpec is a Behaviour Driven Development framework with tools to express User Stories
+with Executable Scenarios and Executable Examples at the code level.
 
-RSpec ships with four modules:
+RSpec ships with several modules:
+
+Spec::Story provides a framework for expressing User Stories and Scenarios
+
+Spec::Example provides a framework for expressing Isolated Examples
 
 Spec::Matchers provides Expression Matchers for use with Spec::Expectations
 and Spec::Mocks.
@@ -18,58 +20,17 @@ can do things like:
 Spec::Mocks supports creating Mock Objects, Stubs, and adding Mock/Stub
 behaviour to your existing objects.
 
-Spec::Runner provides a very small but powerful DSL for writing executable
-examples of how your code should work.
-
-Spec::Story provides a framework for expressing User Stories
-
 == Installation
 
-The simplest approach is to install the gem:
+The simplest approach is to install the gem (as root in some environments):
 
-  gem install -r rspec #mac users must sudo
+  gem install -r rspec
 
 == Building the RSpec gem
-If you prefer to build the gem locally, check out source from svn://rubyforge.org/var/svn/rspec/trunk. Then
-do the following:
-
-  rake gem
-  gem install pkg/rspec-0.x.x.gem (you may have to sudo)
-
-== Running RSpec's specs
-In order to run RSpec's full suite of specs (rake pre_commit) you must install the following gems:
 
-* rake          # Runs the build script
-* rcov          # Verifies that the code is 100% covered by specs
-* webgen        # Generates the static HTML website
-* RedCloth      # Required by webgen
-* syntax        # Required by our own custom webgen extension to highlight ruby code
-* diff-lcs      # Required if you use the --diff switch
-* win32console  # Required by the --colour switch if you're on Windows
-* meta_project  # Required in order to make releases at RubyForge
-* heckle        # Required if you use the --heckle switch
-* hpricot       # Used for parsing HTML from the HTML output formatter in RSpec's own specs
-
-Once those are all installed, you should be able to run the suite with the following steps:
-
-* svn co svn://rubyforge.org/var/svn/rspec/trunk rspec
-* cd rspec
-* rake install_dependencies
-* cd example_rails_app
-* export RSPEC_RAILS_VERSION=1.2.3
-* rake rspec:generate_mysql_config
-* mysql -u root &lt; db/mysql_setup.sql
-* cd ..
-* rake pre_commit
-
-Note that RSpec itself - once built - doesn't have any dependencies outside the Ruby core 
-and stdlib - with a few exceptions:
-
-* The spec command line uses diff-lcs when --diff is specified.
-* The spec command line uses heckle when --heckle is specified.
-* The Spec::Rake::SpecTask needs RCov if RCov is enabled in the task.
-
-See http://rspec.rubyforge.org for further documentation.
-
-== Contributing
+If you prefer to build the gem locally:
 
+  git clone git://github.com/dchelimsky/rspec.git
+  cd rspec
+  rake gem
+  gem install pkg/rspec-0.x.x.gem #as root</diff>
      <filename>vendor/plugins/rspec/README</filename>
    </modified>
    <modified>
      <diff>@@ -4,14 +4,12 @@ require 'rake/gempackagetask'
 require 'rake/contrib/rubyforgepublisher'
 require 'rake/clean'
 require 'rake/rdoctask'
+require 'rake/testtask'
 require 'spec/version'
 dir = File.dirname(__FILE__)
-$LOAD_PATH.unshift(File.expand_path(&quot;#{dir}/../pre_commit/lib&quot;))
-require &quot;pre_commit&quot;
 
 # Some of the tasks are in separate files since they are also part of the website documentation
 load File.dirname(__FILE__) + '/rake_tasks/examples.rake'
-load File.dirname(__FILE__) + '/rake_tasks/examples_rdoc.rake'
 load File.dirname(__FILE__) + '/rake_tasks/examples_with_rcov.rake'
 load File.dirname(__FILE__) + '/rake_tasks/failing_examples_with_html.rake'
 load File.dirname(__FILE__) + '/rake_tasks/verify_rcov.rake'
@@ -22,40 +20,41 @@ PKG_FILE_NAME = &quot;#{PKG_NAME}-#{PKG_VERSION}&quot;
 PKG_FILES = FileList[
   '[A-Z]*',
   'lib/**/*.rb', 
-  'spec/**/*.rb', 
+  'spec/**/*',
   'examples/**/*',
-  'plugins/**/*'
+  'failing_examples/**/*',
+  'plugins/**/*',
+  'stories/**/*',
+  'rake_tasks/**/*'
 ]
-FileUtils.touch(File.dirname(__FILE__) + '/previous_failures.txt')
 
 task :default =&gt; [:verify_rcov]
+task :verify_rcov =&gt; [:spec, :stories]
 
 desc &quot;Run all specs&quot;
 Spec::Rake::SpecTask.new do |t|
   t.spec_files = FileList['spec/**/*_spec.rb']
-  t.spec_opts = ['--options', 'spec.opts']
-  t.rcov = true
-  t.rcov_dir = '../doc/output/coverage'
-  t.rcov_opts = ['--exclude', 'spec\/spec,bin\/spec,examples,\/var\/lib\/gems']
+  t.spec_opts = ['--options', 'spec/spec.opts']
+  unless ENV['NO_RCOV']
+    t.rcov = true
+    t.rcov_dir = '../doc/output/coverage'
+    t.rcov_opts = ['--exclude', 'spec\/spec,bin\/spec,examples,\/var\/lib\/gems,\/Library\/Ruby,\.autotest']
+  end
 end
 
-desc &quot;Run all translated specs&quot;
-Spec::Rake::SpecTask.new('translated_specs') do |t|
-  t.spec_files = FileList['translated_specs/**/*_spec.rb'].exclude( # These translate, but have other quirks
-    'translated_specs/spec/translator_spec.rb',
-    'translated_specs/spec/runner/formatter/html_formatter_spec.rb',
-    'translated_specs/spec/runner/option_parser_spec.rb'
-  )
-  t.spec_opts = ['--options', 'spec.opts']
-  t.rcov = true
-  t.rcov_dir = '../doc/output/coverage'
-  t.rcov_opts = ['--exclude', 'spec\/spec,bin\/spec,examples']
+desc &quot;Run all stories&quot;
+task :stories do
+  html = 'story_server/prototype/rspec_stories.html'
+  ruby &quot;stories/all.rb --colour --format plain --format html:#{html}&quot;
+  unless IO.read(html) =~ /&lt;span class=&quot;param&quot;&gt;/m
+    raise 'highlighted parameters are broken in story HTML'
+  end
 end
 
 desc &quot;Run all specs and store html output in doc/output/report.html&quot;
 Spec::Rake::SpecTask.new('spec_html') do |t|
-  t.spec_files = FileList['spec/**/*_spec.rb', 'vendor/RSpec.tmbundle/Support/spec/*_spec.rb']
-  t.spec_opts = ['--format html:../doc/output/report.html','--backtrace']
+  t.spec_files = FileList['spec/**/*_spec.rb']
+  t.spec_opts = ['--format html:../../../../doc/output/report.html','--backtrace']
 end
 
 desc &quot;Run all failing examples&quot;
@@ -63,21 +62,13 @@ Spec::Rake::SpecTask.new('failing_examples') do |t|
   t.spec_files = FileList['failing_examples/**/*_spec.rb']
 end
 
-desc 'Generate HTML documentation for website'
-task :webgen do
-  core.webgen
-end
-
 desc 'Generate RDoc'
 rd = Rake::RDocTask.new do |rdoc|
   rdoc.rdoc_dir = '../doc/output/rdoc'
   rdoc.options &lt;&lt; '--title' &lt;&lt; 'RSpec' &lt;&lt; '--line-numbers' &lt;&lt; '--inline-source' &lt;&lt; '--main' &lt;&lt; 'README'
-  rdoc.rdoc_files.include('README', 'CHANGES', 'MIT-LICENSE', 'EXAMPLES.rd', 'UPGRADE', 'lib/**/*.rb')
+  rdoc.rdoc_files.include('README', 'CHANGES', 'MIT-LICENSE', 'UPGRADE', 'lib/**/*.rb')
 end
 
-desc &quot;Generate EXAMPLES.rb&quot;
-task(:rdoc) {core.rdoc}
-
 spec = Gem::Specification.new do |s|
   s.name = PKG_NAME
   s.version = PKG_VERSION
@@ -96,13 +87,13 @@ spec = Gem::Specification.new do |s|
   s.rdoc_options = rd.options
   s.extra_rdoc_files = rd.rdoc_files.reject { |fn| fn =~ /\.rb$|^EXAMPLES.rd$/ }.to_a
 
-  s.autorequire = 'spec'
   s.bindir = 'bin'
   s.executables = ['spec', 'spec_translator']
   s.default_executable = 'spec'
   s.author = &quot;RSpec Development Team&quot;
   s.email = &quot;rspec-devel@rubyforge.org&quot;
   s.homepage = &quot;http://rspec.rubyforge.org&quot;
+  s.platform = Gem::Platform::RUBY
   s.rubyforge_project = &quot;rspec&quot;
 end
 
@@ -134,7 +125,7 @@ task :clobber do
   core.clobber
 end
 
-task :release =&gt; [:clobber, :verify_committed, :verify_user, :spec, :publish_packages, :tag, :publish_website, :publish_news]
+task :release =&gt; [:clobber, :verify_committed, :verify_user, :spec, :publish_packages, :tag, :publish_news]
 
 desc &quot;Verifies that there is no uncommitted code&quot;
 task :verify_committed do
@@ -164,14 +155,6 @@ task :tag do
   `#{create_current_cmd}` ; &quot;ERROR: #{create_current_cmd}&quot; unless $? == 0
 end
 
-desc &quot;Run this task before you commit. You should see 'OK TO COMMIT'&quot;
-task(:pre_commit) {core.pre_commit}
-
-desc &quot;Build the website, but do not publish it&quot;
-task(:website) {core.website}
-
-task(:rdoc_rails) {core.rdoc_rails}
-
 task :verify_user do
   raise &quot;RUBYFORGE_USER environment variable not set!&quot; unless ENV['RUBYFORGE_USER']
 end
@@ -203,10 +186,10 @@ end
 desc &quot;Package the Rails plugin&quot;
 task :package_rspec_on_rails do
   mkdir 'pkg' rescue nil
-  rm_rf 'pkg/rspec_on_rails' rescue nil
-  `svn export ../rspec_on_rails pkg/rspec_on_rails-#{PKG_VERSION}`
+  rm_rf 'pkg/rspec-rails' rescue nil
+  `svn export ../rspec-rails pkg/rspec_on_rails-#{PKG_VERSION}`
   Dir.chdir 'pkg' do
-    `tar cvzf rspec_on_rails-#{PKG_VERSION}.tgz rspec_on_rails-#{PKG_VERSION}`
+    `tar cvzf rspec-rails-#{PKG_VERSION}.tgz rspec-rails-#{PKG_VERSION}`
   end
 end
 task :pkg =&gt; :package_rspec_on_rails
@@ -224,14 +207,12 @@ task :pkg =&gt; :package_tmbundle
 
 desc &quot;Publish gem+tgz+zip on RubyForge. You must make sure lib/version.rb is aligned with the CHANGELOG file&quot;
 task :publish_packages =&gt; [:verify_user, :package] do
-  require File.dirname(__FILE__) + '/../spec_ui/lib/spec/ui/version'
   release_files = FileList[
     &quot;pkg/#{PKG_FILE_NAME}.gem&quot;,
     &quot;pkg/#{PKG_FILE_NAME}.tgz&quot;,
-    &quot;pkg/rspec_on_rails-#{PKG_VERSION}.tgz&quot;,
+    &quot;pkg/rspec-rails-#{PKG_VERSION}.tgz&quot;,
     &quot;pkg/#{PKG_FILE_NAME}.zip&quot;,
-    &quot;pkg/RSpec-#{PKG_VERSION}.tmbundle.tgz&quot;,
-    &quot;../spec_ui/pkg/spec_ui-#{Spec::Ui::VERSION::STRING}.gem&quot;
+    &quot;pkg/RSpec-#{PKG_VERSION}.tmbundle.tgz&quot;
   ]
   unless Spec::VERSION::RELEASE_CANDIDATE
     require 'meta_project'</diff>
      <filename>vendor/plugins/rspec/Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -1,29 +1,5 @@
-= Upgrading existing code to RSpec-0.9
-
-== General (see below for Spec::Rails specifics)
-
-=== New Syntax for should and should_not
-
-* Use translator (should get 90% of your code)
-* Manually fix &quot;parenthesis&quot; warnings
-
-=== Change before_context_eval to before_eval
-
-before_context_eval is an un-published hook used by
-Spec::Rails to create specialized behaviour contexts.
-Most of you don't need to change this, but for those
-who have exploited it, you'll need to change it to
-before_eval.
-
 == Spec::Rails
 
-=== spec_helper.rb
-
-We've added a new way to configure Spec::Runner to do
-things like use_transactional_fixtures and use_instantiated_fixtures.
-You'll need to update spec/spec_helper.rb accordingly. You can either
-just re-generate it:
-
   script/generate rspec
   
 Or modify spec_helper.rb based on the template, which can be found at:</diff>
      <filename>vendor/plugins/rspec/UPGRADE</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,4 @@
+#!/usr/bin/env ruby
 $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + &quot;/../lib&quot;))
 require 'spec'
-exit ::Spec::Runner::CommandLine.run(ARGV, STDERR, STDOUT)
+exit ::Spec::Runner::CommandLine.run(rspec_options)</diff>
      <filename>vendor/plugins/rspec/bin/spec</filename>
    </modified>
    <modified>
      <diff>@@ -4,7 +4,7 @@ class BddFramework
   def intuitive?
     true
   end
-  
+
   def adopted_quickly?
     #this will cause failures because it reallly SHOULD be adopted quickly
     false
@@ -21,7 +21,7 @@ describe &quot;BDD framework&quot; do
     #this will fail because it reallly SHOULD be adopted quickly
     @bdd_framework.should be_adopted_quickly
   end
-  
+
   it &quot;should be intuitive&quot; do
     @bdd_framework.should be_intuitive
   end</diff>
      <filename>vendor/plugins/rspec/failing_examples/predicate_example.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1 +1,3 @@
-require File.dirname(__FILE__) + '/../lib/spec'
+lib_path = File.expand_path(&quot;#{File.dirname(__FILE__)}/../lib&quot;)
+$LOAD_PATH.unshift lib_path unless $LOAD_PATH.include?(lib_path)
+require &quot;spec&quot;</diff>
      <filename>vendor/plugins/rspec/failing_examples/spec_helper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,9 @@
-if ENV['RAILS_ENV'] == 'test'
-  require 'spec'
-end
+# Placeholder to satisfy Rails.
+#
+# Do NOT add any require statements to this file. Doing
+# so will cause Rails to load this plugin all of the time.
+#
+# Running 'ruby script/generate rspec' will
+# generate spec/spec_helper.rb, which includes the necessary
+# require statements and configuration. This file should
+# be required by all of your spec files.
\ No newline at end of file</diff>
      <filename>vendor/plugins/rspec/init.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,85 +1,63 @@
 require 'autotest'
 
+Autotest.add_hook :initialize do |at|
+  at.clear_mappings
+  # watch out: Ruby bug (1.8.6):
+  # %r(/) != /\//
+  at.add_mapping(%r%^spec/.*\.rb$%) { |filename, _| 
+    filename 
+  }
+  at.add_mapping(%r%^lib/(.*)\.rb$%) { |_, m| 
+    [&quot;spec/#{m[1]}_spec.rb&quot;]
+  }
+  at.add_mapping(%r%^spec/(spec_helper|shared/.*)\.rb$%) { 
+    at.files_matching %r%^spec/.*_spec\.rb$%
+  }
+end
+
 class RspecCommandError &lt; StandardError; end
 
 class Autotest::Rspec &lt; Autotest
-  
-  def initialize(kernel=Kernel, separator=File::SEPARATOR, alt_separator=File::ALT_SEPARATOR) # :nodoc:
-    super()
-    @kernel, @separator, @alt_separator = kernel, separator, alt_separator
-    @spec_command = spec_command
 
-    # watch out: Ruby bug (1.8.6):
-    # %r(/) != /\//
-    # since Ruby compares the REGEXP source, not the resulting pattern
-    @test_mappings = {
-      %r%^spec/.*\.rb$% =&gt; kernel.proc { |filename, _| 
-        filename 
-      },
-      %r%^lib/(.*)\.rb$% =&gt; kernel.proc { |_, m| 
-        [&quot;spec/#{m[1]}_spec.rb&quot;] 
-      },
-      %r%^spec/(spec_helper|shared/.*)\.rb$% =&gt; kernel.proc { 
-        files_matching %r%^spec/.*_spec\.rb$% 
-      }
-    }
-  end
-  
-  def tests_for_file(filename)
-    super.select { |f| @files.has_key? f }
+  def initialize
+    super
+    self.failed_results_re = /^\d+\)\n(?:\e\[\d*m)?(?:.*?Error in )?'([^\n]*)'(?: FAILED)?(?:\e\[\d*m)?\n(.*?)\n\n/m
+    self.completed_re = /\n(?:\e\[\d*m)?\d* examples?/m
   end
   
-  alias :specs_for_file :tests_for_file
-  
-  def failed_results(results)
-    results.scan(/^\d+\)\n(?:\e\[\d*m)?(?:.*?Error in )?'([^\n]*)'(?: FAILED)?(?:\e\[\d*m)?\n(.*?)\n\n/m)
-  end
-
-  def handle_results(results)
-    @files_to_test = consolidate_failures failed_results(results)
-    unless @files_to_test.empty? then
-      hook :red
-    else
-      hook :green
-    end unless $TESTING
-    @tainted = true unless @files_to_test.empty?
-  end
-
   def consolidate_failures(failed)
-    filters = Hash.new { |h,k| h[k] = [] }
-    failed.each do |spec, failed_trace|
-      @files.keys.select{|f| f =~ /spec\//}.each do |f|
-        if failed_trace =~ Regexp.new(f)
-          filters[f] &lt;&lt; spec
-          break
-        end
+    filters = new_hash_of_arrays
+    failed.each do |spec, trace|
+      if trace =~ /\n(\.\/)?(.*\.rb):[\d]+:\Z?/
+        filters[$2] &lt;&lt; spec
       end
     end
     return filters
   end
 
   def make_test_cmd(files_to_test)
-    return &quot;#{ruby} -S #{@spec_command} #{add_options_if_present} #{files_to_test.keys.flatten.join(' ')}&quot;
+    return &quot;#{ruby} -S #{spec_command} #{add_options_if_present} #{files_to_test.keys.flatten.join(' ')}&quot;
   end
   
-  def add_options_if_present
+  def add_options_if_present # :nodoc:
     File.exist?(&quot;spec/spec.opts&quot;) ? &quot;-O spec/spec.opts &quot; : &quot;&quot;
   end
 
-  # Finds the proper spec command to use.  Precendence
-  # is set in the lazily-evaluated method spec_commands.  Alias + Override
-  # that in ~/.autotest to provide a different spec command
-  # then the default paths provided.
-  def spec_command
-    spec_commands.each do |command|
-      if File.exists?(command)
-        return @alt_separator ? (command.gsub @separator, @alt_separator) : command
-      end
+  # Finds the proper spec command to use.  Precendence is set in the
+  # lazily-evaluated method spec_commands.  Alias + Override that in
+  # ~/.autotest to provide a different spec command then the default
+  # paths provided.
+  def spec_command(separator=File::ALT_SEPARATOR)
+    unless defined? @spec_command then
+      @spec_command = spec_commands.find { |cmd| File.exists? cmd }
+
+      raise RspecCommandError, &quot;No spec command could be found!&quot; unless @spec_command
+
+      @spec_command.gsub! File::SEPARATOR, separator if separator
     end
-    
-    raise RspecCommandError, &quot;No spec command could be found!&quot;
+    @spec_command
   end
-  
+
   # Autotest will look for spec commands in the following
   # locations, in this order:
   #
@@ -87,9 +65,8 @@ class Autotest::Rspec &lt; Autotest
   #   * default spec bin/loader installed in Rubygems
   def spec_commands
     [
-      File.join('bin', 'spec'),
+      File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'bin', 'spec')),
       File.join(Config::CONFIG['bindir'], 'spec')
     ]
   end
-
 end</diff>
      <filename>vendor/plugins/rspec/lib/autotest/rspec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,13 +1,30 @@
-require &quot;test/unit&quot;
-require &quot;test/unit/testresult&quot;
-require &quot;test/unit/ui/testrunnermediator&quot;
-
 require 'spec/version'
 require 'spec/matchers'
 require 'spec/expectations'
-require 'spec/translator'
-require 'spec/dsl'
+require 'spec/example'
 require 'spec/extensions'
 require 'spec/runner'
-require 'spec/story'
-require 'spec/test'
+
+if Object.const_defined?(:Test); \
+  require 'spec/interop/test'; \
+end
+
+module Spec
+  class &lt;&lt; self
+    def run?
+      @run || rspec_options.examples_run?
+    end
+
+    def run; \
+      return true if run?; \
+      result = rspec_options.run_examples; \
+      @run = true; \
+      result; \
+    end
+    attr_writer :run
+    
+    def exit?; \
+      !Object.const_defined?(:Test) || Test::Unit.run?; \
+    end
+  end
+end
\ No newline at end of file</diff>
      <filename>vendor/plugins/rspec/lib/spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -17,7 +17,7 @@ module Spec
         end
 
         # This is snagged from diff/lcs/ldiff.rb (which is a commandline tool)
-        def diff_as_string(data_old, data_new)
+        def diff_as_string(data_new, data_old)
           data_old = data_old.split(/\n/).map! { |e| e.chomp }
           data_new = data_new.split(/\n/).map! { |e| e.chomp }
           output = &quot;&quot;</diff>
      <filename>vendor/plugins/rspec/lib/spec/expectations/differs/default.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,12 @@
 module Spec
   module Expectations
-    class ExpectationNotMetError &lt; StandardError
+    # If Test::Unit is loaed, we'll use its error as baseclass, so that Test::Unit
+    # will report unmet RSpec expectations as failures rather than errors.
+    superclass = ['Test::Unit::AssertionFailedError', '::StandardError'].map do |c|
+      eval(c) rescue nil
+    end.compact.first
+    
+    class ExpectationNotMetError &lt; superclass
     end
   end
 end</diff>
      <filename>vendor/plugins/rspec/lib/spec/expectations/errors.rb</filename>
    </modified>
    <modified>
      <diff>@@ -27,12 +27,8 @@ module Spec
       #
       # NOTE that this does NOT support receiver.should != expected.
       # Instead, use receiver.should_not == expected
-      def should(matcher = :default_parameter, &amp;block)
-        if :default_parameter == matcher
-          Spec::Matchers::PositiveOperatorMatcher.new(self)
-        else
-          ExpectationMatcherHandler.handle_matcher(self, matcher, &amp;block)
-        end
+      def should(matcher=:use_operator_matcher, &amp;block)
+        ExpectationMatcherHandler.handle_matcher(self, matcher, &amp;block)
       end
 
       # :call-seq:
@@ -54,12 +50,8 @@ module Spec
       #     =&gt; Passes unless (receiver =~ regexp)
       #
       # See Spec::Matchers for more information about matchers
-      def should_not(matcher = :default_parameter, &amp;block)
-        if :default_parameter == matcher
-          Spec::Matchers::NegativeOperatorMatcher.new(self)
-        else
-          NegativeExpectationMatcherHandler.handle_matcher(self, matcher, &amp;block)
-        end
+      def should_not(matcher=:use_operator_matcher, &amp;block)
+        NegativeExpectationMatcherHandler.handle_matcher(self, matcher, &amp;block)
       end
 
     end</diff>
      <filename>vendor/plugins/rspec/lib/spec/expectations/extensions/object.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,7 +3,7 @@ module Spec
     class InvalidMatcherError &lt; ArgumentError; end        
     
     module MatcherHandlerHelper
-      def describe(matcher)
+      def describe_matcher(matcher)
         matcher.respond_to?(:description) ? matcher.description : &quot;[#{matcher.class.name} does not provide a description]&quot;
       end
     end
@@ -12,12 +12,16 @@ module Spec
       class &lt;&lt; self
         include MatcherHandlerHelper
         def handle_matcher(actual, matcher, &amp;block)
+          if :use_operator_matcher == matcher
+            return Spec::Matchers::PositiveOperatorMatcher.new(actual)
+          end
+
           unless matcher.respond_to?(:matches?)
             raise InvalidMatcherError, &quot;Expected a matcher, got #{matcher.inspect}.&quot;
           end
           
           match = matcher.matches?(actual, &amp;block)
-          ::Spec::Matchers.generated_description = &quot;should #{describe(matcher)}&quot;
+          ::Spec::Matchers.generated_description = &quot;should #{describe_matcher(matcher)}&quot;
           Spec::Expectations.fail_with(matcher.failure_message) unless match
         end
       end
@@ -27,6 +31,10 @@ module Spec
       class &lt;&lt; self
         include MatcherHandlerHelper
         def handle_matcher(actual, matcher, &amp;block)
+          if :use_operator_matcher == matcher
+            return Spec::Matchers::NegativeOperatorMatcher.new(actual)
+          end
+          
           unless matcher.respond_to?(:matches?)
             raise InvalidMatcherError, &quot;Expected a matcher, got #{matcher.inspect}.&quot;
           end
@@ -41,7 +49,7 @@ EOF
 )
           end
           match = matcher.matches?(actual, &amp;block)
-          ::Spec::Matchers.generated_description = &quot;should not #{describe(matcher)}&quot;
+          ::Spec::Matchers.generated_description = &quot;should not #{describe_matcher(matcher)}&quot;
           Spec::Expectations.fail_with(matcher.negative_failure_message) if match
         end
       end</diff>
      <filename>vendor/plugins/rspec/lib/spec/expectations/handler.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,2 +1,4 @@
 require 'spec/extensions/object'
+require 'spec/extensions/class'
 require 'spec/extensions/main'
+require 'spec/extensions/metaclass'</diff>
      <filename>vendor/plugins/rspec/lib/spec/extensions.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,45 +1,100 @@
 module Spec
   module Extensions
     module Main
-      # Creates and registers an instance of a Spec::DSL::Example (or a subclass).
-      # The instantiated behaviour class depends on the directory of the file
+      # Creates and returns a class that includes the ExampleGroupMethods
+      # module. Which ExampleGroup type is created depends on the directory of the file
       # calling this method. For example, Spec::Rails will use different
-      # classes for specs living in &lt;tt&gt;spec/models&lt;/tt&gt;, &lt;tt&gt;spec/helpers&lt;/tt&gt;, 
-      # &lt;tt&gt;spec/views&lt;/tt&gt; and &lt;tt&gt;spec/controllers&lt;/tt&gt;.
+      # classes for specs living in &lt;tt&gt;spec/models&lt;/tt&gt;,
+      # &lt;tt&gt;spec/helpers&lt;/tt&gt;, &lt;tt&gt;spec/views&lt;/tt&gt; and
+      # &lt;tt&gt;spec/controllers&lt;/tt&gt;.
       #
-      # It is also possible to override autodiscovery of the behaviour class 
-      # with an options Hash as the last argument:
+      # It is also possible to override autodiscovery of the example group
+      # type with an options Hash as the last argument:
       #
-      #   describe &quot;name&quot;, :behaviour_type =&gt; :something_special do ...
+      #   describe &quot;name&quot;, :type =&gt; :something_special do ...
       #
-      # The reason for using different behaviour classes is to have
-      # different matcher methods available from within the &lt;tt&gt;describe&lt;/tt&gt;
-      # block.
+      # The reason for using different behaviour classes is to have different
+      # matcher methods available from within the &lt;tt&gt;describe&lt;/tt&gt; block.
       #
-      # See Spec::DSL::ExampleFactory#add_example_class for details about 
-      # how to register special Spec::DSL::Example implementations.
+      # See Spec::Example::ExampleFactory#register for details about how to
+      # register special implementations.
       #
       def describe(*args, &amp;block)
         raise ArgumentError if args.empty?
         raise ArgumentError unless block
         args &lt;&lt; {} unless Hash === args.last
         args.last[:spec_path] = caller(0)[1]
-        behaviour = Spec::DSL::BehaviourFactory.create(*args, &amp;block)
-        behaviour.register
-        behaviour
+        Spec::Example::ExampleGroupFactory.create_example_group(*args, &amp;block)
       end
       alias :context :describe
       
-    private
+      # Creates an example group that can be shared by other example groups
+      #
+      # == Examples
+      #
+      #  share_examples_for &quot;All Editions&quot; do
+      #    it &quot;all editions behaviour&quot; ...
+      #  end
+      #
+      #  describe SmallEdition do
+      #    it_should_behave_like &quot;All Editions&quot;
+      #  
+      #    it &quot;should do small edition stuff&quot; do
+      #      ...
+      #    end
+      #  end
+      def share_examples_for(name, &amp;block)
+        describe(name, :shared =&gt; true, &amp;block)
+      end
+      
+      alias :shared_examples_for :share_examples_for
+      
+      # Creates a Shared Example Group and assigns it to a constant
+      #
+      #  share_as :AllEditions do
+      #    it &quot;should do all editions stuff&quot; ...
+      #  end
+      #
+      #  describe SmallEdition do
+      #    it_should_behave_like AllEditions
+      #  
+      #    it &quot;should do small edition stuff&quot; do
+      #      ...
+      #    end
+      #  end
+      #
+      # And, for those of you who prefer to use something more like Ruby, you
+      # can just include the module directly
+      #
+      #  describe SmallEdition do
+      #    include AllEditions
+      #  
+      #    it &quot;should do small edition stuff&quot; do
+      #      ...
+      #    end
+      #  end
+      def share_as(name, &amp;block)
+        begin
+          Object.const_set(name, share_examples_for(name, &amp;block))
+        rescue NameError =&gt; e
+          raise NameError.new(e.message + &quot;\nThe first argument to share_as must be a legal name for a constant\n&quot;)
+        end
+      end
 
+    private
+    
       def rspec_options
-        unless $rspec_options
-          parser = ::Spec::Runner::OptionParser.new(STDERR, STDOUT)
-          parser.parse(ARGV)
-          $rspec_options = parser.options
+        $rspec_options ||= begin; \
+          parser = ::Spec::Runner::OptionParser.new(STDERR, STDOUT); \
+          parser.order!(ARGV); \
+          $rspec_options = parser.options; \
         end
         $rspec_options
       end
+      
+      def init_rspec_options(options)
+        $rspec_options = options if $rspec_options.nil?
+      end
     end
   end
 end</diff>
      <filename>vendor/plugins/rspec/lib/spec/extensions/main.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,8 +3,4 @@ class Object
     options = Hash === args.last ? args.pop : {}
     return args, options
   end
-
-  def metaclass
-    class &lt;&lt; self; self; end
-  end
 end</diff>
      <filename>vendor/plugins/rspec/lib/spec/extensions/object.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,6 +4,7 @@ require 'spec/matchers/be_close'
 require 'spec/matchers/change'
 require 'spec/matchers/eql'
 require 'spec/matchers/equal'
+require 'spec/matchers/exist'
 require 'spec/matchers/has'
 require 'spec/matchers/have'
 require 'spec/matchers/include'
@@ -134,10 +135,12 @@ module Spec
   module Matchers
     module ModuleMethods
       attr_accessor :generated_description
+
       def clear_generated_description
-        @generated_description = nil
+        self.generated_description = nil
       end
     end
+
     extend ModuleMethods
 
     def method_missing(sym, *args, &amp;block) # :nodoc:</diff>
      <filename>vendor/plugins/rspec/lib/spec/matchers.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,14 +3,17 @@ module Spec
     
     class Be #:nodoc:
       def initialize(*args)
-        @expected = parse_expected(args.shift)
+        if args.empty?
+          @expected = :satisfy_if
+        else
+          @expected = parse_expected(args.shift)
+        end
         @args = args
         @comparison = &quot;&quot;
       end
       
       def matches?(actual)
         @actual = actual
-        return true if match_or_compare unless handling_predicate?
         if handling_predicate?
           begin
             return @result = actual.__send__(predicate, *@args)
@@ -28,8 +31,9 @@ module Spec
           rescue
             raise predicate_error
           end
+        else
+          return match_or_compare
         end
-        return false
       end
       
       def failure_message
@@ -43,6 +47,7 @@ module Spec
       end
       
       def expected
+        return &quot;if to be satisfied&quot; if @expected == :satisfy_if
         return true if @expected == :true
         return false if @expected == :false
         return &quot;nil&quot; if @expected == :nil
@@ -50,6 +55,7 @@ module Spec
       end
       
       def match_or_compare
+        return @actual ? true : false if @expected == :satisfy_if
         return @actual == true if @expected == :true
         return @actual == false if @expected == :false
         return @actual.nil? if @expected == :nil
@@ -63,6 +69,7 @@ module Spec
       end
       
       def ==(expected)
+        @prefix = &quot;be &quot;
         @double_equal = true
         @comparison = &quot;== &quot;
         @expected = expected
@@ -70,6 +77,7 @@ module Spec
       end
 
       def ===(expected)
+        @prefix = &quot;be &quot;
         @triple_equal = true
         @comparison = &quot;=== &quot;
         @expected = expected
@@ -77,6 +85,7 @@ module Spec
       end
 
       def &lt;(expected)
+        @prefix = &quot;be &quot;
         @less_than = true
         @comparison = &quot;&lt; &quot;
         @expected = expected
@@ -84,6 +93,7 @@ module Spec
       end
 
       def &lt;=(expected)
+        @prefix = &quot;be &quot;
         @less_than_or_equal = true
         @comparison = &quot;&lt;= &quot;
         @expected = expected
@@ -91,6 +101,7 @@ module Spec
       end
 
       def &gt;=(expected)
+        @prefix = &quot;be &quot;
         @greater_than_or_equal = true
         @comparison = &quot;&gt;= &quot;
         @expected = expected
@@ -98,6 +109,7 @@ module Spec
       end
 
       def &gt;(expected)
+        @prefix = &quot;be &quot;
         @greater_than = true
         @comparison = &quot;&gt; &quot;
         @expected = expected
@@ -112,11 +124,14 @@ module Spec
         def parse_expected(expected)
           if Symbol === expected
             @handling_predicate = true
-            [&quot;be_an_&quot;,&quot;be_a_&quot;,&quot;be_&quot;].each do |@prefix|
-              return &quot;#{expected.to_s.sub(@prefix,&quot;&quot;)}&quot;.to_sym if expected.starts_with?(@prefix)
+            [&quot;be_an_&quot;,&quot;be_a_&quot;,&quot;be_&quot;].each do |prefix|
+              if expected.starts_with?(prefix)
+                @prefix = prefix
+                return &quot;#{expected.to_s.sub(@prefix,&quot;&quot;)}&quot;.to_sym
+              end
             end
           end
-          @prefix = &quot;be &quot;
+          @prefix = &quot;&quot;
           return expected
         end
         
@@ -169,6 +184,7 @@ module Spec
     end
  
     # :call-seq:
+    #   should be
     #   should be_true
     #   should be_false
     #   should be_nil
@@ -177,7 +193,8 @@ module Spec
     #   should_not be_arbitrary_predicate(*args)
     #
     # Given true, false, or nil, will pass if actual is
-    # true, false or nil (respectively).
+    # true, false or nil (respectively). Given no args means
+    # the caller should satisfy an if condition (to be or not to be). 
     #
     # Predicates are any Ruby method that ends in a &quot;?&quot; and returns true or false.
     # Given be_ followed by arbitrary_predicate (without the &quot;?&quot;), RSpec will match
@@ -189,6 +206,7 @@ module Spec
     #
     # == Examples 
     #
+    #   target.should be
     #   target.should be_true
     #   target.should be_false
     #   target.should be_nil</diff>
      <filename>vendor/plugins/rspec/lib/spec/matchers/be.rb</filename>
    </modified>
    <modified>
      <diff>@@ -21,6 +21,8 @@ EOF
         return false if @from &amp;&amp; (@from != @before)
         return false if @to &amp;&amp; (@to != @after)
         return (@before + @amount == @after) if @amount
+        return ((@after - @before) &gt;= @minimum) if @minimum
+        return ((@after - @before) &lt;= @maximum) if @maximum        
         return @before != @after
       end
       
@@ -37,6 +39,10 @@ EOF
           &quot;#{result} should have initially been #{@from.inspect}, but was #{@before.inspect}&quot;
         elsif @amount
           &quot;#{result} should have been changed by #{@amount.inspect}, but was changed by #{actual_delta.inspect}&quot;
+        elsif @minimum
+          &quot;#{result} should have been changed by at least #{@minimum.inspect}, but was changed by #{actual_delta.inspect}&quot;
+        elsif @maximum
+          &quot;#{result} should have been changed by at most #{@maximum.inspect}, but was changed by #{actual_delta.inspect}&quot;
         else
           &quot;#{result} should have changed, but is still #{@before.inspect}&quot;
         end
@@ -59,6 +65,16 @@ EOF
         self
       end
       
+      def by_at_least(minimum)
+        @minimum = minimum
+        self
+      end
+      
+      def by_at_most(maximum)
+        @maximum = maximum
+        self
+      end      
+      
       def to(to)
         @to = to
         self
@@ -88,6 +104,14 @@ EOF
     #     team.add_player(player) 
     #   }.should change(roster, :count).by(1)
     #
+    #   lambda {
+    #     team.add_player(player) 
+    #   }.should change(roster, :count).by_at_least(1)
+    #
+    #   lambda {
+    #     team.add_player(player)
+    #   }.should change(roster, :count).by_at_most(1)    
+    #
     #   string = &quot;string&quot;
     #   lambda {
     #     string.reverse
@@ -109,7 +133,7 @@ EOF
     #
     # == Warning
     # +should_not+ +change+ only supports the form with no subsequent calls to
-    # +be+, +to+ or +from+.
+    # +by+, +by_at_least+, +by_at_most+, +to+ or +from+.
     #
     # blocks passed to +should+ +change+ and +should_not+ +change+
     # must use the &lt;tt&gt;{}&lt;/tt&gt; form (&lt;tt&gt;do/end&lt;/tt&gt; is not supported)</diff>
      <filename>vendor/plugins/rspec/lib/spec/matchers/change.rb</filename>
    </modified>
    <modified>
      <diff>@@ -8,24 +8,14 @@ module Spec
       end
       
       def matches?(target)
-        @target = target
-        begin
-          return target.send(predicate, *@args)
-        rescue =&gt; @error
-          # This clause should be empty, but rcov will not report it as covered
-          # unless something (anything) is executed within the clause
-          rcov_error_report = &quot;http://eigenclass.org/hiki.rb?rcov-0.8.0&quot;
-        end
-        return false
+        target.send(predicate, *@args)
       end
       
       def failure_message
-        raise @error if @error
         &quot;expected ##{predicate}(#{@args[0].inspect}) to return true, got false&quot;
       end
       
       def negative_failure_message
-        raise @error if @error
         &quot;expected ##{predicate}(#{@args[0].inspect}) to return false, got true&quot;
       end
       </diff>
      <filename>vendor/plugins/rspec/lib/spec/matchers/has.rb</filename>
    </modified>
    <modified>
      <diff>@@ -17,6 +17,7 @@ module Spec
     
       def method_missing(sym, *args, &amp;block)
         @collection_name = sym
+        @plural_collection_name = Inflector.pluralize(sym.to_s) if Object.const_defined?(:Inflector)
         @args = args
         @block = block
         self
@@ -25,6 +26,8 @@ module Spec
       def matches?(collection_owner)
         if collection_owner.respond_to?(@collection_name)
           collection = collection_owner.send(@collection_name, *@args, &amp;@block)
+        elsif (@plural_collection_name &amp;&amp; collection_owner.respond_to?(@plural_collection_name))
+          collection = collection_owner.send(@plural_collection_name, *@args, &amp;@block)
         elsif (collection_owner.respond_to?(:length) || collection_owner.respond_to?(:size))
           collection = collection_owner
         else</diff>
      <filename>vendor/plugins/rspec/lib/spec/matchers/have.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,50 +1,66 @@
 module Spec
   module Matchers
-    
     class RaiseError #:nodoc:
-      def initialize(error_or_message=Exception, message=nil)
-        if String === error_or_message
-          @expected_error = Exception
-          @expected_message = error_or_message
+      def initialize(error_or_message=Exception, message=nil, &amp;block)
+        @block = block
+        case error_or_message
+        when String, Regexp
+          @expected_error, @expected_message = Exception, error_or_message
         else
-          @expected_error = error_or_message
-          @expected_message = message
+          @expected_error, @expected_message = error_or_message, message
         end
       end
-      
+
       def matches?(proc)
         @raised_expected_error = false
-        @raised_other = false
+        @with_expected_message = false
+        @eval_block = false
+        @eval_block_passed = false
         begin
           proc.call
         rescue @expected_error =&gt; @actual_error
-          if @expected_message.nil?
-            @raised_expected_error = true
-          else
-            case @expected_message
-            when Regexp
-              if @expected_message =~ @actual_error.message
-                @raised_expected_error = true
-              else
-                @raised_other = true
-              end
-            else
-              if @expected_message == @actual_error.message
-                @raised_expected_error = true
-              else
-                @raised_other = true
-              end
-            end
-          end
-        rescue =&gt; @actual_error
-          @raised_other = true
-        ensure
-          return @raised_expected_error
+          @raised_expected_error = true
+          @with_expected_message = verify_message
+        rescue Exception =&gt; @actual_error
+          # This clause should be empty, but rcov will not report it as covered
+          # unless something (anything) is executed within the clause
+          rcov_error_report = &quot;http://eigenclass.org/hiki.rb?rcov-0.8.0&quot;
+        end
+
+        unless negative_expectation?
+          eval_block if @raised_expected_error &amp;&amp; @with_expected_message &amp;&amp; @block
+        end
+      ensure
+        return (@raised_expected_error &amp;&amp; @with_expected_message) ? (@eval_block ? @eval_block_passed : true) : false
+      end
+      
+      def eval_block
+        @eval_block = true
+        begin
+          @block[@actual_error]
+          @eval_block_passed = true
+        rescue Exception =&gt; err
+          @actual_error = err
+        end
+      end
+
+      def verify_message
+        case @expected_message
+        when nil
+          return true
+        when Regexp
+          return @expected_message =~ @actual_error.message
+        else
+          return @expected_message == @actual_error.message
         end
       end
       
       def failure_message
-        return &quot;expected #{expected_error}#{actual_error}&quot; if @raised_other || !@raised_expected_error
+        if @eval_block
+          return @actual_error.message
+        else
+          return &quot;expected #{expected_error}#{actual_error}&quot;
+        end
       end
 
       def negative_failure_message
@@ -70,6 +86,11 @@ module Spec
         def actual_error
           @actual_error.nil? ? &quot; but nothing was raised&quot; : &quot;, got #{@actual_error.inspect}&quot;
         end
+        
+        def negative_expectation?
+          # YES - I'm a bad person... help me find a better way - ryand
+          caller.first(3).find { |s| s =~ /should_not/ }
+        end
     end
     
     # :call-seq:
@@ -77,6 +98,10 @@ module Spec
     #   should raise_error(NamedError)
     #   should raise_error(NamedError, String)
     #   should raise_error(NamedError, Regexp)
+    #   should raise_error() { |error| ... }
+    #   should raise_error(NamedError) { |error| ... }
+    #   should raise_error(NamedError, String) { |error| ... }
+    #   should raise_error(NamedError, Regexp) { |error| ... }
     #   should_not raise_error()
     #   should_not raise_error(NamedError)
     #   should_not raise_error(NamedError, String)
@@ -86,11 +111,13 @@ module Spec
     # With a named error, matches only if that specific error is raised.
     # With a named error and messsage specified as a String, matches only if both match.
     # With a named error and messsage specified as a Regexp, matches only if both match.
+    # Pass an optional block to perform extra verifications on the exception matched
     #
     # == Examples
     #
     #   lambda { do_something_risky }.should raise_error
     #   lambda { do_something_risky }.should raise_error(PoorRiskDecisionError)
+    #   lambda { do_something_risky }.should raise_error(PoorRiskDecisionError) { |error| error.data.should == 42 }
     #   lambda { do_something_risky }.should raise_error(PoorRiskDecisionError, &quot;that was too risky&quot;)
     #   lambda { do_something_risky }.should raise_error(PoorRiskDecisionError, /oo ri/)
     #
@@ -98,8 +125,8 @@ module Spec
     #   lambda { do_something_risky }.should_not raise_error(PoorRiskDecisionError)
     #   lambda { do_something_risky }.should_not raise_error(PoorRiskDecisionError, &quot;that was too risky&quot;)
     #   lambda { do_something_risky }.should_not raise_error(PoorRiskDecisionError, /oo ri/)
-    def raise_error(error=Exception, message=nil)
-      Matchers::RaiseError.new(error, message)
+    def raise_error(error=Exception, message=nil, &amp;block)
+      Matchers::RaiseError.new(error, message, &amp;block)
     end
   end
 end</diff>
      <filename>vendor/plugins/rspec/lib/spec/matchers/raise_error.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,8 @@
 module Spec
   module Matchers
     class SimpleMatcher
+      attr_reader :description
+      
       def initialize(description, &amp;match_block)
         @description = description
         @match_block = match_block</diff>
      <filename>vendor/plugins/rspec/lib/spec/matchers/simple_matcher.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,6 +4,7 @@ module Spec
     class ThrowSymbol #:nodoc:
       def initialize(expected=nil)
         @expected = expected
+        @actual = nil
       end
       
       def matches?(proc)</diff>
      <filename>vendor/plugins/rspec/lib/spec/matchers/throw_symbol.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,7 @@
 module Spec
   module Mocks
     module ArgumentConstraintMatchers
-
+      
       # Shortcut for creating an instance of Spec::Mocks::DuckTypeArgConstraint
       def duck_type(*args)
         DuckTypeArgConstraint.new(*args)
@@ -19,6 +19,10 @@ module Spec
         BooleanArgConstraint.new(nil)
       end
       
+      def hash_including(expected={})
+        HashIncludingConstraint.new(expected)
+      end
+      
       def no_args
         NoArgsConstraint.new
       end</diff>
      <filename>vendor/plugins/rspec/lib/spec/mocks/argument_constraint_matchers.rb</filename>
    </modified>
    <modified>
      <diff>@@ -108,6 +108,32 @@ module Spec
         &quot;duck_type&quot;
       end
     end
+    
+    class HashIncludingConstraint
+      def initialize(expected)
+        @expected = expected
+      end
+      
+      def ==(actual)
+        @expected.each do | key, value |
+          # check key for case that value evaluates to nil
+          return false unless actual.has_key?(key) &amp;&amp; actual[key] == value
+        end
+        true
+      rescue NoMethodError =&gt; ex
+        return false
+      end
+      
+      def matches?(value)
+        self == value
+      end
+      
+      def description
+        &quot;hash_including(#{@expected.inspect.sub(/^\{/,&quot;&quot;).sub(/\}$/,&quot;&quot;)})&quot;
+      end
+      
+    end
+    
 
     class ArgumentExpectation
       attr_reader :args</diff>
      <filename>vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb</filename>
    </modified>
    <modified>
      <diff>@@ -10,7 +10,7 @@ module Spec
         @expected_from = expected_from
         @sym = sym
         @method_block = method_block
-        @return_block = lambda {}
+        @return_block = nil
         @actual_received_count = 0
         @expected_received_count = expected_received_count
         @args_expectation = ArgumentExpectation.new([AnyArgsConstraint.new])
@@ -39,6 +39,8 @@ module Spec
                                                     @expected_received_count &lt; values.size
         end
         @return_block = block_given? ? return_block : lambda { value }
+        # Ruby 1.9 - see where this is used below
+        @ignore_args = !block_given?
       end
       
       # :call-seq:
@@ -70,20 +72,32 @@ module Spec
       end
       
       def invoke(args, block)
+        if @expected_received_count == 0
+          @actual_received_count += 1
+          @error_generator.raise_expectation_error @sym, @expected_received_count, @actual_received_count, *args
+        end
+        
         @order_group.handle_order_constraint self
 
         begin
           Kernel::raise @exception_to_raise unless @exception_to_raise.nil?
           Kernel::throw @symbol_to_throw unless @symbol_to_throw.nil?
-
+          
+          
           if !@method_block.nil?
-            return invoke_method_block(args)
+            default_return_val = invoke_method_block(args)
           elsif @args_to_yield.size &gt; 0
-            return invoke_with_yield(block)
-          elsif @consecutive
-            return invoke_consecutive_return_block(args, block)
+            default_return_val = invoke_with_yield(block)
           else
+            default_return_val = nil
+          end
+          
+          if @consecutive
+            return invoke_consecutive_return_block(args, block)
+          elsif @return_block
             return invoke_return_block(args, block)
+          else
+            return default_return_val
           end
         ensure
           @actual_received_count += 1
@@ -104,12 +118,14 @@ module Spec
         if block.nil?
           @error_generator.raise_missing_block_error @args_to_yield
         end
+        value = nil
         @args_to_yield.each do |args_to_yield_this_time|
           if block.arity &gt; -1 &amp;&amp; args_to_yield_this_time.length != block.arity
             @error_generator.raise_wrong_arity_error args_to_yield_this_time, block.arity
           end
-          block.call(*args_to_yield_this_time)
+          value = block.call(*args_to_yield_this_time)
         end
+        value
       end
       
       def invoke_consecutive_return_block(args, block)
@@ -122,9 +138,14 @@ module Spec
       
       def invoke_return_block(args, block)
         args &lt;&lt; block unless block.nil?
-        value = @return_block.call(*args)
-    
-        value
+        # Ruby 1.9 - when we set @return_block to return values
+        # regardless of arguments, any arguments will result in
+        # a &quot;wrong number of arguments&quot; error
+        if @ignore_args
+          @return_block.call()
+        else
+          @return_block.call(*args)
+        end
       end
     end
     
@@ -134,9 +155,8 @@ module Spec
         @sym == sym and not @args_expectation.check_args(args)
       end
        
-      def verify_messages_received        
-        return if ignoring_args? || matches_exact_count? ||
-           matches_at_least_count? || matches_at_most_count?
+      def verify_messages_received   
+        return if expected_messages_received?
     
         generate_error
       rescue Spec::Mocks::MockExpectationError =&gt; error
@@ -144,6 +164,11 @@ module Spec
         Kernel::raise error
       end
       
+      def expected_messages_received?
+        ignoring_args? || matches_exact_count? ||
+           matches_at_least_count? || matches_at_most_count?
+      end
+      
       def ignoring_args?
         @expected_received_count == :any
       end
@@ -160,8 +185,20 @@ module Spec
         @expected_received_count == @actual_received_count
       end
       
+      def similar_messages
+        @similar_messages ||= []
+      end
+
+      def advise(args, block)
+        similar_messages &lt;&lt; args
+      end
+      
       def generate_error
-        @error_generator.raise_expectation_error(@sym, @expected_received_count, @actual_received_count, *@args_expectation.args)
+        if similar_messages.empty?
+          @error_generator.raise_expectation_error(@sym, @expected_received_count, @actual_received_count, *@args_expectation.args)
+        else
+          @error_generator.raise_unexpected_message_args_error(self, *@similar_messages.first)
+        end
       end
 
       def with(*args, &amp;block)</diff>
      <filename>vendor/plugins/rspec/lib/spec/mocks/message_expectation.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,18 +3,21 @@ module Spec
     class Mock
       include Methods
 
-      # Creates a new mock with a +name+ (that will be used in error messages only)
-      # == Options:
-      # * &lt;tt&gt;:null_object&lt;/tt&gt; - if true, the mock object acts as a forgiving null object allowing any message to be sent to it.
-      def initialize(name, options={})
+      # Creates a new mock with a +name+ (that will be used in error messages
+      # only) == Options:
+      # * &lt;tt&gt;:null_object&lt;/tt&gt; - if true, the mock object acts as a forgiving
+      #   null object allowing any message to be sent to it.
+      def initialize(name, stubs_and_options={})
         @name = name
-        @options = options
+        @options = parse_options(stubs_and_options)
+        assign_stubs(stubs_and_options)
       end
       
-      # This allows for comparing the mock to other objects that proxy
-      #  such as ActiveRecords belongs_to proxy objects
-      #  By making the other object run the comparison, we're sure the call gets delegated to the proxy target
-      # This is an unfortunate side effect from ActiveRecord, but this should be safe unless the RHS redefines == in a nonsensical manner
+      # This allows for comparing the mock to other objects that proxy such as
+      # ActiveRecords belongs_to proxy objects By making the other object run
+      # the comparison, we're sure the call gets delegated to the proxy target
+      # This is an unfortunate side effect from ActiveRecord, but this should
+      # be safe unless the RHS redefines == in a nonsensical manner
       def ==(other)
         other == __mock_proxy
       end
@@ -32,6 +35,18 @@ module Spec
       def inspect
         &quot;#&lt;#{self.class}:#{sprintf '0x%x', self.object_id} @name=#{@name.inspect}&gt;&quot;
       end
+      
+      private
+      
+        def parse_options(options)
+          options.has_key?(:null_object) ? {:null_object =&gt; options.delete(:null_object)} : {}
+        end
+        
+        def assign_stubs(stubs)
+          stubs.each_pair do |message, response|
+            stub!(message).and_return(response)
+          end
+        end
     end
   end
 end</diff>
      <filename>vendor/plugins/rspec/lib/spec/mocks/mock.rb</filename>
    </modified>
    <modified>
      <diff>@@ -63,10 +63,14 @@ module Spec
       def message_received(sym, *args, &amp;block)
         if expectation = find_matching_expectation(sym, *args)
           expectation.invoke(args, block)
-        elsif stub = find_matching_method_stub(sym, *args)
+        elsif (stub = find_matching_method_stub(sym, *args))
+          if expectation = find_almost_matching_expectation(sym, *args)
+            expectation.advise(args, block) unless expectation.expected_messages_received?
+          end
           stub.invoke([], block)
         elsif expectation = find_almost_matching_expectation(sym, *args)
-          raise_unexpected_message_args_error(expectation, *args) unless has_negative_expectation?(sym) unless null_object?
+          expectation.advise(args, block) if null_object? unless expectation.expected_messages_received?
+          raise_unexpected_message_args_error(expectation, *args) unless (has_negative_expectation?(sym) or null_object?)
         else
           @target.send :method_missing, sym, *args, &amp;block
         end
@@ -88,15 +92,15 @@ module Spec
       end
       
       def define_expected_method(sym)
-        if target_responds_to?(sym) &amp;&amp; !@proxied_methods.include?(sym)
+        if target_responds_to?(sym) &amp;&amp; !target_metaclass.method_defined?(munge(sym))
           munged_sym = munge(sym)
-          metaclass.instance_eval do
+          target_metaclass.instance_eval do
             alias_method munged_sym, sym if method_defined?(sym.to_s)
           end
           @proxied_methods &lt;&lt; sym
         end
         
-        metaclass_eval(&lt;&lt;-EOF, __FILE__, __LINE__)
+        target_metaclass.class_eval(&lt;&lt;-EOF, __FILE__, __LINE__)
           def #{sym}(*args, &amp;block)
             __mock_proxy.message_received :#{sym}, *args, &amp;block
           end
@@ -125,12 +129,8 @@ module Spec
         @proxied_methods.clear
       end
 
-      def metaclass_eval(str, filename, lineno)
-        metaclass.class_eval(str, filename, lineno)
-      end
-      
-      def metaclass
-        (class &lt;&lt; @target; self; end)
+      def target_metaclass
+        class &lt;&lt; @target; self; end
       end
 
       def verify_expectations
@@ -142,7 +142,7 @@ module Spec
       def reset_proxied_methods
         @proxied_methods.each do |sym|
           munged_sym = munge(sym)
-          metaclass.instance_eval do
+          target_metaclass.instance_eval do
             if method_defined?(munged_sym.to_s)
               alias_method sym, munged_sym
               undef_method munged_sym</diff>
      <filename>vendor/plugins/rspec/lib/spec/mocks/proxy.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,30 +1,31 @@
 module Spec
   module Mocks
-    module SpecMethods
+    module ExampleMethods
       include Spec::Mocks::ArgumentConstraintMatchers
 
       # Shortcut for creating an instance of Spec::Mocks::Mock.
-      def mock(name, options={})
-        Spec::Mocks::Mock.new(name, options)
-      end
-
-      # Shortcut for creating an instance of Spec::Mocks::Mock with
-      # predefined method stubs.
+      #
+      # +name+ is used for failure reporting, so you should use the
+      # role that the mock is playing in the example.
+      #
+      # +stubs_and_options+ lets you assign options and stub values
+      # at the same time. The only option available is :null_object.
+      # Anything else is treated as a stub value.
       #
       # == Examples
       #
-      #   stub_thing = stub(&quot;thing&quot;, :a =&gt; &quot;A&quot;)
+      #   stub_thing = mock(&quot;thing&quot;, :a =&gt; &quot;A&quot;)
       #   stub_thing.a == &quot;A&quot; =&gt; true
       #
       #   stub_person = stub(&quot;thing&quot;, :name =&gt; &quot;Joe&quot;, :email =&gt; &quot;joe@domain.com&quot;)
       #   stub_person.name =&gt; &quot;Joe&quot;
       #   stub_person.email =&gt; &quot;joe@domain.com&quot;
-      def stub(name, stubs={})
-        object_stub = mock(name)
-        stubs.each { |key, value| object_stub.stub!(key).and_return(value) }
-        object_stub
+      def mock(name, stubs_and_options={})
+        Spec::Mocks::Mock.new(name, stubs_and_options)
       end
       
+      alias :stub :mock
+
       # Shortcut for creating a mock object that will return itself in response
       # to any message it receives that it hasn't been explicitly instructed
       # to respond to.</diff>
      <filename>vendor/plugins/rspec/lib/spec/mocks/spec_methods.rb</filename>
    </modified>
    <modified>
      <diff>@@ -8,7 +8,7 @@ require 'rake/tasklib'
 module Spec
   module Rake
 
-    # A Rake task that runs a set of RSpec contexts.
+    # A Rake task that runs a set of specs.
     #
     # Example:
     #  
@@ -44,6 +44,17 @@ module Spec
     # Each attribute of this task may be a proc. This allows for lazy evaluation,
     # which is sometimes handy if you want to defer the evaluation of an attribute value
     # until the task is run (as opposed to when it is defined).
+    #
+    # This task can also be used to run existing Test::Unit tests and get RSpec
+    # output, for example like this:
+    #
+    #   require 'rubygems'
+    #   require 'spec/rake/spectask'
+    #   Spec::Rake::SpecTask.new do |t|
+    #     t.ruby_opts = ['-rtest/unit']
+    #     t.spec_files = FileList['test/**/*_test.rb']
+    #   end
+    #
     class SpecTask &lt; ::Rake::TaskLib
       class &lt;&lt; self
         def attr_accessor(*names)</diff>
      <filename>vendor/plugins/rspec/lib/spec/rake/spectask.rb</filename>
    </modified>
    <modified>
      <diff>@@ -38,7 +38,7 @@ module RCov
         total_coverage = nil
 
         File.open(index_html).each_line do |line|
-          if line =~ /&lt;tt.*&gt;(\d+\.\d+)%&lt;\/tt&gt;&amp;nbsp;&lt;\/td&gt;/
+          if line =~ /&lt;tt class='coverage_total'&gt;(\d+\.\d+)%&lt;\/tt&gt;/
             total_coverage = eval($1)
             break
           end</diff>
      <filename>vendor/plugins/rspec/lib/spec/rake/verify_rcov.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,21 +1,20 @@
-require 'spec/runner/formatter'
 require 'spec/runner/options'
 require 'spec/runner/option_parser'
-require 'spec/runner/behaviour_runner'
+require 'spec/runner/example_group_runner'
 require 'spec/runner/command_line'
 require 'spec/runner/drb_command_line'
 require 'spec/runner/backtrace_tweaker'
 require 'spec/runner/reporter'
-require 'spec/runner/extensions/object'
 require 'spec/runner/spec_parser'
+require 'spec/runner/class_and_arguments_parser'
 
 module Spec
-  # == Behaviours and Examples
+  # == ExampleGroups and Examples
   # 
-  # Rather than expressing examples in classes, RSpec uses a custom domain specific language to 
-  # describe Behaviours and Examples of those behaviours.
+  # Rather than expressing examples in classes, RSpec uses a custom DSLL (DSL light) to 
+  # describe groups of examples.
   # 
-  # A Example is the equivalent of a fixture in xUnit-speak. It is a metaphor for the context
+  # A ExampleGroup is the equivalent of a fixture in xUnit-speak. It is a metaphor for the context
   # in which you will run your executable example - a set of known objects in a known starting state.
   # We begin be describing
   # 
@@ -124,11 +123,11 @@ module Spec
   #     end
   #   end
   # 
-  # == Shared behaviour
+  # == Shared Example Groups
   # 
-  # You can define a shared behaviour, that may be used on other behaviours
+  # You can define a shared Example Group, that may be used on other groups
   #
-  #  describe &quot;All Editions&quot;, :shared =&gt; true do
+  #  share_examples_for &quot;All Editions&quot; do
   #    it &quot;all editions behaviour&quot; ...
   #  end
   #
@@ -139,10 +138,35 @@ module Spec
   #      ...
   #    end
   #  end
+  #
+  # You can also assign the shared group to a module and include that
+  #
+  #  share_as :AllEditions do
+  #    it &quot;should do all editions stuff&quot; ...
+  #  end
+  #
+  #  describe SmallEdition do
+  #    it_should_behave_like AllEditions
+  #  
+  #    it &quot;should do small edition stuff&quot; do
+  #      ...
+  #    end
+  #  end
+  #
+  # And, for those of you who prefer to use something more like Ruby, you
+  # can just include the module directly
+  #
+  #  describe SmallEdition do
+  #    include AllEditions
+  #  
+  #    it &quot;should do small edition stuff&quot; do
+  #      ...
+  #    end
+  #  end
   module Runner
     class &lt;&lt; self
       def configuration # :nodoc:
-        @configuration ||= Spec::DSL::Configuration.new
+        @configuration ||= Spec::Example::Configuration.new
       end
       
       # Use this to configure various configurable aspects of
@@ -153,12 +177,26 @@ module Spec
       #   end
       #
       # The yielded &lt;tt&gt;configuration&lt;/tt&gt; object is a
-      # Spec::DSL::Configuration instance. See its RDoc
+      # Spec::Example::Configuration instance. See its RDoc
       # for details about what you can do with it.
       #
       def configure
         yield configuration
       end
+      
+      def register_at_exit_hook # :nodoc:
+        $spec_runner_at_exit_hook_registered ||= nil
+        unless $spec_runner_at_exit_hook_registered
+          at_exit do
+            unless $! || Spec.run?; \
+              success = Spec.run; \
+              exit success if Spec.exit?; \
+            end
+          end
+          $spec_runner_at_exit_hook_registered = true
+        end
+      end
+      
     end
   end
 end</diff>
      <filename>vendor/plugins/rspec/lib/spec/runner.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,7 +7,7 @@ module Spec
     end
 
     class NoisyBacktraceTweaker &lt; BacktraceTweaker
-      def tweak_backtrace(error, spec_name)
+      def tweak_backtrace(error)
         return if error.backtrace.nil?
         error.backtrace.each do |line|
           clean_up_double_slashes(line)
@@ -19,7 +19,7 @@ module Spec
     class QuietBacktraceTweaker &lt; BacktraceTweaker
       unless defined?(IGNORE_PATTERNS)
         root_dir = File.expand_path(File.join(__FILE__, '..', '..', '..', '..'))
-        spec_files = Dir[&quot;#{root_dir}/lib/spec/*&quot;].map do |path| 
+        spec_files = Dir[&quot;#{root_dir}/lib/*&quot;].map do |path| 
           subpath = path[root_dir.length..-1]
           /#{subpath}/
         end
@@ -27,7 +27,7 @@ module Spec
           /\/lib\/ruby\//,
           /bin\/spec:/,
           /bin\/rcov:/,
-          /lib\/rspec_on_rails/,
+          /lib\/rspec-rails/,
           /vendor\/rails/,
           # TextMate's Ruby and RSpec plugins
           /Ruby\.tmbundle\/Support\/tmruby.rb:/,
@@ -38,7 +38,7 @@ module Spec
         ]
       end
       
-      def tweak_backtrace(error, spec_name)
+      def tweak_backtrace(error)
         return if error.backtrace.nil?
         error.backtrace.collect! do |line|
           clean_up_double_slashes(line)</diff>
      <filename>vendor/plugins/rspec/lib/spec/runner/backtrace_tweaker.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,31 +7,21 @@ module Spec
       class &lt;&lt; self
         # Runs specs. +argv+ is the commandline args as per the spec commandline API, +err+
         # and +out+ are the streams output will be written to.
-        def run(argv, err, out)
-          old_rspec_options = defined?($rspec_options) ? $rspec_options : nil
+        def run(instance_rspec_options)
+          # NOTE - this call to init_rspec_options is not spec'd, but neither is any of this
+          # swapping of $rspec_options. That is all here to enable rspec to run against itself
+          # and maintain coverage in a single process. Therefore, DO NOT mess with this stuff
+          # unless you know what you are doing!
+          init_rspec_options(instance_rspec_options)
+          orig_rspec_options = rspec_options
           begin
-            parser = OptionParser.new(err, out)
-            parser.order!(argv)
-            options = parser.options
-            $rspec_options = options
-            return true if $rspec_options.generate
-
-            options.load_paths
-            success = options.run_examples
-            heckle(options) if options.heckle_runner
-
-            return success
+            $rspec_options = instance_rspec_options
+            return $rspec_options.run_examples
           ensure
-            $rspec_options = old_rspec_options
+            ::Spec.run = true
+            $rspec_options = orig_rspec_options
           end
         end
-
-        protected
-        def heckle(options)
-          heckle_runner = options.heckle_runner
-          options.heckle_runner = nil
-          heckle_runner.heckle_with
-        end
       end
     end
   end</diff>
      <filename>vendor/plugins/rspec/lib/spec/runner/command_line.rb</filename>
    </modified>
    <modified>
      <diff>@@ -6,13 +6,13 @@ module Spec
     class DrbCommandLine
       # Runs specs on a DRB server. Note that this API is similar to that of
       # CommandLine - making it possible for clients to use both interchangeably.
-      def self.run(argv, stderr, stdout)
+      def self.run(options)
         begin
           DRb.start_service
           spec_server = DRbObject.new_with_uri(&quot;druby://localhost:8989&quot;)
-          spec_server.run(argv, stderr, stdout)
+          spec_server.run(options.argv, options.error_stream, options.output_stream)
         rescue DRb::DRbConnError =&gt; e
-          stderr.puts &quot;No server is running&quot;
+          options.error_stream.puts &quot;No server is running&quot;
         end
       end
     end</diff>
      <filename>vendor/plugins/rspec/lib/spec/runner/drb_command_line.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,6 +3,7 @@ module Spec
     module Formatter
       # Baseclass for formatters that implements all required methods as no-ops. 
       class BaseFormatter
+        attr_accessor :example_group, :options, :where
         def initialize(options, where)
           @options = options
           @where = where
@@ -13,16 +14,16 @@ module Spec
         # formatters that need to provide progress on feedback (graphical ones)
         #
         # This method will only be invoked once, and the next one to be invoked
-        # is #add_behaviour
+        # is #add_example_group
         def start(example_count)
         end
 
-        # This method is invoked at the beginning of the execution of each behaviour.
-        # +name+ is the name of the behaviour and +first+ is true if it is the
-        # first behaviour - otherwise it's false.
+        # This method is invoked at the beginning of the execution of each example_group.
+        # +example_group+ is the example_group.
         #
         # The next method to be invoked after this is #example_failed or #example_finished
-        def add_behaviour(name)
+        def add_example_group(example_group)
+          @example_group = example_group
         end
 
         # This method is invoked when an +example+ starts.
@@ -42,10 +43,9 @@ module Spec
         
         # This method is invoked when an example is not yet implemented (i.e. has not
         # been provided a block), or when an ExamplePendingError is raised.
-        # +name+ is the name of the example.
         # +message+ is the message from the ExamplePendingError, if it exists, or the
         # default value of &quot;Not Yet Implemented&quot;
-        def example_pending(behaviour_name, example_name, message)
+        def example_pending(example, message)
         end
 
         # This method is invoked after all of the examples have executed. The next method</diff>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/base_formatter.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,5 @@
+require 'spec/runner/formatter/base_formatter'
+
 module Spec
   module Runner
     module Formatter
@@ -5,6 +7,7 @@ module Spec
       # non-text based ones too - just ignore the +output+ constructor
       # argument.
       class BaseTextFormatter &lt; BaseFormatter
+        attr_reader :output, :pending_examples
         # Creates a new instance that will write to +where+. If +where+ is a
         # String, output will be written to the File with that name, otherwise
         # +where+ is exected to be an IO (or an object that responds to #puts and #write).
@@ -20,12 +23,11 @@ module Spec
           else
             @output = where
           end
-          @snippet_extractor = SnippetExtractor.new
           @pending_examples = []
         end
         
-        def example_pending(behaviour_name, example_name, message)
-          @pending_examples &lt;&lt; [&quot;#{behaviour_name} #{example_name}&quot;, message]
+        def example_pending(example, message)
+          @pending_examples &lt;&lt; [example.__full_description, message]
         end
         
         def dump_failure(counter, failure)
@@ -98,7 +100,7 @@ module Spec
         def dry_run?
           @options.dry_run ? true : false
         end
-      
+        
         def backtrace_line(line)
           line.sub(/\A([^:]+:\d+)$/, '\\1:')
         end</diff>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/base_text_formatter.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,13 +1,11 @@
+require 'spec/runner/formatter/base_text_formatter'
+
 module Spec
   module Runner
     module Formatter
       class FailingExamplesFormatter &lt; BaseTextFormatter      
-        def add_behaviour(behaviour_name)
-          @behaviour_name = behaviour_name
-        end
-      
         def example_failed(example, counter, failure)
-          @output.puts &quot;#{@behaviour_name} #{example.description}&quot;
+          @output.puts &quot;#{example_group.description} #{example.description}&quot;
           @output.flush
         end
 </diff>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/failing_examples_formatter.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 require 'erb'
+require 'spec/runner/formatter/base_text_formatter'
 
 module Spec
   module Runner
@@ -8,13 +9,17 @@ module Spec
         
         def initialize(options, output)
           super
-          @current_behaviour_number = 0
+          @current_example_group_number = 0
           @current_example_number = 0
         end
+        
+        def method_missing(sym, *args)
+          # no-op
+        end
 
-        # The number of the currently running behaviour
-        def current_behaviour_number
-          @current_behaviour_number
+        # The number of the currently running example_group
+        def current_example_group_number
+          @current_example_group_number
         end
         
         # The number of the currently running example (a global counter)
@@ -30,17 +35,18 @@ module Spec
           @output.flush
         end
 
-        def add_behaviour(name)
-          @behaviour_red = false
-          @behaviour_red = false
-          @current_behaviour_number += 1
-          unless current_behaviour_number == 1
+        def add_example_group(example_group)
+          super
+          @example_group_red = false
+          @example_group_red = false
+          @current_example_group_number += 1
+          unless current_example_group_number == 1
             @output.puts &quot;  &lt;/dl&gt;&quot;
             @output.puts &quot;&lt;/div&gt;&quot;
           end
-          @output.puts &quot;&lt;div class=\&quot;behaviour\&quot;&gt;&quot;
+          @output.puts &quot;&lt;div class=\&quot;example_group\&quot;&gt;&quot;
           @output.puts &quot;  &lt;dl&gt;&quot;
-          @output.puts &quot;  &lt;dt id=\&quot;behaviour_#{current_behaviour_number}\&quot;&gt;#{h(name)}&lt;/dt&gt;&quot;
+          @output.puts &quot;  &lt;dt id=\&quot;example_group_#{current_example_group_number}\&quot;&gt;#{h(example_group.description)}&lt;/dt&gt;&quot;
           @output.flush
         end
 
@@ -51,7 +57,7 @@ module Spec
         end
 
         def example_started(example)
-          @current_example_number = example.number
+          @current_example_number += 1
         end
 
         def example_passed(example)
@@ -65,8 +71,8 @@ module Spec
           failure_style = failure.pending_fixed? ? 'pending_fixed' : 'failed'
           @output.puts &quot;    &lt;script type=\&quot;text/javascript\&quot;&gt;makeRed('rspec-header');&lt;/script&gt;&quot; unless @header_red
           @header_red = true
-          @output.puts &quot;    &lt;script type=\&quot;text/javascript\&quot;&gt;makeRed('behaviour_#{current_behaviour_number}');&lt;/script&gt;&quot; unless @behaviour_red
-          @behaviour_red = true
+          @output.puts &quot;    &lt;script type=\&quot;text/javascript\&quot;&gt;makeRed('example_group_#{current_example_group_number}');&lt;/script&gt;&quot; unless @example_group_red
+          @example_group_red = true
           move_progress
           @output.puts &quot;    &lt;dd class=\&quot;spec #{failure_style}\&quot;&gt;&quot;
           @output.puts &quot;      &lt;span class=\&quot;failed_spec_name\&quot;&gt;#{h(example.description)}&lt;/span&gt;&quot;
@@ -79,11 +85,11 @@ module Spec
           @output.flush
         end
 
-        def example_pending(behaviour_name, example_name, message)
+        def example_pending(example, message)
           @output.puts &quot;    &lt;script type=\&quot;text/javascript\&quot;&gt;makeYellow('rspec-header');&lt;/script&gt;&quot; unless @header_red
-          @output.puts &quot;    &lt;script type=\&quot;text/javascript\&quot;&gt;makeYellow('behaviour_#{current_behaviour_number}');&lt;/script&gt;&quot; unless @behaviour_red
+          @output.puts &quot;    &lt;script type=\&quot;text/javascript\&quot;&gt;makeYellow('example_group_#{current_example_group_number}');&lt;/script&gt;&quot; unless @example_group_red
           move_progress
-          @output.puts &quot;    &lt;dd class=\&quot;spec not_implemented\&quot;&gt;&lt;span class=\&quot;not_implemented_spec_name\&quot;&gt;#{h(example_name)}&lt;/span&gt;&lt;/dd&gt;&quot;
+          @output.puts &quot;    &lt;dd class=\&quot;spec not_implemented\&quot;&gt;&lt;span class=\&quot;not_implemented_spec_name\&quot;&gt;#{h(example.description)} (PENDING: #{h(message)})&lt;/span&gt;&lt;/dd&gt;&quot;
           @output.flush
         end
 
@@ -91,15 +97,24 @@ module Spec
         # could output links to images or other files produced during the specs.
         #
         def extra_failure_content(failure)
+          require 'spec/runner/formatter/snippet_extractor'
+          @snippet_extractor ||= SnippetExtractor.new
           &quot;    &lt;pre class=\&quot;ruby\&quot;&gt;&lt;code&gt;#{@snippet_extractor.snippet(failure.exception)}&lt;/code&gt;&lt;/pre&gt;&quot;
         end
         
         def move_progress
-          percent_done = @example_count == 0 ? 100.0 : ((current_example_number + 1).to_f / @example_count.to_f * 1000).to_i / 10.0
           @output.puts &quot;    &lt;script type=\&quot;text/javascript\&quot;&gt;moveProgressBar('#{percent_done}');&lt;/script&gt;&quot;
           @output.flush
         end
 
+        def percent_done
+          result = 100.0
+          if @example_count != 0
+            result = ((current_example_number).to_f / @example_count.to_f * 1000).to_i / 10.0
+          end
+          result
+        end
+
         def dump_failure(counter, failure)
         end
 
@@ -224,7 +239,7 @@ EOF
   font-size: 1.2em;
 }
 
-.behaviour {
+.example_group {
   margin: 0 10px 5px;
   background: #fff;
 }</diff>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/html_formatter.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,10 +1,9 @@
+require 'spec/runner/formatter/base_text_formatter'
+
 module Spec
   module Runner
     module Formatter
       class ProgressBarFormatter &lt; BaseTextFormatter
-        def add_behaviour(name)
-        end
-      
         def example_failed(example, counter, failure)
           @output.print colourise('F', failure)
           @output.flush
@@ -15,7 +14,7 @@ module Spec
           @output.flush
         end
       
-        def example_pending(behaviour_name, example_name, message)
+        def example_pending(example, message)
           super
           @output.print yellow('P')
           @output.flush
@@ -25,6 +24,10 @@ module Spec
           @output.puts
           @output.flush
         end
+        
+        def method_missing(sym, *args)
+          # ignore
+        end
       end
     end
   end</diff>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/progress_bar_formatter.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,27 +1,37 @@
+require 'spec/runner/formatter/base_text_formatter'
+
 module Spec
   module Runner
     module Formatter
-      class SpecdocFormatter &lt; BaseTextFormatter      
-        def add_behaviour(name)
-          @output.puts
-          @output.puts name
-          @output.flush
+      class SpecdocFormatter &lt; BaseTextFormatter
+        def add_example_group(example_group)
+          super
+          output.puts
+          output.puts example_group.description
+          output.flush
         end
       
         def example_failed(example, counter, failure)
-          @output.puts failure.expectation_not_met? ? red(&quot;- #{example.description} (FAILED - #{counter})&quot;) : magenta(&quot;- #{example.description} (ERROR - #{counter})&quot;)
-          @output.flush
+          message = if failure.expectation_not_met?
+            &quot;- #{example.description} (FAILED - #{counter})&quot;
+          else
+            &quot;- #{example.description} (ERROR - #{counter})&quot;
+          end
+          
+          output.puts(failure.expectation_not_met? ? red(message) : magenta(message))
+          output.flush
         end
-      
+        
         def example_passed(example)
-          @output.puts green(&quot;- #{example.description}&quot;)
-          @output.flush
+          message = &quot;- #{example.description}&quot;
+          output.puts green(message)
+          output.flush
         end
         
-        def example_pending(behaviour_name, example_name, message)
+        def example_pending(example, message)
           super
-          @output.puts yellow(&quot;- #{example_name} (PENDING: #{message})&quot;)
-          @output.flush
+          output.puts yellow(&quot;- #{example.description} (PENDING: #{message})&quot;)
+          output.flush
         end
       end
     end</diff>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/specdoc_formatter.rb</filename>
    </modified>
    <modified>
      <diff>@@ -13,7 +13,7 @@ module Spec
         @heckle_class = heckle_class
       end
       
-      # Runs all the behaviours held by +rspec_options+ once for each of the
+      # Runs all the example groups held by +rspec_options+ once for each of the
       # methods in the matched classes.
       def heckle_with
         if @filter =~ /(.*)[#\.](.*)/
@@ -60,13 +60,13 @@ module Spec
       def initialize(klass_name, method_name, rspec_options)
         super(klass_name, method_name)
         @rspec_options = rspec_options
-        @rspec_options.load_paths
       end
 
       def tests_pass?
-        failure_count = @rspec_options.run_examples
-        failure_count == 0
+        success = @rspec_options.run_examples
+        success
       end
+
     end
   end
 end</diff>
      <filename>vendor/plugins/rspec/lib/spec/runner/heckle_runner.rb</filename>
    </modified>
    <modified>
      <diff>@@ -14,23 +14,12 @@ module Spec
 
       attr_reader :options
 
-      BUILT_IN_FORMATTERS = {
-        'specdoc'  =&gt; Formatter::SpecdocFormatter,
-        's'        =&gt; Formatter::SpecdocFormatter,
-        'html'     =&gt; Formatter::HtmlFormatter,
-        'h'        =&gt; Formatter::HtmlFormatter,
-        'rdoc'     =&gt; Formatter::RdocFormatter,
-        'r'        =&gt; Formatter::RdocFormatter,
-        'progress' =&gt; Formatter::ProgressBarFormatter,
-        'p'        =&gt; Formatter::ProgressBarFormatter,
-        'failing_examples' =&gt; Formatter::FailingExamplesFormatter,
-        'e'        =&gt; Formatter::FailingExamplesFormatter,
-        'failing_behaviours' =&gt; Formatter::FailingBehavioursFormatter,
-        'b'        =&gt; Formatter::FailingBehavioursFormatter
-      }
-
       OPTIONS = {
-        :diff =&gt;    [&quot;-D&quot;, &quot;--diff [FORMAT]&quot;, &quot;Show diff of objects that are expected to be equal when they are not&quot;,
+        :pattern =&gt; [&quot;-p&quot;, &quot;--pattern [PATTERN]&quot;,&quot;Limit files loaded to those matching this pattern. Defaults to '**/*_spec.rb'&quot;,
+                                                 &quot;Separate multiple patterns with commas.&quot;,
+                                                 &quot;Applies only to directories named on the command line (files&quot;,
+                                                 &quot;named explicitly on the command line will be loaded regardless).&quot;],
+        :diff =&gt;    [&quot;-D&quot;, &quot;--diff [FORMAT]&quot;,&quot;Show diff of objects that are expected to be equal when they are not&quot;,
                                              &quot;Builtin formats: unified|u|context|c&quot;,
                                              &quot;You can also specify a custom differ class&quot;,
                                              &quot;(in which case you should also specify --require)&quot;],
@@ -47,30 +36,34 @@ module Spec
         :specification =&gt; [&quot;-s&quot;, &quot;--specification [NAME]&quot;, &quot;DEPRECATED - use -e instead&quot;, &quot;(This will be removed when autotest works with -e)&quot;],
         :line =&gt; [&quot;-l&quot;, &quot;--line LINE_NUMBER&quot;, Integer, &quot;Execute behaviout or specification at given line.&quot;,
                                                        &quot;(does not work for dynamically generated specs)&quot;],
-        :format =&gt; [&quot;-f&quot;, &quot;--format FORMAT[:WHERE]&quot;,  &quot;Specifies what format to use for output. Specify WHERE to tell&quot;,
+        :format =&gt; [&quot;-f&quot;, &quot;--format FORMAT[:WHERE]&quot;,&quot;Specifies what format to use for output. Specify WHERE to tell&quot;,
                                                     &quot;the formatter where to write the output. All built-in formats&quot;,
                                                     &quot;expect WHERE to be a file name, and will write to STDOUT if it's&quot;,
                                                     &quot;not specified. The --format option may be specified several times&quot;,
                                                     &quot;if you want several outputs&quot;,
                                                     &quot; &quot;,
-                                                    &quot;Builtin formats: &quot;,
-                                                    &quot;progress|p           : Text progress&quot;,
-                                                    &quot;specdoc|s            : Example doc as text&quot;,
-                                                    &quot;rdoc|r               : Example doc as RDoc&quot;,
+                                                    &quot;Builtin formats for examples: &quot;,
+                                                    &quot;progress|p               : Text progress&quot;,
+                                                    &quot;profile|o                : Text progress with profiling of 10 slowest examples&quot;,
+                                                    &quot;specdoc|s                : Example doc as text&quot;,
+                                                    &quot;html|h                   : A nice HTML report&quot;,
+                                                    &quot;failing_examples|e       : Write all failing examples - input for --example&quot;,
+                                                    &quot;failing_example_groups|g : Write all failing example groups - input for --example&quot;,
+                                                    &quot; &quot;,
+                                                    &quot;Builtin formats for stories: &quot;,
+                                                    &quot;plain|p              : Plain Text&quot;,
                                                     &quot;html|h               : A nice HTML report&quot;,
-                                                    &quot;failing_examples|e   : Write all failing examples - input for --example&quot;,
-                                                    &quot;failing_behaviours|b : Write all failing behaviours - input for --example&quot;,
                                                     &quot; &quot;,
                                                     &quot;FORMAT can also be the name of a custom formatter class&quot;,
                                                     &quot;(in which case you should also specify --require to load it)&quot;],
         :require =&gt; [&quot;-r&quot;, &quot;--require FILE&quot;, &quot;Require FILE before running specs&quot;,
-                                          &quot;Useful for loading custom formatters or other extensions.&quot;,
-                                          &quot;If this option is used it must come before the others&quot;],
+                                             &quot;Useful for loading custom formatters or other extensions.&quot;,
+                                             &quot;If this option is used it must come before the others&quot;],
         :backtrace =&gt; [&quot;-b&quot;, &quot;--backtrace&quot;, &quot;Output full backtrace&quot;],
         :loadby =&gt; [&quot;-L&quot;, &quot;--loadby STRATEGY&quot;, &quot;Specify the strategy by which spec files should be loaded.&quot;,
-                                              &quot;STRATEGY can currently only be 'mtime' (File modification time)&quot;,
-                                              &quot;By default, spec files are loaded in alphabetical order if --loadby&quot;,
-                                              &quot;is not specified.&quot;],
+                                               &quot;STRATEGY can currently only be 'mtime' (File modification time)&quot;,
+                                               &quot;By default, spec files are loaded in alphabetical order if --loadby&quot;,
+                                               &quot;is not specified.&quot;],
         :reverse =&gt; [&quot;-R&quot;, &quot;--reverse&quot;, &quot;Run examples in reverse order&quot;],
         :timeout =&gt; [&quot;-t&quot;, &quot;--timeout FLOAT&quot;, &quot;Interrupt and fail each example that doesn't complete in the&quot;,
                                               &quot;specified time&quot;],
@@ -83,7 +76,7 @@ module Spec
         :dry_run =&gt; [&quot;-d&quot;, &quot;--dry-run&quot;, &quot;Invokes formatters without executing the examples.&quot;],
         :options_file =&gt; [&quot;-O&quot;, &quot;--options PATH&quot;, &quot;Read options from a file&quot;],
         :generate_options =&gt; [&quot;-G&quot;, &quot;--generate-options PATH&quot;, &quot;Generate an options file for --options&quot;],
-        :runner =&gt; [&quot;-U&quot;, &quot;--runner RUNNER&quot;, &quot;Use a custom BehaviourRunner.&quot;],
+        :runner =&gt; [&quot;-U&quot;, &quot;--runner RUNNER&quot;, &quot;Use a custom Runner.&quot;],
         :drb =&gt; [&quot;-X&quot;, &quot;--drb&quot;, &quot;Run examples via DRb. (For example against script/spec_server)&quot;],
         :version =&gt; [&quot;-v&quot;, &quot;--version&quot;, &quot;Show version&quot;],
         :help =&gt; [&quot;-h&quot;, &quot;--help&quot;, &quot;You're looking at it&quot;]
@@ -95,37 +88,35 @@ module Spec
         @out_stream = out
         @options = Options.new(@error_stream, @out_stream)
 
-        @spec_parser = SpecParser.new
         @file_factory = File
 
         self.banner = &quot;Usage: spec (FILE|DIRECTORY|GLOB)+ [options]&quot;
         self.separator &quot;&quot;
+        on(*OPTIONS[:pattern]) {|pattern| @options.filename_pattern = pattern}
         on(*OPTIONS[:diff]) {|diff| @options.parse_diff(diff)}
         on(*OPTIONS[:colour]) {@options.colour = true}
         on(*OPTIONS[:example]) {|example| @options.parse_example(example)}
         on(*OPTIONS[:specification]) {|example| @options.parse_example(example)}
         on(*OPTIONS[:line]) {|line_number| @options.line_number = line_number.to_i}
         on(*OPTIONS[:format]) {|format| @options.parse_format(format)}
-        on(*OPTIONS[:require]) {|req| @options.parse_require(req)}
+        on(*OPTIONS[:require]) {|requires| invoke_requires(requires)}
         on(*OPTIONS[:backtrace]) {@options.backtrace_tweaker = NoisyBacktraceTweaker.new}
         on(*OPTIONS[:loadby]) {|loadby| @options.loadby = loadby}
         on(*OPTIONS[:reverse]) {@options.reverse = true}
         on(*OPTIONS[:timeout]) {|timeout| @options.timeout = timeout.to_f}
-        on(*OPTIONS[:heckle]) {|heckle| @options.parse_heckle(heckle)}
+        on(*OPTIONS[:heckle]) {|heckle| @options.load_heckle_runner(heckle)}
         on(*OPTIONS[:dry_run]) {@options.dry_run = true}
         on(*OPTIONS[:options_file]) {|options_file| parse_options_file(options_file)}
-        on(*OPTIONS[:generate_options]) do |options_file|
-        end
-        on(*OPTIONS[:runner]) do |runner|
-          @options.runner_arg = runner
-        end
+        on(*OPTIONS[:generate_options]) {|options_file|}
+        on(*OPTIONS[:runner]) {|runner|  @options.user_input_for_runner = runner}
         on(*OPTIONS[:drb]) {}
         on(*OPTIONS[:version]) {parse_version}
-        self.on_tail(*OPTIONS[:help]) {parse_help}
+        on_tail(*OPTIONS[:help]) {parse_help}
       end
 
-      def order!(argv=default_argv, &amp;blk)
+      def order!(argv, &amp;blk)
         @argv = argv
+        @options.argv = @argv.dup
         return if parse_generate_options
         return if parse_drb
         
@@ -134,21 +125,23 @@ module Spec
           blk.call(file) if blk
         end
 
-        if @options.line_number
-          set_spec_from_line_number
-        end
-
-        if @options.formatters.empty?
-          @options.create_formatter(Formatter::ProgressBarFormatter)
-        end
-
         @options
       end
 
       protected
+      def invoke_requires(requires)
+        requires.split(&quot;,&quot;).each do |file|
+          require file
+        end
+      end
+      
       def parse_options_file(options_file)
         option_file_args = IO.readlines(options_file).map {|l| l.chomp.split &quot; &quot;}.flatten
         @argv.push(*option_file_args)
+        # TODO - this is a brute force solution to http://rspec.lighthouseapp.com/projects/5645/tickets/293.
+        # Let's look for a cleaner way. Might not be one. But let's look. If not, perhaps
+        # this can be moved to a different method to indicate the special handling for drb?
+        parse_drb(@argv)
       end
 
       def parse_generate_options
@@ -175,14 +168,20 @@ module Spec
         end
         @out_stream.puts &quot;\nOptions written to #{options_file}. You can now use these options with:&quot;
         @out_stream.puts &quot;spec --options #{options_file}&quot;
-        @options.generate = true
+        @options.examples_should_not_be_run
       end
 
-      def parse_drb
+      def parse_drb(argv = nil)
+        argv ||= @options.argv # TODO - see note about about http://rspec.lighthouseapp.com/projects/5645/tickets/293
         is_drb = false
-        is_drb ||= @argv.delete(OPTIONS[:drb][0])
-        is_drb ||= @argv.delete(OPTIONS[:drb][1])
-        return is_drb ? DrbCommandLine.run(@argv, @error_stream, @out_stream) : nil
+        is_drb ||= argv.delete(OPTIONS[:drb][0])
+        is_drb ||= argv.delete(OPTIONS[:drb][1])
+        return false unless is_drb
+        @options.examples_should_not_be_run
+        DrbCommandLine.run(
+          self.class.parse(argv, @error_stream, @out_stream)
+        )
+        true
       end
 
       def parse_version
@@ -195,37 +194,9 @@ module Spec
         exit if stdout?
       end      
 
-      def set_spec_from_line_number
-        if @options.examples.empty?
-          if @options.files.length == 1
-            if @file_factory.file?(@options.files[0])
-              source = @file_factory.open(@options.files[0])
-              example = @spec_parser.spec_name_for(source, @options.line_number)
-              @options.parse_example(example)
-            elsif @file_factory.directory?(@options.files[0])
-              @error_stream.puts &quot;You must specify one file, not a directory when using the --line option&quot;
-              exit(1) if stderr?
-            else
-              @error_stream.puts &quot;#{@options.files[0]} does not exist&quot;
-              exit(2) if stderr?
-            end
-          else
-            @error_stream.puts &quot;Only one file can be specified when using the --line option: #{@options.files.inspect}&quot;
-            exit(3) if stderr?
-          end
-        else
-          @error_stream.puts &quot;You cannot use both --line and --example&quot;
-          exit(4) if stderr?
-        end
-      end
-
       def stdout?
         @out_stream == $stdout
       end
-
-      def stderr?
-        @error_stream == $stderr
-      end
     end
   end
 end</diff>
      <filename>vendor/plugins/rspec/lib/spec/runner/option_parser.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,31 +4,38 @@ module Spec
       FILE_SORTERS = {
         'mtime' =&gt; lambda {|file_a, file_b| File.mtime(file_b) &lt;=&gt; File.mtime(file_a)}
       }
-      
-      BUILT_IN_FORMATTERS = {
-        'specdoc'  =&gt; Formatter::SpecdocFormatter,
-        's'        =&gt; Formatter::SpecdocFormatter,
-        'html'     =&gt; Formatter::HtmlFormatter,
-        'h'        =&gt; Formatter::HtmlFormatter,
-        'rdoc'     =&gt; Formatter::RdocFormatter,
-        'r'        =&gt; Formatter::RdocFormatter,
-        'progress' =&gt; Formatter::ProgressBarFormatter,
-        'p'        =&gt; Formatter::ProgressBarFormatter,
-        'failing_examples' =&gt; Formatter::FailingExamplesFormatter,
-        'e'        =&gt; Formatter::FailingExamplesFormatter,
-        'failing_behaviours' =&gt; Formatter::FailingBehavioursFormatter,
-        'b'        =&gt; Formatter::FailingBehavioursFormatter
+
+      EXAMPLE_FORMATTERS = { # Load these lazily for better speed
+               'specdoc' =&gt; ['spec/runner/formatter/specdoc_formatter',                'Formatter::SpecdocFormatter'],
+                     's' =&gt; ['spec/runner/formatter/specdoc_formatter',                'Formatter::SpecdocFormatter'],
+                  'html' =&gt; ['spec/runner/formatter/html_formatter',                   'Formatter::HtmlFormatter'],
+                     'h' =&gt; ['spec/runner/formatter/html_formatter',                   'Formatter::HtmlFormatter'],
+              'progress' =&gt; ['spec/runner/formatter/progress_bar_formatter',           'Formatter::ProgressBarFormatter'],
+                     'p' =&gt; ['spec/runner/formatter/progress_bar_formatter',           'Formatter::ProgressBarFormatter'],
+      'failing_examples' =&gt; ['spec/runner/formatter/failing_examples_formatter',       'Formatter::FailingExamplesFormatter'],
+                     'e' =&gt; ['spec/runner/formatter/failing_examples_formatter',       'Formatter::FailingExamplesFormatter'],
+'failing_example_groups' =&gt; ['spec/runner/formatter/failing_example_groups_formatter', 'Formatter::FailingExampleGroupsFormatter'],
+                     'g' =&gt; ['spec/runner/formatter/failing_example_groups_formatter', 'Formatter::FailingExampleGroupsFormatter'],
+               'profile' =&gt; ['spec/runner/formatter/profile_formatter',                'Formatter::ProfileFormatter'],
+                     'o' =&gt; ['spec/runner/formatter/profile_formatter',                'Formatter::ProfileFormatter'],
+              'textmate' =&gt; ['spec/runner/formatter/text_mate_formatter',              'Formatter::TextMateFormatter']
       }
-      
+
+      STORY_FORMATTERS = {
+        'plain' =&gt; ['spec/runner/formatter/story/plain_text_formatter', 'Formatter::Story::PlainTextFormatter'],
+            'p' =&gt; ['spec/runner/formatter/story/plain_text_formatter', 'Formatter::Story::PlainTextFormatter'],
+         'html' =&gt; ['spec/runner/formatter/story/html_formatter',       'Formatter::Story::HtmlFormatter'],
+            'h' =&gt; ['spec/runner/formatter/story/html_formatter',       'Formatter::Story::HtmlFormatter']
+      }
+
       attr_accessor(
+        :filename_pattern,
         :backtrace_tweaker,
         :context_lines,
         :diff_format,
         :dry_run,
+        :profile,
         :examples,
-        :failure_file,
-        :formatters,
-        :generate,
         :heckle_runner,
         :line_number,
         :loadby,
@@ -36,58 +43,80 @@ module Spec
         :reverse,
         :timeout,
         :verbose,
-        :runner_arg
+        :user_input_for_runner,
+        :error_stream,
+        :output_stream,
+        # TODO: BT - Figure out a better name
+        :argv
       )
-      attr_reader :colour, :differ_class, :files, :behaviours
+      attr_reader :colour, :differ_class, :files, :example_groups
 
       def initialize(error_stream, output_stream)
         @error_stream = error_stream
         @output_stream = output_stream
+        @filename_pattern = &quot;**/*_spec.rb&quot;
         @backtrace_tweaker = QuietBacktraceTweaker.new
         @examples = []
-        @formatters = []
         @colour = false
+        @profile = false
         @dry_run = false
         @reporter = Reporter.new(self)
         @context_lines = 3
         @diff_format  = :unified
         @files = []
-        @behaviours = []
+        @example_groups = []
+        @examples_run = false
+        @examples_should_be_run = nil
+        @user_input_for_runner = nil
       end
 
-      def add_behaviour(behaviour)
-        @behaviours &lt;&lt; behaviour
+      def add_example_group(example_group)
+        @example_groups &lt;&lt; example_group
       end
 
-      def run_examples
-        runner = custom_runner || BehaviourRunner.new(self)
-        runner.run
+      def remove_example_group(example_group)
+        @example_groups.delete(example_group)
       end
 
-      def colour=(colour)
-        @colour = colour
-        begin; \
-          require 'Win32/Console/ANSI' if @colour &amp;&amp; PLATFORM =~ /win32/; \
-        rescue LoadError ; \
-          raise &quot;You must gem install win32console to use colour on Windows&quot; ; \
+      def run_examples
+        return true unless examples_should_be_run?
+        runner = custom_runner || ExampleGroupRunner.new(self)
+
+        unless @files_loaded
+          runner.load_files(files_to_load)
+          @files_loaded = true
         end
-      end
 
-      def custom_runner?
-        return @runner_arg ? true : false
+        if example_groups.empty?
+          true
+        else
+          set_spec_from_line_number if line_number
+          success = runner.run
+          @examples_run = true
+          heckle if heckle_runner
+          success
+        end
       end
 
-      def custom_runner
-        return nil unless custom_runner?
-        klass_name, arg = split_at_colon(@runner_arg)
-        runner_type = load_class(klass_name, 'behaviour runner', '--runner')
-        return runner_type.new(self, arg)
+      def examples_run?
+        @examples_run
       end
 
-      def differ_class=(klass)
-        return unless klass
-        @differ_class = klass
-        Spec::Expectations.differ = self.differ_class.new(self)
+      def examples_should_not_be_run
+        @examples_should_be_run = false
+      end      
+
+      def colour=(colour)
+        @colour = colour
+        if @colour &amp;&amp; RUBY_PLATFORM =~ /win32/ ;\
+          begin ;\
+            require 'rubygems' ;\
+            require 'Win32/Console/ANSI' ;\
+          rescue LoadError ;\
+            warn &quot;You must 'gem install win32console' to use colour on Windows&quot; ;\
+            @colour = false ;\
+          end
+        end
       end
 
       def parse_diff(format)
@@ -113,43 +142,80 @@ module Spec
       end
 
       def parse_format(format_arg)
-        format, where = split_at_colon(format_arg)
-        # This funky regexp checks whether we have a FILE_NAME or not
+        format, where = ClassAndArgumentsParser.parse(format_arg)
         unless where
           raise &quot;When using several --format options only one of them can be without a file&quot; if @out_used
           where = @output_stream
           @out_used = true
         end
-
-        formatter_type = BUILT_IN_FORMATTERS[format] || load_class(format, 'formatter', '--format')
-        create_formatter(formatter_type, where)
+        @format_options ||= []
+        @format_options &lt;&lt; [format, where]
       end
-
-      def create_formatter(formatter_type, where=@output_stream)
-        formatter = formatter_type.new(self, where)
-        @formatters &lt;&lt; formatter
-        formatter
+      
+      def formatters
+        @format_options ||= [['progress', @output_stream]]
+        @formatters ||= load_formatters(@format_options, EXAMPLE_FORMATTERS)
       end
 
-      def parse_require(req)
-        req.split(&quot;,&quot;).each{|file| require file}
+      def story_formatters
+        @format_options ||= [['plain', @output_stream]]
+        @formatters ||= load_formatters(@format_options, STORY_FORMATTERS)
+      end
+      
+      def load_formatters(format_options, formatters)
+        format_options.map do |format, where|
+          formatter_type = if formatters[format]
+            require formatters[format][0]
+            eval(formatters[format][1], binding, __FILE__, __LINE__)
+          else
+            load_class(format, 'formatter', '--format')
+          end
+          formatter_type.new(self, where)
+        end
       end
 
-      def parse_heckle(heckle)
-        heckle_require = [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM} ? 'spec/runner/heckle_runner_unsupported' : 'spec/runner/heckle_runner'
-        require heckle_require
+      def load_heckle_runner(heckle)
+        suffix = [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM} ? '_unsupported' : ''
+        require &quot;spec/runner/heckle_runner#{suffix}&quot;
         @heckle_runner = HeckleRunner.new(heckle)
       end
 
-      def split_at_colon(s)
-        if s =~ /([a-zA-Z_]+(?:::[a-zA-Z_]+)*):?(.*)/
-          arg = $2 == &quot;&quot; ? nil : $2
-          [$1, arg]
-        else
-          raise &quot;Couldn't parse #{s.inspect}&quot;
+      def number_of_examples
+        total = 0
+        @example_groups.each do |example_group|
+          total += example_group.number_of_examples
+        end
+        total
+      end
+
+      def files_to_load
+        result = []
+        sorted_files.each do |file|
+          if File.directory?(file)
+            filename_pattern.split(&quot;,&quot;).each do |pattern|
+              result += Dir[File.expand_path(&quot;#{file}/#{pattern.strip}&quot;)]
+            end
+          elsif File.file?(file)
+            result &lt;&lt; file
+          else
+            raise &quot;File or directory not found: #{file}&quot;
+          end
         end
+        result
+      end
+      
+      protected
+      def examples_should_be_run?
+        return @examples_should_be_run unless @examples_should_be_run.nil?
+        @examples_should_be_run = true
       end
       
+      def differ_class=(klass)
+        return unless klass
+        @differ_class = klass
+        Spec::Expectations.differ = self.differ_class.new(self)
+      end
+
       def load_class(name, kind, option)
         if name =~ /\A(?:::)?([A-Z]\w*(?:::[A-Z]\w*)*)\z/
           arg = $2 == &quot;&quot; ? nil : $2
@@ -167,44 +233,60 @@ module Spec
           if $_spec_spec ; raise e ; else exit(1) ; end
         end
       end
-
-      def load_paths
-        paths.each do |path|
-          load path
-        end
+      
+      def custom_runner
+        return nil unless custom_runner?
+        klass_name, arg = ClassAndArgumentsParser.parse(user_input_for_runner)
+        runner_type = load_class(klass_name, 'behaviour runner', '--runner')
+        return runner_type.new(self, arg)
       end
 
-      def paths
-        result = []
-        sorted_files.each do |file|
-          if test ?d, file
-            result += Dir[File.expand_path(&quot;#{file}/**/*.rb&quot;)]
-          elsif test ?f, file
-            result &lt;&lt; file
-          else
-            raise &quot;File or directory not found: #{file}&quot;
-          end
-        end
-        result
+      def custom_runner?
+        return user_input_for_runner ? true : false
       end
-
-      def number_of_examples
-        @behaviours.inject(0) {|sum, behaviour| sum + behaviour.number_of_examples}
+      
+      def heckle
+        heckle_runner = self.heckle_runner
+        self.heckle_runner = nil
+        heckle_runner.heckle_with
       end
       
-      protected
       def sorted_files
         return sorter ? files.sort(&amp;sorter) : files
       end
-      
+
       def sorter
         FILE_SORTERS[loadby]
       end
-      
+
       def default_differ
         require 'spec/expectations/differs/default'
         self.differ_class = Spec::Expectations::Differs::Default
-      end      
+      end
+
+      def set_spec_from_line_number
+        if examples.empty?
+          if files.length == 1
+            if File.directory?(files[0])
+              error_stream.puts &quot;You must specify one file, not a directory when using the --line option&quot;
+              exit(1) if stderr?
+            else
+              example = SpecParser.new.spec_name_for(files[0], line_number)
+              @examples = [example]
+            end
+          else
+            error_stream.puts &quot;Only one file can be specified when using the --line option: #{files.inspect}&quot;
+            exit(3) if stderr?
+          end
+        else
+          error_stream.puts &quot;You cannot use both --line and --example&quot;
+          exit(4) if stderr?
+        end
+      end
+
+      def stderr?
+        @error_stream == $stderr
+      end
     end
   end
 end</diff>
      <filename>vendor/plugins/rspec/lib/spec/runner/options.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,35 +1,46 @@
 module Spec
   module Runner
     class Reporter
-      attr_reader :options
+      attr_reader :options, :example_groups
       
       def initialize(options)
         @options = options
+        @options.reporter = self
         clear
       end
       
-      def add_behaviour(name)
-        formatters.each{|f| f.add_behaviour(name)}
-        @behaviour_names &lt;&lt; name
+      def add_example_group(example_group)
+        formatters.each do |f|
+          f.add_example_group(example_group)
+        end
+        example_groups &lt;&lt; example_group
       end
       
-      def example_started(example_definition)
-        formatters.each{|f| f.example_started(example_definition)}
+      def example_started(example)
+        formatters.each{|f| f.example_started(example)}
       end
       
-      def example_finished(example_definition, error=nil, failure_location=nil, not_implemented = false)
-        @example_names &lt;&lt; example_definition
+      def example_finished(example, error=nil)
+        @examples &lt;&lt; example
         
-        if not_implemented
-          example_pending(@behaviour_names.last, example_definition)
-        elsif error.nil?
-          example_passed(example_definition)
-        elsif Spec::DSL::ExamplePendingError === error
-          example_pending(@behaviour_names.last, example_definition, error.message)
+        if error.nil?
+          example_passed(example)
+        elsif Spec::Example::ExamplePendingError === error
+          example_pending(example, error.message)
         else
-          example_failed(example_definition, error, failure_location)
+          example_failed(example, error)
+        end
+      end
+
+      def failure(example, error)
+        backtrace_tweaker.tweak_backtrace(error)
+        failure = Failure.new(example, error)
+        @failures &lt;&lt; failure
+        formatters.each do |f|
+          f.example_failed(example, @failures.length, failure)
         end
       end
+      alias_method :example_failed, :failure
 
       def start(number_of_examples)
         clear
@@ -47,7 +58,7 @@ module Spec
         dump_pending
         dump_failures
         formatters.each do |f|
-          f.dump_summary(duration, @example_names.length, @failures.length, @pending_count)
+          f.dump_summary(duration, @examples.length, @failures.length, @pending_count)
           f.close
         end
         @failures.length
@@ -64,10 +75,10 @@ module Spec
       end
   
       def clear
-        @behaviour_names = []
+        @example_groups = []
         @failures = []
         @pending_count = 0
-        @example_names = []
+        @examples = []
         @start_time = nil
         @end_time = nil
       end
@@ -79,6 +90,7 @@ module Spec
           index + 1
         end
       end
+
       def dump_pending
         formatters.each{|f| f.dump_pending}
       end
@@ -88,49 +100,47 @@ module Spec
         return &quot;0.0&quot;
       end
       
-      def example_passed(name)
-        formatters.each{|f| f.example_passed(name)}
-      end
-
-      def example_failed(name, error, failure_location)
-        backtrace_tweaker.tweak_backtrace(error, failure_location)
-        example_name = &quot;#{@behaviour_names.last} #{name}&quot;
-        failure = Failure.new(example_name, error)
-        @failures &lt;&lt; failure
-        formatters.each{|f| f.example_failed(name, @failures.length, failure)}
+      def example_passed(example)
+        formatters.each{|f| f.example_passed(example)}
       end
       
-      def example_pending(behaviour_name, example_name, message=&quot;Not Yet Implemented&quot;)
+      def example_pending(example, message=&quot;Not Yet Implemented&quot;)
         @pending_count += 1
-        formatters.each{|f| f.example_pending(behaviour_name, example_name, message)}
+        formatters.each do |f|
+          f.example_pending(example, message)
+        end
       end
       
       class Failure
-        attr_reader :exception
+        attr_reader :example, :exception
         
-        def initialize(example_name, exception)
-          @example_name = example_name
+        def initialize(example, exception)
+          @example = example
           @exception = exception
         end
 
         def header
           if expectation_not_met?
-            &quot;'#{@example_name}' FAILED&quot;
+            &quot;'#{example_name}' FAILED&quot;
           elsif pending_fixed?
-            &quot;'#{@example_name}' FIXED&quot;
+            &quot;'#{example_name}' FIXED&quot;
           else
-            &quot;#{@exception.class.name} in '#{@example_name}'&quot;
+            &quot;#{@exception.class.name} in '#{example_name}'&quot;
           end
         end
         
         def pending_fixed?
-          @exception.is_a?(Spec::DSL::PendingFixedError)
+          @exception.is_a?(Spec::Example::PendingExampleFixedError)
         end
 
         def expectation_not_met?
           @exception.is_a?(Spec::Expectations::ExpectationNotMetError)
         end
 
+        protected
+        def example_name
+          @example.__full_description
+        end
       end
     end
   end</diff>
      <filename>vendor/plugins/rspec/lib/spec/runner/reporter.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,14 +2,28 @@ module Spec
   module Runner
     # Parses a spec file and finds the nearest example for a given line number.
     class SpecParser
-      def spec_name_for(io, line_number)
-        source  = io.read
-        behaviour, behaviour_line = behaviour_at_line(source, line_number)
-        example, example_line = example_at_line(source, line_number)
-        if behaviour &amp;&amp; example &amp;&amp; (behaviour_line &lt; example_line)
-          &quot;#{behaviour} #{example}&quot;
-        elsif behaviour
-          behaviour
+      attr_reader :best_match
+
+      def initialize
+        @best_match = {}
+      end
+
+      def spec_name_for(file, line_number)
+        best_match.clear
+        file = File.expand_path(file)
+        rspec_options.example_groups.each do |example_group|
+          consider_example_groups_for_best_match example_group, file, line_number
+
+          example_group.examples.each do |example|
+            consider_example_for_best_match example, example_group, file, line_number
+          end
+        end
+        if best_match[:example_group]
+          if best_match[:example]
+            &quot;#{best_match[:example_group].description} #{best_match[:example].description}&quot;
+          else
+            best_match[:example_group].description
+          end
         else
           nil
         end
@@ -17,36 +31,40 @@ module Spec
 
     protected
 
-      def behaviour_at_line(source, line_number)
-        find_above(source, line_number, /^\s*(context|describe)\s+(.*)\s+do/)
-      end
-
-      def example_at_line(source, line_number)
-        find_above(source, line_number, /^\s*(specify|it)\s+(.*)\s+do/)
+      def consider_example_groups_for_best_match(example_group, file, line_number)
+        parsed_backtrace = parse_backtrace(example_group.registration_backtrace)
+        parsed_backtrace.each do |example_file, example_line|
+          if is_best_match?(file, line_number, example_file, example_line)
+            best_match.clear
+            best_match[:example_group] = example_group
+            best_match[:line] = example_line
+          end
+        end
       end
 
-      # Returns the context/describe or specify/it name and the line number
-      def find_above(source, line_number, pattern)
-        lines_above_reversed(source, line_number).each_with_index do |line, n|
-          return [parse_description($2), line_number-n] if line =~ pattern
+      def consider_example_for_best_match(example, example_group, file, line_number)
+        parsed_backtrace = parse_backtrace(example.implementation_backtrace)
+        parsed_backtrace.each do |example_file, example_line|
+          if is_best_match?(file, line_number, example_file, example_line)
+            best_match.clear
+            best_match[:example_group] = example_group
+            best_match[:example] = example
+            best_match[:line] = example_line
+          end
         end
-        nil
       end
 
-      def lines_above_reversed(source, line_number)
-        lines = source.split(&quot;\n&quot;)
-        lines[0...line_number].reverse
+      def is_best_match?(file, line_number, example_file, example_line)
+        file == File.expand_path(example_file) &amp;&amp;
+        example_line &lt;= line_number &amp;&amp;
+        example_line &gt; best_match[:line].to_i
       end
-      
-      def parse_description(str)
-        return str[1..-2] if str =~ /^['&quot;].*['&quot;]$/
-        if matches = /^['&quot;](.*)['&quot;](,.*)?$/.match(str)
-          return ::Spec::DSL::BehaviourDescription.generate_description(matches[1])
-        end
-        if matches = /^(.*)\s*,\s*['&quot;](.*)['&quot;](,.*)?$/.match(str)
-          return ::Spec::DSL::BehaviourDescription.generate_description(matches[1], matches[2])
+
+      def parse_backtrace(backtrace)
+        backtrace.collect do |trace_line|
+          split_line = trace_line.split(':')
+          [split_line[0], Integer(split_line[1])]
         end
-        return str
       end
     end
   end</diff>
      <filename>vendor/plugins/rspec/lib/spec/runner/spec_parser.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,10 +1,10 @@
-require 'spec/story/documenter'
+require 'spec'
 require 'spec/story/extensions'
 require 'spec/story/given_scenario'
-require 'spec/story/reporter'
 require 'spec/story/runner'
 require 'spec/story/scenario'
-require 'spec/story/simple_step'
+require 'spec/story/step'
+require 'spec/story/step_group'
 require 'spec/story/step_mother'
 require 'spec/story/story'
 require 'spec/story/world'</diff>
      <filename>vendor/plugins/rspec/lib/spec/story.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1 +1,3 @@
 require 'spec/story/extensions/main'
+require 'spec/story/extensions/string'
+require 'spec/story/extensions/regexp'</diff>
      <filename>vendor/plugins/rspec/lib/spec/story/extensions.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,6 +5,79 @@ module Spec
         def Story(title, narrative, params = {}, &amp;body)
           ::Spec::Story::Runner.story_runner.Story(title, narrative, params, &amp;body)
         end
+      
+        # Calling this deprecated is silly, since it hasn't been released yet. But, for
+        # those who are reading this - this will be deleted before the 1.1 release.
+        def run_story(*args, &amp;block)
+          runner = Spec::Story::Runner::PlainTextStoryRunner.new(*args)
+          runner.instance_eval(&amp;block) if block
+          runner.run
+        end
+      
+        # Creates (or appends to an existing) a namespaced group of steps for use in Stories
+        #
+        # == Examples
+        #
+        #   # Creating a new group
+        #   steps_for :forms do
+        #     When(&quot;user enters $value in the $field field&quot;) do ... end
+        #     When(&quot;user submits the $form form&quot;) do ... end
+        #   end
+        def steps_for(tag, &amp;block)
+          steps = rspec_story_steps[tag]
+          steps.instance_eval(&amp;block) if block
+          steps
+        end
+      
+        # Creates a context for running a Plain Text Story with specific groups of Steps. 
+        # Also supports adding arbitrary steps that will only be accessible to
+        # the Story being run.
+        #
+        # == Examples
+        #
+        #   # Run a Story with one group of steps
+        #   with_steps_for :checking_accounts do
+        #     run File.dirname(__FILE__) + &quot;/withdraw_cash&quot;
+        #   end
+        #
+        #   # Run a Story, adding steps that are only available for this Story
+        #   with_steps_for :accounts do
+        #     Given &quot;user is logged in as account administrator&quot;
+        #     run File.dirname(__FILE__) + &quot;/reconcile_accounts&quot;
+        #   end
+        #
+        #   # Run a Story with steps from two groups
+        #   with_steps_for :checking_accounts, :savings_accounts do
+        #     run File.dirname(__FILE__) + &quot;/transfer_money&quot;
+        #   end
+        #
+        #   # Run a Story with a specific Story extension
+        #   with_steps_for :login, :navigation do
+        #     run File.dirname(__FILE__) + &quot;/user_changes_password&quot;, :type =&gt; RailsStory
+        #   end
+        def with_steps_for(*tags, &amp;block)
+          steps = Spec::Story::StepGroup.new do
+            extend StoryRunnerStepGroupAdapter
+          end
+          tags.each {|tag| steps &lt;&lt; rspec_story_steps[tag]}
+          steps.instance_eval(&amp;block) if block
+          steps
+        end
+
+      private
+
+        module StoryRunnerStepGroupAdapter
+          def run(path, options={})
+            runner = Spec::Story::Runner::PlainTextStoryRunner.new(path, options)
+            runner.steps &lt;&lt; self
+            runner.run
+          end
+        end
+        
+        def rspec_story_steps  # :nodoc:
+          $rspec_story_steps ||= Spec::Story::StepGroupHash.new
+        end
+                
       end
     end
   end</diff>
      <filename>vendor/plugins/rspec/lib/spec/story/extensions/main.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,12 @@
 module Spec
   module Story
     class GivenScenario
-      def initialize name
+      def initialize(name)
         @name = name
       end
       
-      def perform(instance)
-        scenario = Runner::StoryRunner.scenario_from_current_story @name
+      def perform(instance, ignore_name)
+        scenario = Runner::StoryRunner.scenario_from_current_story(@name)
         Runner::ScenarioRunner.new.run(scenario, instance)
       end
     end</diff>
      <filename>vendor/plugins/rspec/lib/spec/story/given_scenario.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,48 +1,59 @@
 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 &lt;&lt; self
-        def run_options
-          @run_options ||= ::Spec::Runner::OptionParser.parse(ARGV, $stderr, $stdout)
+        def run_options # :nodoc:
+          rspec_options
+          # @run_options ||= ::Spec::Runner::OptionParser.parse(ARGV, $stderr, $stdout)
         end
         
-        def story_runner
+        def story_runner # :nodoc:
           unless @story_runner
-            scenario_runner = ScenarioRunner.new
-            Runner.register_exit_hook
-            world_creator = World
-            @story_runner = StoryRunner.new(scenario_runner, world_creator)
-            unless run_options.dry_run
-              reporter = ::Spec::Story::Reporter::PlainTextReporter.new($stdout)
-              scenario_runner.add_listener(reporter)
-              @story_runner.add_listener(reporter)
-            end
-            if not run_options.formatters.empty?
-              documenter = ::Spec::Story::Documenter::PlainTextDocumenter.new($stdout)
-              scenario_runner.add_listener(documenter)
-              @story_runner.add_listener(documenter)
-              world_creator.add_listener(documenter)
+            @story_runner = create_story_runner
+            run_options.story_formatters.each do |formatter|
+              register_listener(formatter)
             end
+            self.register_exit_hook
           end
           @story_runner
         end
         
-        def register_exit_hook
-          # 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
+        def scenario_runner # :nodoc:
+          @scenario_runner ||= ScenarioRunner.new
+        end
+        
+        def world_creator # :nodoc:
+          @world_creator ||= World
+        end
+        
+        def create_story_runner
+          StoryRunner.new(scenario_runner, world_creator)
+        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:
           at_exit do
-            Runner.story_runner.run_stories unless $!
+            exit 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</diff>
      <filename>vendor/plugins/rspec/lib/spec/story/runner.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,17 +7,22 @@ module Spec
         end
         
         def run(scenario, world)
-          begin
-            raise Spec::DSL::ExamplePendingError unless scenario.body
-            @listeners.each { |l| l.scenario_started(scenario.story.title, scenario.name) }
-            run_story_ignoring_scenarios(scenario.story, world)
-            world.instance_eval(&amp;scenario.body)
+          @listeners.each { |l| l.scenario_started(scenario.story.title, scenario.name) }
+          run_story_ignoring_scenarios(scenario.story, world)
+          
+          world.start_collecting_errors
+          world.instance_eval(&amp;scenario.body)
+          if world.errors.empty?
             @listeners.each { |l| l.scenario_succeeded(scenario.story.title, scenario.name) }
-          rescue Spec::DSL::ExamplePendingError =&gt; e
-            @listeners.each { |l| l.scenario_pending(scenario.story.title, scenario.name, e.message) }
-          rescue StandardError =&gt; e
-            @listeners.each { |l| l.scenario_failed(scenario.story.title, scenario.name, e) }
+          else
+            if Spec::Example::ExamplePendingError === (e = world.errors.first)
+              @listeners.each { |l| l.scenario_pending(scenario.story.title, scenario.name, e.message) }
+            else
+              @listeners.each { |l| l.scenario_failed(scenario.story.title, scenario.name, e) }
+              return false
+            end
           end
+          true
         end
         
         def add_listener(listener)</diff>
      <filename>vendor/plugins/rspec/lib/spec/story/runner/scenario_runner.rb</filename>
    </modified>
    <modified>
      <diff>@@ -36,7 +36,9 @@ module Spec
         def run_stories
           return if @stories.empty?
           @listeners.each { |l| l.run_started(scenarios.size) }
+          success = true
           @stories.each do |story|
+            story.assign_steps_to(World)
             @current_story = story
             @listeners.each { |l| l.story_started(story.title, story.narrative) }
             scenarios = @scenarios_by_story[story.title]
@@ -44,12 +46,15 @@ module Spec
               type = story[:type] || Object
               args = story[:args] || []
               world = @world_creator.create(type, *args)
-              world.instance_variable_set :@current_story, story
-              @scenario_runner.run(scenario, world)
+              success = success &amp; @scenario_runner.run(scenario, world)
             end
             @listeners.each { |l| l.story_ended(story.title, story.narrative) }
+            World.step_mother.clear
           end
+          unique_steps = (World.step_names.collect {|n| Regexp === n ? n.source : n.to_s}).uniq.sort
+          @listeners.each { |l| l.collected_steps(unique_steps) }
           @listeners.each { |l| l.run_ended }
+          return success
         end
         
         def add_listener(listener)</diff>
      <filename>vendor/plugins/rspec/lib/spec/story/runner/story_runner.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,21 +2,26 @@ module Spec
   module Story
     class StepMother
       def initialize
-        @steps = Hash.new do |hsh,type|
-          hsh[type] = Hash.new do |hsh,name|
-            SimpleStep.new(name) do
-              raise Spec::DSL::ExamplePendingError.new(&quot;Unimplemented step: #{name}&quot;)
-            end
-          end
-        end
+        @steps = StepGroup.new
+      end
+      
+      def use(new_step_group)
+        @steps &lt;&lt; new_step_group
       end
       
-      def store(type, name, step)
-        @steps[type][name] = step
+      def store(type, step)
+        @steps.add(type, step)
       end
       
       def find(type, name)
-        @steps[type][name]
+        if @steps.find(type, name).nil?
+          @steps.add(type,
+          Step.new(name) do
+            raise Spec::Example::ExamplePendingError.new(&quot;Unimplemented step: #{name}&quot;)
+          end
+          )
+        end
+        @steps.find(type, name)
       end
       
       def clear
@@ -26,6 +31,7 @@ module Spec
       def empty?
         @steps.empty?
       end
+      
     end
   end
 end</diff>
      <filename>vendor/plugins/rspec/lib/spec/story/step_mother.rb</filename>
    </modified>
    <modified>
      <diff>@@ -17,6 +17,23 @@ module Spec
       def run_in(obj)
         obj.instance_eval(&amp;@body)
       end
+      
+      def assign_steps_to(assignee)
+        if steps=@params[:steps_for]
+          steps = [steps] unless steps.is_a?(Array)
+          steps.each do |step|
+            if step.is_a?(StepGroup)
+              assignee.use(step)
+            else
+              assignee.use(steps_for(step))
+            end
+          end
+        end
+      end
+      
+      def steps_for(key)
+        $rspec_story_steps[key]
+      end
     end
   end
 end</diff>
      <filename>vendor/plugins/rspec/lib/spec/story/story.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,6 @@
-require 'rubygems'
 require 'spec/expectations'
 require 'spec/matchers'
-require 'spec/dsl/supports_pending'
+require 'spec/example/pending'
 
 module Spec
   module Story
@@ -14,7 +13,7 @@ module Spec
   blocks.
 =end
     module World
-      include ::Spec::DSL::SupportsPending
+      include ::Spec::Example::Pending
       include ::Spec::Matchers
       # store steps and listeners in the singleton metaclass.
       # This serves both to keep them out of the way of runtime Worlds
@@ -35,32 +34,70 @@ module Spec
         def step_mother
           @step_mother ||= StepMother.new
         end
+                
+        def use(steps)
+          step_mother.use(steps)
+        end
         
-        # TODO: investigate duplication between #run_with_suspended_listeners and #store_and_call
-        
-        def run_with_suspended_listeners(instance, type, name, step)
-          current_listeners = Array.new(@listeners)
+        def step_names
+          @step_names ||= []
+        end
+
+        def run_given_scenario_with_suspended_listeners(world, type, name, scenario)
+          current_listeners = Array.new(listeners)
           begin
-            listeners.each { |l| l.found_step(type, name) }
+            listeners.each { |l| l.found_scenario(type, name) }
             @listeners.clear
-            step.perform(instance) unless ::Spec::Story::Runner.dry_run
+            scenario.perform(world, name) unless ::Spec::Story::Runner.dry_run
           ensure
             @listeners.replace(current_listeners)
           end
         end
         
-        def store_and_call(instance, type, name, *args, &amp;block)
+        def store_and_call(world, type, name, *args, &amp;block)
           if block_given?
-            step_mother.store(type, name, SimpleStep.new(name, &amp;block))
+            step_mother.store(type, Step.new(name, &amp;block))
           end
           step = step_mother.find(type, name)
-          listeners.each { |l| l.found_step(type, name, *args) }
-          step.perform(instance, *args) unless ::Spec::Story::Runner.dry_run
+
+          step_name = step.name
+          step_names &lt;&lt; step_name
+          
+          # It's important to have access to the parsed args here, so
+          # we can give them to the listeners. The HTML reporter needs
+          # the args so it can style them. See the generated output in
+          # story_server/prototype/rspec_stories.html (generated by rake stories)
+          args = step.parse_args(name) if args.empty?
+          begin
+            listeners.each { |l| l.step_upcoming(type, step_name, *args) }
+            step.perform(world, *args) unless ::Spec::Story::Runner.dry_run
+            listeners.each { |l| l.step_succeeded(type, step_name, *args) }
+          rescue Exception =&gt; e
+            case e
+            when Spec::Example::ExamplePendingError
+              @listeners.each { |l| l.step_pending(type, step_name, *args) }
+            else
+              @listeners.each { |l| l.step_failed(type, step_name, *args) }
+            end
+            errors &lt;&lt; e
+          end
+        end
+        
+        def errors
+          @errors ||= []
         end
+      end # end of class &lt;&lt; self
+      
+      def start_collecting_errors
+        errors.clear
+      end
+      
+      def errors
+        World.errors
       end
       
       def GivenScenario(name)
-        World.run_with_suspended_listeners(self, :'given scenario', name, GivenScenario.new(name))
+        World.run_given_scenario_with_suspended_listeners(self, :'given scenario', name, GivenScenario.new(name))
         @__previous_step = :given
       end
       </diff>
      <filename>vendor/plugins/rspec/lib/spec/story/world.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,23 +1,22 @@
-  module Spec
-  module VERSION
-    unless defined? MAJOR
-      MAJOR  = 1
-      MINOR  = 0
-      TINY   = 9
-      RELEASE_CANDIDATE = nil
-
-      # RANDOM_TOKEN: 0.188978346552575
-      REV = &quot;$LastChangedRevision: 2691 $&quot;.match(/LastChangedRevision: (\d+)/)[1]
-
-      STRING = [MAJOR, MINOR, TINY].join('.')
-      TAG = &quot;REL_#{[MAJOR, MINOR, TINY, RELEASE_CANDIDATE].compact.join('_')}&quot;.upcase.gsub(/\.|-/, '_')
-      FULL_VERSION = &quot;#{[MAJOR, MINOR, TINY, RELEASE_CANDIDATE].compact.join('.')} (r#{REV})&quot;
-
-      NAME   = &quot;RSpec&quot;
-      URL    = &quot;http://rspec.rubyforge.org/&quot;  
-    
-      DESCRIPTION = &quot;#{NAME}-#{FULL_VERSION} - BDD for Ruby\n#{URL}&quot;
-    end
-  end
-end
-
+module Spec
+  module VERSION
+    unless defined? MAJOR
+      MAJOR  = 1
+      MINOR  = 1
+      TINY   = 3
+      RELEASE_CANDIDATE = nil
+
+      BUILD_TIME_UTC = 20080418033155
+
+      STRING = [MAJOR, MINOR, TINY].join('.')
+      TAG = &quot;REL_#{[MAJOR, MINOR, TINY, RELEASE_CANDIDATE].compact.join('_')}&quot;.upcase.gsub(/\.|-/, '_')
+      FULL_VERSION = &quot;#{[MAJOR, MINOR, TINY, RELEASE_CANDIDATE].compact.join('.')} (build #{BUILD_TIME_UTC})&quot;
+
+      NAME   = &quot;RSpec&quot;
+      URL    = &quot;http://rspec.rubyforge.org/&quot;  
+    
+      DESCRIPTION = &quot;#{NAME}-#{FULL_VERSION} - BDD for Ruby\n#{URL}&quot;
+    end
+  end
+end
+</diff>
      <filename>vendor/plugins/rspec/lib/spec/version.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,7 +3,7 @@ require File.expand_path(File.join(File.dirname(__FILE__), &quot;..&quot;, &quot;..&quot;, &quot;lib&quot;, &quot;s
 module Spec
   module Plugins
     module MockFramework
-      include Spec::Mocks::SpecMethods
+      include Spec::Mocks::ExampleMethods
       def setup_mocks_for_rspec
         $rspec_mocks ||= Spec::Mocks::Space.new
       end</diff>
      <filename>vendor/plugins/rspec/plugins/mock_frameworks/rspec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,6 +7,7 @@ ant
 # put JRuby's bin dir on your PATH
 jruby -S gem install rake --no-ri --no-rdoc
 jruby -S gem install diff-lcs
+jruby -S gem install syntax
 cd ../testsuites/rspec
 mkdir target
 jruby -S rake checkout_code</diff>
      <filename>vendor/plugins/rspec/spec/README.jruby</filename>
    </modified>
    <modified>
      <diff>@@ -39,23 +39,27 @@ HERE
 
   describe Rspec, &quot;rspec_commands&quot; do
     it &quot;should contain the various commands, ordered by preference&quot; do
-      Rspec.new.spec_commands.should == [&quot;bin/spec&quot;, &quot;#{Config::CONFIG['bindir']}/spec&quot;]
+      Rspec.new.spec_commands.should == [
+        File.expand_path(&quot;#{File.dirname(__FILE__)}/../../bin/spec&quot;),
+        &quot;#{Config::CONFIG['bindir']}/spec&quot;
+      ]
     end
   end
   
   describe Rspec, &quot;selection of rspec command&quot; do
     include AutotestHelper
     
-    before :each do
+    before(:each) do
       common_setup
-      @rspec_autotest = Rspec.new(@kernel)
+      @rspec_autotest = Rspec.new
     end
     
     it &quot;should try to find the spec command if it exists in ./bin and use it above everything else&quot; do
       File.stub!(:exists?).and_return true
 
-      File.should_receive(:exists?).with(&quot;bin/spec&quot;).and_return true
-      @rspec_autotest.spec_command.should == &quot;bin/spec&quot;
+      spec_path = File.expand_path(&quot;#{File.dirname(__FILE__)}/../../bin/spec&quot;)
+      File.should_receive(:exists?).with(spec_path).and_return true
+      @rspec_autotest.spec_command.should == spec_path
     end
 
     it &quot;should otherwise select the default spec command in gem_dir/bin/spec&quot; do
@@ -79,26 +83,28 @@ HERE
   describe Rspec, &quot;selection of rspec command (windows compatibility issues)&quot; do
     include AutotestHelper
     
-    before :each do
+    before(:each) do
       common_setup
     end
     
     it &quot;should use the ALT_SEPARATOR if it is non-nil&quot; do
-      @rspec_autotest = Rspec.new(@kernel, @posix_separator, @windows_alt_separator)
-      @rspec_autotest.stub!(:spec_commands).and_return [File.join('bin', 'spec')]
-      @rspec_autotest.spec_command.should == &quot;bin\\spec&quot;
+      @rspec_autotest = Rspec.new
+      spec_command = File.expand_path(&quot;#{File.dirname(__FILE__)}/../../bin/spec&quot;)
+      @rspec_autotest.stub!(:spec_commands).and_return [spec_command]
+      @rspec_autotest.spec_command(@windows_alt_separator).should == spec_command.gsub('/', @windows_alt_separator)
     end
     
     it &quot;should not use the ALT_SEPATOR if it is nil&quot; do
       @windows_alt_separator = nil
-      @rspec_autotest = Rspec.new(@kernel, @posix_separator, @windows_alt_separator)
-      @rspec_autotest.stub!(:spec_commands).and_return [File.join('bin', 'spec')]
-      @rspec_autotest.spec_command.should == &quot;bin/spec&quot;
+      @rspec_autotest = Rspec.new
+      spec_command = File.expand_path(&quot;#{File.dirname(__FILE__)}/../../bin/spec&quot;)
+      @rspec_autotest.stub!(:spec_commands).and_return [spec_command]
+      @rspec_autotest.spec_command.should == spec_command
     end
   end
 
   describe Rspec, &quot;adding spec.opts --options&quot; do 
-    before :each do
+    before(:each) do
       @rspec_autotest = Rspec.new
     end
 
@@ -114,7 +120,7 @@ HERE
   end  
   
   describe Rspec do
-    before :each do
+    before(:each) do
       @rspec_autotest = Rspec.new
       @rspec_autotest.stub!(:ruby).and_return &quot;ruby&quot;
       @rspec_autotest.stub!(:add_options_if_present).and_return &quot;-O spec/spec.opts&quot;
@@ -136,122 +142,55 @@ HERE
     end
   end
   
-  describe Rspec, &quot;test mappings&quot; do
-    before :each do
-      @proc = mock Proc
-      @kernel = mock Kernel
-      @kernel.stub!(:proc).and_return @proc
-      @rspec_autotest = Rspec.new(@kernel)
-    end
-      
-    it &quot;should map all filenames in spec/ which end in .rb&quot; do
-      @rspec_autotest.test_mappings[%r%^spec/.*\.rb$%].should == @proc
-    end
-    
-    it &quot;should map all names in lib which end in .rb to the corresponding ones in spec/&quot; do
-      @rspec_autotest.test_mappings[%r%^lib/(.*)\.rb$%].should == @proc
-    end
-    
-    it &quot;should find all files in spec/shares/* and the spec helper in spec/spec_helper&quot;  do
-      @rspec_autotest.test_mappings[%r%^spec/(spec_helper|shared/.*)\.rb$%].should == @proc
-    end
-  end
-  
-  describe Rspec, &quot;handling results&quot; do
-    include AutotestHelper
-    
-    before :each do
-      common_setup
-      @rspec_autotest = Rspec.new(@kernel, @posix_separator, @windows_alt_separator)
-      @rspec_autotest.stub!(:hook)
-      
-      @results = mock String
-      @results.stub!(:scan).and_return &quot;&quot;
-    end
-    
-    it &quot;should call hook(:red) if there are failures&quot; do
-      @rspec_autotest.stub!(:consolidate_failures).and_return [&quot;spec/some_spec.rb&quot;]
-      
-      @rspec_autotest.should_receive(:hook).with(:red)
-      @rspec_autotest.handle_results(@results)
-    end
-    
-    it &quot;should call hook(:green) if there are no failures&quot; do
-      @rspec_autotest.stub!(:consolidate_failures).and_return []
-      @rspec_autotest.should_receive(:hook).with(:green)
-      @rspec_autotest.handle_results(@results)
-    end
-  end
-  
-  describe Rspec, &quot;handling failed results&quot; do
-    include AutotestHelper
+  describe Rspec, &quot;mappings&quot; do
     
-    before :each do
-      common_setup
-    end
-    
-    it %(should scan the output into a multi-dimensional array, 
-        consisting of the failing spec's name as the first element, 
-        and the failure as the second) do
-      @rspec_autotest = Rspec.new
-      @rspec_autotest.failed_results(@rspec_output).should == [
-        [
-          &quot;false should be false&quot;, 
-          &quot;expected: true,\n     got: false (using ==)\n./spec/autotest/rspec_spec.rb:203:&quot;
-        ]
-      ]
-    end
-  end
-  
-  describe Rspec, &quot;specs for a given file&quot; do
-    before :each do
+    before(:each) do
       @lib_file = &quot;lib/something.rb&quot;
       @spec_file = &quot;spec/something_spec.rb&quot;
       @rspec_autotest = Rspec.new
-
-      @rspec_autotest.instance_variable_set(&quot;@files&quot;, {@lib_file =&gt; Time.now, @spec_file =&gt; Time.now})
-      @rspec_autotest.stub!(:find_files_to_test).and_return true
+      @rspec_autotest.hook :initialize
     end
     
     it &quot;should find the spec file for a given lib file&quot; do
-      @rspec_autotest.specs_for_file(@lib_file).should == [@spec_file]
+      @rspec_autotest.should map_specs([@spec_file]).to(@lib_file)
     end
     
     it &quot;should find the spec file if given a spec file&quot; do
-      @rspec_autotest.specs_for_file(@spec_file).should == [@spec_file]
+      @rspec_autotest.should map_specs([@spec_file]).to(@spec_file)
     end
     
     it &quot;should only find the file if the file is being tracked (in @file)&quot;  do
-      @other_file = &quot;lib/some_non_tracked_file&quot;
-      @rspec_autotest.specs_for_file(@other_file).should == []
+      @rspec_autotest.should map_specs([]).to(&quot;lib/untracked_file&quot;)
     end
   end
   
   describe Rspec, &quot;consolidating failures&quot; do
     include AutotestHelper
     
-    before :each do
+    before(:each) do
       common_setup
       @rspec_autotest = Rspec.new
       
-      @spec_file = &quot;./spec/autotest/rspec_spec.rb&quot;
+      @spec_file = &quot;spec/autotest/rspec_spec.rb&quot;
       @rspec_autotest.instance_variable_set(&quot;@files&quot;, {@spec_file =&gt; Time.now})
       @rspec_autotest.stub!(:find_files_to_test).and_return true
     end
     
     it &quot;should return no failures if no failures were given in the output&quot; do
-      @rspec_autotest.stub!(:failed_results).and_return [[]]
-      @rspec_autotest.consolidate_failures(@rspec_autotest.failed_results).should == {}
+      @rspec_autotest.consolidate_failures([[]]).should == {}
     end
     
     it &quot;should return a hash with the spec filename =&gt; spec name for each failure or error&quot; do
-      @rspec_autotest.stub!(:failed_results).and_return([
+      @rspec_autotest.stub!(:test_files_for).and_return &quot;spec/autotest/rspec_spec.rb&quot;
+      failures = [
         [
           &quot;false should be false&quot;, 
-          &quot;expected: true,\n     got: false (using ==)\n./spec/autotest/rspec_spec.rb:203:&quot;
+          &quot;expected: true,\n     got: false (using ==)\n#{@spec_file}:203:&quot;
         ]
-      ])
-      @rspec_autotest.consolidate_failures(@rspec_autotest.failed_results).should == {@spec_file =&gt; [&quot;false should be false&quot;]}
+      ]
+      @rspec_autotest.consolidate_failures(failures).should == {
+        @spec_file =&gt; [&quot;false should be false&quot;]
+      }
     end
     
   end</diff>
      <filename>vendor/plugins/rspec/spec/autotest/rspec_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,6 @@
+require &quot;rubygems&quot;
 require 'autotest'
-require File.dirname(__FILE__) + &quot;/../lib/autotest/rspec&quot;
-
-
+dir = File.dirname(__FILE__)
+require &quot;#{dir}/spec_helper&quot;
+require File.expand_path(&quot;#{dir}/../lib/autotest/rspec&quot;)
+require &quot;#{dir}/autotest_matchers&quot;</diff>
      <filename>vendor/plugins/rspec/spec/autotest_helper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,7 @@
-dir = File.dirname(__FILE__)
-Dir[&quot;#{dir}/**/*_spec.rb&quot;].each do |file|
-  require file
+if __FILE__ == $0
+  dir = File.dirname(__FILE__)
+  Dir[&quot;#{dir}/**/*_spec.rb&quot;].reverse.each do |file|
+#    puts &quot;require '#{file}'&quot;
+    require file
+  end
 end</diff>
      <filename>vendor/plugins/rspec/spec/rspec_suite.rb</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,25 @@ describe &quot;Diff&quot; do
   it &quot;should output unified diff of two strings&quot; do
     expected=&quot;foo\nbar\nzap\nthis\nis\nsoo\nvery\nvery\nequal\ninsert\na\nline\n&quot;
     actual=&quot;foo\nzap\nbar\nthis\nis\nsoo\nvery\nvery\nequal\ninsert\na\nanother\nline\n&quot;
-    expected_diff=&quot;\n\n@@ -1,6 +1,6 @@\n foo\n-bar\n zap\n+bar\n this\n is\n soo\n@@ -9,5 +9,6 @@\n equal\n insert\n a\n+another\n line\n&quot;
+    expected_diff= &lt;&lt;'EOD'
+
+
+@@ -1,6 +1,6 @@
+ foo
+-zap
+ bar
++zap
+ this
+ is
+ soo
+@@ -9,6 +9,5 @@
+ equal
+ insert
+ a
+-another
+ line
+EOD
+
     diff = @differ.diff_as_string(expected, actual)
     diff.should eql(expected_diff)
   end
@@ -44,11 +62,11 @@ describe &quot;Diff&quot; do
   :metasyntactic,
   &quot;variable&quot;,
   :delta,
-- &quot;charlie&quot;,
-+ &quot;tango&quot;,
+- &quot;tango&quot;,
++ &quot;charlie&quot;,
   :width,
-- &quot;quite wide&quot;]
-+ &quot;very wide&quot;]
+- &quot;very wide&quot;]
++ &quot;quite wide&quot;]
 EOD
 
 
@@ -65,8 +83,8 @@ EOD
 @@ -1,5 +1,5 @@
  &lt;Animal
    name=bob,
--  species=giraffe
-+  species=tortoise
+-  species=tortoise
++  species=giraffe
  &gt;
 EOD
 
@@ -94,12 +112,12 @@ describe &quot;Diff in context format&quot; do
 *** 1,5 ****
   &lt;Animal
     name=bob,
-!   species=giraffe
+!   species=tortoise
   &gt;
 --- 1,5 ----
   &lt;Animal
     name=bob,
-!   species=tortoise
+!   species=giraffe
   &gt;
 EOD
 </diff>
      <filename>vendor/plugins/rspec/spec/spec/expectations/differs/default_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,33 +1,76 @@
 require File.dirname(__FILE__) + '/../../spec_helper.rb'
 
-class MainObjectImposter
-  include Spec::Extensions::Main
-end
-
-describe &quot;The main object extended by MainExtensions&quot; do
-  before(:each) do
-    @main = MainObjectImposter.new
-    @original_rspec_options = $rspec_options
-    $rspec_options = nil
-  end
+module Spec
+  module Extensions
+    describe Main do
+      it_should_behave_like &quot;sandboxed rspec_options&quot;
+      before(:each) do
+        @main = Class.new do; include Main; end
+      end
 
-  after do
-    $rspec_options = @original_rspec_options
-  end
+      after(:each) do
+        $rspec_story_steps = @original_rspec_story_steps
+      end
 
-  it &quot;should create an Options object&quot; do
-    @main.send(:rspec_options).should be_instance_of(Spec::Runner::Options)
-    @main.send(:rspec_options).should === $rspec_options
-  end
+      it &quot;should create an Options object&quot; do
+        @main.send(:rspec_options).should be_instance_of(Spec::Runner::Options)
+        @main.send(:rspec_options).should === $rspec_options
+      end
   
-  specify {@main.should respond_to(:describe)}
-  specify {@main.should respond_to(:context)}
+      specify {@main.should respond_to(:describe)}
+      specify {@main.should respond_to(:context)}
 
-  it &quot;should raise when no block given to describe&quot; do
-    lambda { @main.describe &quot;foo&quot; }.should raise_error(ArgumentError)
-  end
+      it &quot;should raise when no block given to describe&quot; do
+        lambda { @main.describe &quot;foo&quot; }.should raise_error(ArgumentError)
+      end
+
+      it &quot;should raise when no description given to describe&quot; do
+        lambda { @main.describe do; end }.should raise_error(ArgumentError)
+      end
+
+      it &quot;should registered ExampleGroups by default&quot; do
+        example_group = @main.describe(&quot;The ExampleGroup&quot;) do end
+        rspec_options.example_groups.should include(example_group)
+      end
+
+      it &quot;should not run unregistered ExampleGroups&quot; do
+        example_group = @main.describe(&quot;The ExampleGroup&quot;) do
+          unregister
+        end
+
+        rspec_options.example_groups.should_not include(example_group)
+      end
+      
+      it &quot;should create a shared ExampleGroup with share_examples_for&quot; do
+        group = @main.share_examples_for &quot;all things&quot; do end
+        group.should be_an_instance_of(Spec::Example::SharedExampleGroup)
+      end
+      
+      describe &quot;#share_as&quot; do
+        before(:each) do
+          $share_as_examples_example_module_number ||= 1
+          $share_as_examples_example_module_number += 1
+          t = Time.new.to_i
+          @group_name = &quot;Group#{$share_as_examples_example_module_number}&quot;
+        end
 
-  it &quot;should raise when no description given to describe&quot; do
-    lambda { @main.describe do; end }.should raise_error(ArgumentError)
+        it &quot;should create a shared ExampleGroup&quot; do
+          group = @main.share_as @group_name do end
+          group.should be_an_instance_of(Spec::Example::SharedExampleGroup)
+        end
+        
+        it &quot;should create a constant that points to a Module&quot; do
+          group = @main.share_as @group_name do end
+          Object.const_get(@group_name).should equal(group)
+        end
+        
+        it &quot;should bark if you pass it something not-constantizable&quot; do
+          lambda do
+            @group = @main.share_as &quot;Non Constant&quot; do end
+          end.should raise_error(NameError, /The first argument to share_as must be a legal name for a constant/)
+        end
+        
+      end
+    end
   end
 end
\ No newline at end of file</diff>
      <filename>vendor/plugins/rspec/spec/spec/extensions/main_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -199,6 +199,21 @@ describe &quot;should be ===&quot; do
   end
 end
 
+describe &quot;should be&quot; do
+  it &quot;should pass if actual is true or a set value&quot; do
+    true.should be
+    1.should be
+  end
+
+  it &quot;should fail if actual is false&quot; do
+    lambda {false.should be}.should fail_with(&quot;expected if to be satisfied, got false&quot;)
+  end
+
+  it &quot;should fail if actual is nil&quot; do
+    lambda {nil.should be}.should fail_with(&quot;expected if to be satisfied, got nil&quot;)
+  end
+end
+
 describe &quot;should be(value)&quot; do
   it &quot;should pass if actual.equal?(value)&quot; do
     5.should be(5)
@@ -207,3 +222,27 @@ describe &quot;should be(value)&quot; do
     lambda { 5.should be(6) }.should fail_with(&quot;expected 6, got 5&quot;)
   end
 end
+
+
+describe &quot;arbitrary predicate with DelegateClass&quot; do
+  it &quot;should access methods defined in the delegating class (LH[#48])&quot; do
+    pending(%{
+      Looks like DelegateClass is delegating #should to the
+      delegate. Not sure how to fix this one. Or if we even should.&quot;
+    })
+    require 'delegate'
+    class ArrayDelegate &lt; DelegateClass(Array)
+      def initialize(array)
+        @internal_array = array
+        super(@internal_array)
+      end
+
+      def large?
+        @internal_array.size &gt;= 5
+      end
+    end
+
+    delegate = ArrayDelegate.new([1,2,3,4,5,6])
+    delegate.should be_large
+  end
+end</diff>
      <filename>vendor/plugins/rspec/spec/spec/matchers/be_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -133,6 +133,93 @@ describe &quot;should change{ block }.by(expected)&quot; do
   end
 end
 
+describe &quot;should change(actual, message).by_at_least(expected)&quot; do
+  before(:each) do
+    @instance = SomethingExpected.new
+    @instance.some_value = 5
+  end
+
+  it &quot;should pass when attribute is changed by greater than the expected amount&quot; do
+    lambda { @instance.some_value += 2 }.should change(@instance, :some_value).by_at_least(1)
+  end
+  
+  it &quot;should pass when attribute is changed by the expected amount&quot; do
+    lambda { @instance.some_value += 2 }.should change(@instance, :some_value).by_at_least(2)
+  end  
+
+  it &quot;should fail when the attribute is changed by less than the expected amount&quot; do
+    lambda do
+      lambda { @instance.some_value += 1 }.should change(@instance, :some_value).by_at_least(2)
+    end.should fail_with(&quot;some_value should have been changed by at least 2, but was changed by 1&quot;)
+  end
+
+end
+
+describe &quot;should change{ block }.by_at_least(expected)&quot; do
+  before(:each) do
+    @instance = SomethingExpected.new
+    @instance.some_value = 5
+  end
+
+  it &quot;should pass when attribute is changed by greater than expected amount&quot; do
+    lambda { @instance.some_value += 2 }.should change{@instance.some_value}.by_at_least(1)
+  end
+  
+  it &quot;should pass when attribute is changed by the expected amount&quot; do
+    lambda { @instance.some_value += 2 }.should change{@instance.some_value}.by_at_least(2)
+  end  
+
+  it &quot;should fail when the attribute is changed by less than the unexpected amount&quot; do
+    lambda do
+      lambda { @instance.some_value += 1 }.should change{@instance.some_value}.by_at_least(2)
+    end.should fail_with(&quot;result should have been changed by at least 2, but was changed by 1&quot;)
+  end
+end
+
+
+describe &quot;should change(actual, message).by_at_most(expected)&quot; do
+  before(:each) do
+    @instance = SomethingExpected.new
+    @instance.some_value = 5
+  end
+
+  it &quot;should pass when attribute is changed by less than the expected amount&quot; do
+    lambda { @instance.some_value += 2 }.should change(@instance, :some_value).by_at_most(3)
+  end
+  
+  it &quot;should pass when attribute is changed by the expected amount&quot; do
+    lambda { @instance.some_value += 2 }.should change(@instance, :some_value).by_at_most(2)
+  end  
+
+  it &quot;should fail when the attribute is changed by greater than the expected amount&quot; do
+    lambda do
+      lambda { @instance.some_value += 2 }.should change(@instance, :some_value).by_at_most(1)
+    end.should fail_with(&quot;some_value should have been changed by at most 1, but was changed by 2&quot;)
+  end
+
+end
+
+describe &quot;should change{ block }.by_at_most(expected)&quot; do
+  before(:each) do
+    @instance = SomethingExpected.new
+    @instance.some_value = 5
+  end
+
+  it &quot;should pass when attribute is changed by less than expected amount&quot; do
+    lambda { @instance.some_value += 2 }.should change{@instance.some_value}.by_at_most(3)
+  end
+  
+  it &quot;should pass when attribute is changed by the expected amount&quot; do
+    lambda { @instance.some_value += 2 }.should change{@instance.some_value}.by_at_most(2)
+  end  
+
+  it &quot;should fail when the attribute is changed by greater than the unexpected amount&quot; do
+    lambda do
+      lambda { @instance.some_value += 2 }.should change{@instance.some_value}.by_at_most(1)
+    end.should fail_with(&quot;result should have been changed by at most 1, but was changed by 2&quot;)
+  end
+end
+
 describe &quot;should change(actual, message).from(old)&quot; do
   before(:each) do
     @instance = SomethingExpected.new</diff>
      <filename>vendor/plugins/rspec/spec/spec/matchers/change_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,14 +1,10 @@
 require File.dirname(__FILE__) + '/../../spec_helper.rb'
 
 describe &quot;Matchers should be able to generate their own descriptions&quot; do
-  before(:each) do
-    Spec::Matchers.clear_generated_description
-  end
-
   after(:each) do
     Spec::Matchers.clear_generated_description
   end
-  
+
   it &quot;should == expected&quot; do
     &quot;this&quot;.should == &quot;this&quot;
     Spec::Matchers.generated_description.should == &quot;should == \&quot;this\&quot;&quot;</diff>
      <filename>vendor/plugins/rspec/spec/spec/matchers/description_generation_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,27 +1,5 @@
 require File.dirname(__FILE__) + '/../../spec_helper.rb'
 
-# NOTE - this was initially handled by an explicit matcher, but is now
-# handled by a default set of predicate_matchers.
-
-# module Spec
-#   module Matchers
-#     class Exist
-#       def matches? actual
-#         @actual = actual
-#         @actual.exist?
-#       end
-#       def failure_message
-#         &quot;expected #{@actual.inspect} to exist, but it doesn't.&quot;
-#       end
-#       def negative_failure_message
-#         &quot;expected #{@actual.inspect} to not exist, but it does.&quot;
-#       end
-#     end
-#     def exist; Exist.new; end
-#   end
-# end
-
-
 class Substance
   def initialize exists, description
     @exists = exists
@@ -45,31 +23,35 @@ class SubstanceTester
   end
 end
 
-describe &quot;should exist&quot; do
+describe &quot;should exist,&quot; do
+  
   before(:each) do
     @real = Substance.new true, 'something real'
     @imaginary = Substance.new false, 'something imaginary'
   end
+
+  describe &quot;within an example group&quot; do
   
-  it &quot;should pass if target exists&quot; do
-    @real.should exist
-  end
+    it &quot;should pass if target exists&quot; do
+      @real.should exist
+    end
   
-  it &quot;should fail if target does not exist&quot; do
-    lambda { @imaginary.should exist }.
-      should fail
+    it &quot;should fail if target does not exist&quot; do
+      lambda { @imaginary.should exist }.should fail
+    end
+    
+    it &quot;should pass if target doesn't exist&quot; do
+      lambda { @real.should_not exist }.should fail
+    end
   end
-end
 
-describe &quot;should exist, outside of a behavior&quot; do
-  before(:each) do
-    @real = Substance.new true, 'something real'
-    @imaginary = Substance.new false, 'something imaginary'
-  end
-  it &quot;should pass if target exists&quot; do
-    pending(&quot;need to either find a way to include stock predicate matchers in Spec::Matchers or add Bret's Exist matcher&quot;) do
+  describe &quot;outside of an example group&quot; do
+
+    it &quot;should pass if target exists&quot; do
       real_tester = SubstanceTester.new @real
       real_tester.should_exist
     end
+
   end
+
 end</diff>
      <filename>vendor/plugins/rspec/spec/spec/matchers/exist_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -16,6 +16,14 @@ describe &quot;should have_sym(*args)&quot; do
       Object.new.should have_key(:a)
     }.should raise_error(NoMethodError)
   end
+  
+  it &quot;should reraise an exception thrown in #has_sym?(*args)&quot; do
+    o = Object.new
+    def o.has_sym?(*args)
+      raise &quot;Funky exception&quot;
+    end
+    lambda { o.should have_sym(:foo) }.should raise_error(&quot;Funky exception&quot;)
+  end
 end
 
 describe &quot;should_not have_sym(*args)&quot; do
@@ -34,4 +42,12 @@ describe &quot;should_not have_sym(*args)&quot; do
       Object.new.should have_key(:a)
     }.should raise_error(NoMethodError)
   end
+  
+  it &quot;should reraise an exception thrown in #has_sym?(*args)&quot; do
+    o = Object.new
+    def o.has_sym?(*args)
+      raise &quot;Funky exception&quot;
+    end
+    lambda { o.should_not have_sym(:foo) }.should raise_error(&quot;Funky exception&quot;)
+  end
 end</diff>
      <filename>vendor/plugins/rspec/spec/spec/matchers/has_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -47,6 +47,25 @@ describe &quot;should have(n).items&quot; do
   end
 end
 
+describe 'should have(1).item when Inflector is defined' do
+  include HaveSpecHelper
+  
+  before do
+    unless Object.const_defined?(:Inflector)
+      class Inflector
+        def self.pluralize(string)
+          string.to_s + 's'
+        end
+      end
+    end
+  end
+  
+  it 'should pluralize the collection name' do
+    owner = create_collection_owner_with(1)
+    owner.should have(1).item
+  end
+end
+
 describe &quot;should have(n).items where result responds to items but returns something other than a collection&quot; do
   it &quot;should provide a meaningful error&quot; do
     owner = Class.new do
@@ -250,7 +269,7 @@ describe &quot;have(n).items where target IS a collection&quot; do
     [1,2,3].should have(3).items
   end
 
-  it &quot;should reference the number of items IN the collection&quot; do
+  it &quot;should fail when the number of items IN the collection is not as expected&quot; do
     lambda { [1,2,3].should have(7).items }.should fail_with(&quot;expected 7 items, got 3&quot;)
   end
 end</diff>
      <filename>vendor/plugins/rspec/spec/spec/matchers/have_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,12 +5,12 @@ describe &quot;should match(expected)&quot; do
     &quot;string&quot;.should match(/tri/)
   end
 
-  it &quot;should fail when target (String) matches expected (Regexp)&quot; do
+  it &quot;should fail when target (String) does not match expected (Regexp)&quot; do
     lambda {
       &quot;string&quot;.should match(/rings/)
     }.should fail
   end
-
+  
   it &quot;should provide message, expected and actual on failure&quot; do
     matcher = match(/rings/)
     matcher.matches?(&quot;string&quot;)
@@ -19,7 +19,7 @@ describe &quot;should match(expected)&quot; do
 end
 
 describe &quot;should_not match(expected)&quot; do
-  it &quot;should pass when target (String) matches expected (Regexp)&quot; do
+  it &quot;should pass when target (String) matches does not match (Regexp)&quot; do
     &quot;string&quot;.should_not match(/rings/)
   end
 </diff>
      <filename>vendor/plugins/rspec/spec/spec/matchers/match_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -19,6 +19,6 @@ describe &quot;The boolean() mock argument constraint matcher&quot; do
 end
 
 describe &quot;The an_instance_of() mock argument constraint matcher&quot; do
-  # NOTE - this is implemented as a predicate_matcher - see behaviour.rb
+  # NOTE - this is implemented as a predicate_matcher - see example_group_methods.rb
   specify { an_instance_of(String).should == &quot;string&quot;  }
 end</diff>
      <filename>vendor/plugins/rspec/spec/spec/matchers/mock_constraint_matchers_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -28,6 +28,9 @@ describe &quot;should raise_error(message)&quot; do
   it &quot;should pass if RuntimeError is raised with the right message&quot; do
     lambda {raise 'blah'}.should raise_error('blah')
   end
+  it &quot;should pass if RuntimeError is raised with a matching message&quot; do
+    lambda {raise 'blah'}.should raise_error(/blah/)
+  end
   it &quot;should pass if any other error is raised with the right message&quot; do
     lambda {raise NameError.new('blah')}.should raise_error('blah')
   end
@@ -73,11 +76,17 @@ describe &quot;should raise_error(NamedError)&quot; do
     }.should fail_with(&quot;expected NameError but nothing was raised&quot;)
   end
   
-  it &quot;should fail if another error is raised&quot; do
+  it &quot;should fail if another error is raised (NameError)&quot; do
     lambda {
       lambda { raise }.should raise_error(NameError)
     }.should fail_with(&quot;expected NameError, got RuntimeError&quot;)
   end
+  
+  it &quot;should fail if another error is raised (NameError)&quot; do
+    lambda {
+      lambda { load &quot;non/existent/file&quot; }.should raise_error(NameError)
+    }.should fail_with(/expected NameError, got #&lt;LoadError/)
+  end
 end
 
 describe &quot;should_not raise_error(NamedError)&quot; do
@@ -120,6 +129,127 @@ describe &quot;should raise_error(NamedError, error_message) with String&quot; do
   end
 end
 
+describe &quot;should raise_error(NamedError, error_message) { |err| ... }&quot; do
+  it &quot;should yield exception if named error is raised with same message&quot; do
+    ran = false
+
+    lambda {
+      raise &quot;example message&quot;
+    }.should raise_error(RuntimeError, &quot;example message&quot;) { |err|
+      ran = true
+      err.class.should == RuntimeError
+      err.message.should == &quot;example message&quot;
+    }
+
+    ran.should == true
+  end
+
+  it &quot;yielded block should be able to fail on it's own right&quot; do
+    ran, passed = false, false
+
+    lambda {
+      lambda {
+        raise &quot;example message&quot;
+      }.should raise_error(RuntimeError, &quot;example message&quot;) { |err|
+        ran = true
+        5.should == 4
+        passed = true
+      }
+    }.should fail_with(/expected: 4/m)
+
+    ran.should == true
+    passed.should == false
+  end
+
+  it &quot;should NOT yield exception if no error was thrown&quot; do
+    ran = false
+
+    lambda {
+      lambda {}.should raise_error(RuntimeError, &quot;example message&quot;) { |err|
+        ran = true
+      }
+    }.should fail_with(&quot;expected RuntimeError with \&quot;example message\&quot; but nothing was raised&quot;)
+
+    ran.should == false
+  end
+
+  it &quot;should not yield exception if error class is not matched&quot; do
+    ran = false
+
+    lambda {
+      lambda {
+        raise &quot;example message&quot;
+      }.should raise_error(SyntaxError, &quot;example message&quot;) { |err|
+        ran = true
+      }
+    }.should fail_with(&quot;expected SyntaxError with \&quot;example message\&quot;, got #&lt;RuntimeError: example message&gt;&quot;)
+
+    ran.should == false
+  end
+
+  it &quot;should NOT yield exception if error message is not matched&quot; do
+    ran = false
+
+    lambda {
+      lambda {
+        raise &quot;example message&quot;
+      }.should raise_error(RuntimeError, &quot;different message&quot;) { |err|
+        ran = true
+      }
+    }.should fail_with(&quot;expected RuntimeError with \&quot;different message\&quot;, got #&lt;RuntimeError: example message&gt;&quot;)
+
+    ran.should == false
+  end
+end
+
+describe &quot;should_not raise_error(NamedError, error_message) { |err| ... }&quot; do
+  it &quot;should pass if nothing is raised&quot; do
+    ran = false
+
+    lambda {}.should_not raise_error(RuntimeError, &quot;example message&quot;) { |err|
+      ran = true
+    }
+
+    ran.should == false
+  end
+
+  it &quot;should pass if a different error is raised&quot; do
+    ran = false
+
+    lambda { raise }.should_not raise_error(NameError, &quot;example message&quot;) { |err|
+      ran = true
+    }
+
+    ran.should == false
+  end
+
+  it &quot;should pass if same error is raised with different message&quot; do
+    ran = false
+
+    lambda {
+      raise RuntimeError.new(&quot;not the example message&quot;)
+    }.should_not raise_error(RuntimeError, &quot;example message&quot;) { |err|
+      ran = true
+    }
+
+    ran.should == false
+  end
+
+  it &quot;should fail if named error is raised with same message&quot; do
+    ran = false
+
+    lambda {
+      lambda {
+        raise &quot;example message&quot;
+      }.should_not raise_error(RuntimeError, &quot;example message&quot;) { |err|
+        ran = true
+      }
+    }.should fail_with(&quot;expected no RuntimeError with \&quot;example message\&quot;, got #&lt;RuntimeError: example message&gt;&quot;)
+
+    ran.should == false
+  end
+end
+
 describe &quot;should_not raise_error(NamedError, error_message) with String&quot; do
   it &quot;should pass if nothing is raised&quot; do
     lambda {}.should_not raise_error(RuntimeError, &quot;example message&quot;)</diff>
      <filename>vendor/plugins/rspec/spec/spec/matchers/raise_error_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -21,6 +21,11 @@ module Spec
         matcher.matches?(&quot;other&quot;)
         matcher.negative_failure_message.should =~ /expected not to get \&quot;thing\&quot;, but got \&quot;other\&quot;/
       end
+      
+      it &quot;should provide a description&quot; do
+        matcher = simple_matcher(&quot;thing&quot;) do end
+        matcher.description.should ==&quot;thing&quot;
+      end
     end
   end
 end
\ No newline at end of file</diff>
      <filename>vendor/plugins/rspec/spec/spec/matchers/simple_matcher_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,8 @@
 require File.dirname(__FILE__) + '/../../spec_helper.rb'
 
 class LiarLiarPantsOnFire
+  include Spec::MetaClass
+  extend Spec::MetaClass
   def respond_to?(sym)
     true
   end</diff>
      <filename>vendor/plugins/rspec/spec/spec/mocks/bug_report_11545_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -12,7 +12,7 @@ describe &quot;An object where respond_to? is true and does not have method&quot; do
   # The fix was to keep track of whether :respond_to? had been proxied and, if
   # so, call the munged copy of :respond_to? on the object.
 
-  it &quot;should not raise an exception&quot; do
+  it &quot;should not raise an exception for Object&quot; do
     obj = Object.new
     obj.should_receive(:respond_to?).with(:foobar).and_return(true)
     obj.should_receive(:foobar).and_return(:baz)
@@ -20,7 +20,7 @@ describe &quot;An object where respond_to? is true and does not have method&quot; do
     obj.foobar.should == :baz
   end
 
-  it &quot;should not raise an exception&quot; do
+  it &quot;should not raise an exception for mock&quot; do
     obj = mock(&quot;obj&quot;)
     obj.should_receive(:respond_to?).with(:foobar).and_return(true)
     obj.should_receive(:foobar).and_return(:baz)</diff>
      <filename>vendor/plugins/rspec/spec/spec/mocks/bug_report_8165_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -75,6 +75,14 @@ module Spec
           @mock.msg(37)
         end.should raise_error(MockExpectationError, &quot;Mock 'test mock' expected :msg with (no args) but received it with (37)&quot;)
       end
+      
+      it &quot;should fail hash_including with missing key&quot; do
+         lambda do
+           @mock.should_receive(:msg).with(hash_including(:a =&gt; 1))
+           @mock.msg({})
+         end.should raise_error(MockExpectationError, &quot;Mock 'test mock' expected :msg with (hash_including(:a=&gt;1)) but received it with ({})&quot;)
+      end
+            
     end
       
     describe &quot;failing deprecated MockArgumentConstraints&quot; do</diff>
      <filename>vendor/plugins/rspec/spec/spec/mocks/failing_mock_argument_constraints_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/../../spec_helper'
 
 module Spec
   module Mocks
-    describe &quot;a Mock expectation&quot; do
+    describe Mock do
 
       before(:each) do
         @mock = mock(&quot;test mock&quot;)
@@ -18,7 +18,8 @@ module Spec
           @mock.rspec_verify
           violated
         rescue MockExpectationError =&gt; e
-          e.backtrace[0].should match(/#{File.basename(__FILE__)}:#{expected_error_line}$/)
+          # NOTE - this regexp ended w/ $, but jruby adds extra info at the end of the line
+          e.backtrace[0].should match(/#{File.basename(__FILE__)}:#{expected_error_line}/)
         end
       end
       
@@ -36,18 +37,16 @@ module Spec
       
       it &quot;should fail when receiving message specified as not to be received&quot; do
         @mock.should_not_receive(:not_expected)
-        @mock.not_expected
         lambda {
-          @mock.rspec_verify
+          @mock.not_expected
           violated
-        }.should raise_error(MockExpectationError, &quot;Mock 'test mock' expected :not_expected with (any args) 0 times, but received it once&quot;)
+        }.should raise_error(MockExpectationError, &quot;Mock 'test mock' expected :not_expected with (no args) 0 times, but received it once&quot;)
       end
       
       it &quot;should fail when receiving message specified as not to be received with args&quot; do
         @mock.should_not_receive(:not_expected).with(&quot;unexpected text&quot;)
-        @mock.not_expected(&quot;unexpected text&quot;)
         lambda {
-          @mock.rspec_verify
+          @mock.not_expected(&quot;unexpected text&quot;)
           violated
         }.should raise_error(MockExpectationError, &quot;Mock 'test mock' expected :not_expected with (\&quot;unexpected text\&quot;) 0 times, but received it once&quot;)
       end
@@ -76,7 +75,7 @@ module Spec
         @mock.rspec_verify
       end
       
-      it &quot;should raise exception if args dont match when method called&quot; do
+      it &quot;should raise exception if args don't match when method called&quot; do
         @mock.should_receive(:something).with(&quot;a&quot;,&quot;b&quot;,&quot;c&quot;).and_return(&quot;booh&quot;)
         lambda {
           @mock.something(&quot;a&quot;,&quot;d&quot;,&quot;c&quot;)
@@ -84,6 +83,24 @@ module Spec
         }.should raise_error(MockExpectationError, &quot;Mock 'test mock' expected :something with (\&quot;a\&quot;, \&quot;b\&quot;, \&quot;c\&quot;) but received it with (\&quot;a\&quot;, \&quot;d\&quot;, \&quot;c\&quot;)&quot;)
       end
            
+      it &quot;should raise exception if args don't match when method called even when the method is stubbed&quot; do
+        @mock.stub!(:something)
+        @mock.should_receive(:something).with(&quot;a&quot;,&quot;b&quot;,&quot;c&quot;)
+        lambda {
+          @mock.something(&quot;a&quot;,&quot;d&quot;,&quot;c&quot;)
+          @mock.rspec_verify
+        }.should raise_error(MockExpectationError, &quot;Mock 'test mock' expected :something with (\&quot;a\&quot;, \&quot;b\&quot;, \&quot;c\&quot;) but received it with (\&quot;a\&quot;, \&quot;d\&quot;, \&quot;c\&quot;)&quot;)
+      end
+           
+      it &quot;should raise exception if args don't match when method called even when using null_object&quot; do
+        @mock = mock(&quot;test mock&quot;, :null_object =&gt; true)
+        @mock.should_receive(:something).with(&quot;a&quot;,&quot;b&quot;,&quot;c&quot;)
+        lambda {
+          @mock.something(&quot;a&quot;,&quot;d&quot;,&quot;c&quot;)
+          @mock.rspec_verify
+        }.should raise_error(MockExpectationError, &quot;Mock 'test mock' expected :something with (\&quot;a\&quot;, \&quot;b\&quot;, \&quot;c\&quot;) but received it with (\&quot;a\&quot;, \&quot;d\&quot;, \&quot;c\&quot;)&quot;)
+      end
+           
       it &quot;should fail if unexpected method called&quot; do
         lambda {
           @mock.something(&quot;a&quot;,&quot;b&quot;,&quot;c&quot;)
@@ -109,23 +126,19 @@ module Spec
       end
         
       it &quot;should fail right away when method defined as never is received&quot; do
-        pending &quot;Used to pass (false positive). Which one is wrong, the spec or the actual behavior?&quot;
-
         @mock.should_receive(:not_expected).never
         lambda {
           @mock.not_expected
-        }.should raise_error(MockExpectationError, &quot;Mock 'test mock' expected :not_expected 0 times, but received it 1 times&quot;)
+        }.should raise_error(MockExpectationError, &quot;Mock 'test mock' expected :not_expected with (no args) 0 times, but received it once&quot;)
       end
       
       it &quot;should eventually fail when method defined as never is received&quot; do
         @mock.should_receive(:not_expected).never
-        @mock.not_expected
-          
         lambda {
-          @mock.rspec_verify
-        }.should raise_error(MockExpectationError, &quot;Mock 'test mock' expected :not_expected with (any args) 0 times, but received it once&quot;)
+          @mock.not_expected
+        }.should raise_error(MockExpectationError, &quot;Mock 'test mock' expected :not_expected with (no args) 0 times, but received it once&quot;)
       end
-
+    
       it &quot;should raise when told to&quot; do
         @mock.should_receive(:something).and_raise(RuntimeError)
         lambda do
@@ -185,14 +198,20 @@ module Spec
           @mock.something 1
         }.should raise_error(MockExpectationError, &quot;Mock 'test mock' expected :something with (no args) but received it with (1)&quot;)
       end
-
+    
       it &quot;should fail when args are expected but none are received&quot; do
         @mock.should_receive(:something).with(1)
         lambda {
           @mock.something
         }.should raise_error(MockExpectationError, &quot;Mock 'test mock' expected :something with (1) but received it with (no args)&quot;)
       end
-      
+    
+      it &quot;should return value from block by default&quot; do
+        @mock.stub!(:method_that_yields).and_yield
+        @mock.method_that_yields { :returned_obj }.should == :returned_obj
+        @mock.rspec_verify
+      end
+    
       it &quot;should yield 0 args to blocks that take a variable number of arguments&quot; do
         @mock.should_receive(:yield_back).with(no_args()).once.and_yield
         a = nil
@@ -237,7 +256,7 @@ module Spec
         a.should == [99, 27, &quot;go&quot;]
         @mock.rspec_verify
       end
-
+    
       it &quot;should yield many args 3 times consecutively to blocks that take a variable number of arguments&quot; do
         @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield(99, :green, &quot;go&quot;).
                                                                     and_yield(&quot;wait&quot;, :amber).
@@ -346,7 +365,7 @@ module Spec
         mock.rspec_reset
         mock.rspec_verify #should throw if reset didn't work
       end
-
+    
       it &quot;should work even after method_missing starts raising NameErrors instead of NoMethodErrors&quot; do
         # Object#method_missing throws either NameErrors or NoMethodErrors.
         #
@@ -375,8 +394,33 @@ module Spec
         lambda { @mock.foobar }.should_not raise_error(NameError)
         lambda { @mock.foobar }.should raise_error(MockExpectationError)
       end
+    
+      it &quot;should temporarily replace a method stub on a mock&quot; do
+        @mock.stub!(:msg).and_return(:stub_value)
+        @mock.should_receive(:msg).with(:arg).and_return(:mock_value)
+        @mock.msg(:arg).should equal(:mock_value)
+        @mock.msg.should equal(:stub_value)
+        @mock.msg.should equal(:stub_value)
+        @mock.rspec_verify
+      end
+    
+      it &quot;should temporarily replace a method stub on a non-mock&quot; do
+        non_mock = Object.new
+        non_mock.stub!(:msg).and_return(:stub_value)
+        non_mock.should_receive(:msg).with(:arg).and_return(:mock_value)
+        non_mock.msg(:arg).should equal(:mock_value)
+        non_mock.msg.should equal(:stub_value)
+        non_mock.msg.should equal(:stub_value)
+        non_mock.rspec_verify
+      end
+      
+      it &quot;should assign stub return values&quot; do
+        mock = Mock.new('name', :message =&gt; :response)
+        mock.message.should == :response
+      end
+      
     end
-
+    
     describe &quot;a mock message receiving a block&quot; do
       before(:each) do
         @mock = mock(&quot;mock&quot;)
@@ -389,60 +433,60 @@ module Spec
       
       it &quot;should call the block after #should_receive&quot; do
         @mock.should_receive(:foo) { add_call }
-
+    
         @mock.foo
-
+    
         @calls.should == 1
       end
-
+    
       it &quot;should call the block after #once&quot; do
         @mock.should_receive(:foo).once { add_call }
-
+    
         @mock.foo
-
+    
         @calls.should == 1
       end
-
+    
       it &quot;should call the block after #twice&quot; do
         @mock.should_receive(:foo).twice { add_call }
-
+    
         @mock.foo
         @mock.foo
-
+    
         @calls.should == 2
       end
-
+    
       it &quot;should call the block after #times&quot; do
         @mock.should_receive(:foo).exactly(10).times { add_call }
         
         (1..10).each { @mock.foo }
-
+    
         @calls.should == 10
       end
-
+    
       it &quot;should call the block after #any_number_of_times&quot; do
         @mock.should_receive(:foo).any_number_of_times { add_call }
         
         (1..7).each { @mock.foo }
-
+    
         @calls.should == 7
       end
-
+    
       it &quot;should call the block after #with&quot; do
         @mock.should_receive(:foo).with(:arg) { add_call }
         
         @mock.foo(:arg)
-
+    
         @calls.should == 1
       end
-
+    
       it &quot;should call the block after #ordered&quot; do
         @mock.should_receive(:foo).ordered { add_call }
         @mock.should_receive(:bar).ordered { add_call }
         
         @mock.foo
         @mock.bar
-
+    
         @calls.should == 2
       end
     end</diff>
      <filename>vendor/plugins/rspec/spec/spec/mocks/mock_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,39 +3,42 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
 module Spec
   module Mocks
     describe &quot;calling :should_receive with an options hash&quot; do
+      it_should_behave_like &quot;sandboxed rspec_options&quot;
+      attr_reader :reporter, :example_group
       before do
-        @options = ::Spec::Runner::Options.new(StringIO.new, StringIO.new)
-        @reporter = ::Spec::Runner::Reporter.new(@options)
-        @behaviour = Class.new(::Spec::DSL::Example).describe(&quot;My Behaviour&quot;)
+        @reporter = ::Spec::Runner::Reporter.new(options)
+        @example_group = Class.new(::Spec::Example::ExampleGroup) do
+          plugin_mock_framework
+          describe(&quot;Some Examples&quot;)
+        end
+        reporter.add_example_group example_group
       end
 
       it &quot;should report the file and line submitted with :expected_from&quot; do
-        example_definition = @behaviour.create_example_definition &quot;spec&quot; do
+        example_definition = example_group.it &quot;spec&quot; do
           mock = Spec::Mocks::Mock.new(&quot;a mock&quot;)
           mock.should_receive(:message, :expected_from =&gt; &quot;/path/to/blah.ext:37&quot;)
           mock.rspec_verify
         end
-        example = @behaviour.new(example_definition)
-        proxy = ::Spec::DSL::ExampleRunner.new(@options, example)
+        example = example_group.new(example_definition)
         
-        @reporter.should_receive(:example_finished) do |spec, error|
+        reporter.should_receive(:example_finished) do |spec, error|
           error.backtrace.detect {|line| line =~ /\/path\/to\/blah.ext:37/}.should_not be_nil
         end
-        proxy.run
+        example.execute(options, {})
       end
 
       it &quot;should use the message supplied with :message&quot; do
-        example_definition = @behaviour.create_example_definition &quot;spec&quot; do
+        example_definition = @example_group.it &quot;spec&quot; do
           mock = Spec::Mocks::Mock.new(&quot;a mock&quot;)
           mock.should_receive(:message, :message =&gt; &quot;recebi nada&quot;)
           mock.rspec_verify
         end
-        example = @behaviour.new(example_definition)
-        proxy = ::Spec::DSL::ExampleRunner.new(@options, example)
+        example = @example_group.new(example_definition)
         @reporter.should_receive(:example_finished) do |spec, error|
           error.message.should == &quot;recebi nada&quot;
         end
-        proxy.run
+        example.execute(@options, {})
       end
     end
   end</diff>
      <filename>vendor/plugins/rspec/spec/spec/mocks/options_hash_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -21,11 +21,11 @@ module Spec
       end
             
       it &quot;should_not_receive should mock out the method&quot; do
+        pending(&quot;example raises the expected error, yet fails&quot;)
         @object.should_not_receive(:fuhbar)
-        @object.fuhbar
         lambda do
-          @object.rspec_verify
-        end.should raise_error(Spec::Mocks::MockExpectationError)
+          @object.fuhbar
+        end.should raise_error(MockExpectationError, &quot;Mock 'Object' expected :fuhbar with (no args) 0 times, but received it once&quot;)
       end
     
       it &quot;should_not_receive should return a negative message expectation&quot; do
@@ -66,10 +66,10 @@ module Spec
       end
       
       it &quot;should_not_receive should also take a String argument&quot; do
+        pending(&quot;example raises the expected error, yet fails&quot;)
         @object.should_not_receive('foobar')
-        @object.foobar
         lambda do
-          @object.rspec_verify
+          @object.foobar   
         end.should raise_error(Spec::Mocks::MockExpectationError)
       end
       </diff>
      <filename>vendor/plugins/rspec/spec/spec/mocks/partial_mock_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -109,6 +109,12 @@ module Spec
         @mock.should_receive(:random_call).with(no_args)
         @mock.random_call()
       end
+      
+      it &quot;should match hash with hash_including same hash&quot; do
+        @mock.should_receive(:random_call).with(hash_including(:a =&gt; 1))
+        @mock.random_call(:a =&gt; 1)
+      end
+        
     end
     
     describe Methods, &quot;handling non-constraint arguments&quot; do</diff>
      <filename>vendor/plugins/rspec/spec/spec/mocks/passing_mock_argument_constraints_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -13,106 +13,74 @@ module Spec
             :original_value
           end
         end
-        @obj = @class.new
+        @instance = @class.new
       end
 
-      it &quot;should allow for a mock expectation to temporarily replace a method stub on a mock&quot; do
-        mock = Spec::Mocks::Mock.new(&quot;a mock&quot;)
-        mock.stub!(:msg).and_return(:stub_value)
-        mock.should_receive(:msg).with(:arg).and_return(:mock_value)
-        mock.msg(:arg).should equal(:mock_value)
-        mock.msg.should equal(:stub_value)
-        mock.msg.should equal(:stub_value)
-        mock.rspec_verify
+      it &quot;should return expected value when expected message is received&quot; do
+        @instance.stub!(:msg).and_return(:return_value)
+        @instance.msg.should equal(:return_value)
+        @instance.rspec_verify
       end
 
-      it &quot;should allow for a mock expectation to temporarily replace a method stub on a non-mock&quot; do
-        @obj.stub!(:msg).and_return(:stub_value)
-        @obj.should_receive(:msg).with(:arg).and_return(:mock_value)
-        @obj.msg(:arg).should equal(:mock_value)
-        @obj.msg.should equal(:stub_value)
-        @obj.msg.should equal(:stub_value)
-        @obj.rspec_verify
+      it &quot;should ignore when expected message is received&quot; do
+        @instance.stub!(:msg)
+        @instance.msg
+        lambda do
+          @instance.rspec_verify
+        end.should_not raise_error
+      end
+
+      it &quot;should ignore when message is received with args&quot; do
+        @instance.stub!(:msg)
+        @instance.msg(:an_arg)
+        lambda do
+          @instance.rspec_verify
+        end.should_not raise_error
       end
 
       it &quot;should ignore when expected message is not received&quot; do
-        @obj.stub!(:msg)
+        @instance.stub!(:msg)
         lambda do
-          @obj.rspec_verify
+          @instance.rspec_verify
         end.should_not raise_error
       end
       
-      it &quot;should clear itself on rspec_verify&quot; do
-        @obj.stub!(:this_should_go).and_return(:blah)
-        @obj.this_should_go.should == :blah
-        @obj.rspec_verify
+      it &quot;should clear itself when verified&quot; do
+        @instance.stub!(:this_should_go).and_return(:blah)
+        @instance.this_should_go.should == :blah
+        @instance.rspec_verify
         lambda do
-          @obj.this_should_go
-        end.should raise_error
+          @instance.this_should_go
+        end.should raise_error(NameError)
       end
 
-      it &quot;should ignore when expected message is received&quot; do
-        @obj.stub!(:msg)
-        @obj.msg
-        @obj.rspec_verify
-      end
-
-      it &quot;should ignore when message is received with args&quot; do
-        @obj.stub!(:msg)
-        @obj.msg(:an_arg)
-        @obj.rspec_verify
-      end
-
-      it &quot;should return expected value when expected message is received&quot; do
-        @obj.stub!(:msg).and_return(:return_value)
-        @obj.msg.should equal(:return_value)
-        @obj.rspec_verify
-      end
-      
       it &quot;should return values in order to consecutive calls&quot; do
         return_values = [&quot;1&quot;,2,Object.new]
-        @obj.stub!(:msg).and_return(return_values[0],return_values[1],return_values[2])
-        @obj.msg.should == return_values[0]
-        @obj.msg.should == return_values[1]
-        @obj.msg.should == return_values[2]
+        @instance.stub!(:msg).and_return(return_values[0],return_values[1],return_values[2])
+        @instance.msg.should == return_values[0]
+        @instance.msg.should == return_values[1]
+        @instance.msg.should == return_values[2]
       end
 
       it &quot;should keep returning last value in consecutive calls&quot; do
         return_values = [&quot;1&quot;,2,Object.new]
-        @obj.stub!(:msg).and_return(return_values[0],return_values[1],return_values[2])
-        @obj.msg.should == return_values[0]
-        @obj.msg.should == return_values[1]
-        @obj.msg.should == return_values[2]
-        @obj.msg.should == return_values[2]
-        @obj.msg.should == return_values[2]
-      end
-
-      it &quot;should revert to original instance method if existed&quot; do
-        @obj.existing_instance_method.should equal(:original_value)
-        @obj.stub!(:existing_instance_method).and_return(:mock_value)
-        @obj.existing_instance_method.should equal(:mock_value)
-        @obj.rspec_verify
-        # TODO JRUBY: This causes JRuby to fail with:
-        # NativeException in 'Stub should revert to original instance method if existed'
-        # java.lang.ArrayIndexOutOfBoundsException: 0
-        # org.jruby.internal.runtime.methods.IterateCallable.internalCall(IterateCallable.java:63)
-        # org.jruby.internal.runtime.methods.AbstractCallable.call(AbstractCallable.java:64)
-        # org.jruby.runtime.ThreadContext.yieldInternal(ThreadContext.java:574)
-        # org.jruby.runtime.ThreadContext.yieldSpecificBlock(ThreadContext.java:549)
-        # org.jruby.runtime.Block.call(Block.java:158)
-        # org.jruby.RubyProc.call(RubyProc.java:118)
-        # org.jruby.internal.runtime.methods.ProcMethod.internalCall(ProcMethod.java:69)
-        # org.jruby.internal.runtime.methods.AbstractMethod.call(AbstractMethod.java:58)
-        # org.jruby.RubyObject.callMethod(RubyObject.java:379)
-        # org.jruby.RubyObject.callMethod(RubyObject.java:331)
-        # org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:472)
-        # org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:462)
-        # org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:390)
-        # org.jruby.evaluator.EvaluationState.eval(EvaluationState.java:133)
-        @obj.existing_instance_method.should equal(:original_value)
+        @instance.stub!(:msg).and_return(return_values[0],return_values[1],return_values[2])
+        @instance.msg.should == return_values[0]
+        @instance.msg.should == return_values[1]
+        @instance.msg.should == return_values[2]
+        @instance.msg.should == return_values[2]
+        @instance.msg.should == return_values[2]
+      end
+
+      it &quot;should revert to original instance method if there is one&quot; do
+        @instance.existing_instance_method.should equal(:original_value)
+        @instance.stub!(:existing_instance_method).and_return(:mock_value)
+        @instance.existing_instance_method.should equal(:mock_value)
+        @instance.rspec_verify
+        @instance.existing_instance_method.should equal(:original_value)
       end
       
-      it &quot;should revert to original class method if existed&quot; do
+      it &quot;should revert to original class method if there is one&quot; do
         @class.existing_class_method.should equal(:original_value)
         @class.stub!(:existing_class_method).and_return(:mock_value)
         @class.existing_class_method.should equal(:mock_value)
@@ -120,45 +88,43 @@ module Spec
         @class.existing_class_method.should equal(:original_value)
       end
 
-      it &quot;should clear itself on rspec_verify&quot; do
-        @obj.stub!(:this_should_go).and_return(:blah)
-        @obj.this_should_go.should == :blah
-        @obj.rspec_verify
-        lambda do
-          @obj.this_should_go
-        end.should raise_error
-      end
-      
-      it &quot;should support yielding&quot; do
-        @obj.stub!(:method_that_yields).and_yield(:yielded_value)
+      it &quot;should yield a specified object&quot; do
+        @instance.stub!(:method_that_yields).and_yield(:yielded_obj)
         current_value = :value_before
-        @obj.method_that_yields {|val| current_value = val}
-        current_value.should == :yielded_value
-        @obj.rspec_verify
+        @instance.method_that_yields {|val| current_value = val}
+        current_value.should == :yielded_obj
+        @instance.rspec_verify
       end
 
-      it &quot;should support yielding multiple times&quot; do
-        @obj.stub!(:method_that_yields_multiple_times).and_yield(:yielded_value).
+      it &quot;should yield multiple times with multiple calls to and_yield&quot; do
+        @instance.stub!(:method_that_yields_multiple_times).and_yield(:yielded_value).
                                                        and_yield(:another_value)
         current_value = []
-        @obj.method_that_yields_multiple_times {|val| current_value &lt;&lt; val}
+        @instance.method_that_yields_multiple_times {|val| current_value &lt;&lt; val}
         current_value.should == [:yielded_value, :another_value]
-        @obj.rspec_verify
+        @instance.rspec_verify
+      end
+      
+      it &quot;should yield a specified object and return another specified object&quot; do
+        yielded_obj = mock(&quot;my mock&quot;)
+        yielded_obj.should_receive(:foo).with(:bar)
+        @instance.stub!(:method_that_yields_and_returns).and_yield(yielded_obj).and_return(:baz)
+        @instance.method_that_yields_and_returns { |o| o.foo :bar }.should == :baz
       end
 
       it &quot;should throw when told to&quot; do
-        @mock.stub!(:something).and_throw(:blech)
+        @mock.stub!(:something).and_throw(:up)
         lambda do
           @mock.something
-        end.should throw_symbol(:blech)
+        end.should throw_symbol(:up)
       end
       
-      it &quot;should support overriding w/ a new stub&quot; do
+      it &quot;should override a pre-existing stub&quot; do
         @stub.stub!(:existing_instance_method).and_return(:updated_stub_value)
         @stub.existing_instance_method.should == :updated_stub_value
       end
       
-      it &quot;should support stub with&quot; do
+      it &quot;should limit &quot; do
         @stub.stub!(:foo).with(&quot;bar&quot;)
         @stub.should_receive(:foo).with(&quot;baz&quot;)
         @stub.foo(&quot;bar&quot;)</diff>
      <filename>vendor/plugins/rspec/spec/spec/mocks/stub_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,14 @@
-require &quot;#{File.dirname(__FILE__)}/../../spec_helper&quot;
+require File.dirname(__FILE__) + '/../../spec_helper'
+require File.dirname(__FILE__) + '/../../ruby_forker'
 
 describe &quot;The bin/spec script&quot; do
+  include RubyForker
+  
   it &quot;should have no warnings&quot; do
+    pending &quot;Hangs on JRuby&quot; if PLATFORM =~ /java/
     spec_path = &quot;#{File.dirname(__FILE__)}/../../../bin/spec&quot;
-    output = nil
-    IO.popen(&quot;ruby -w #{spec_path} --help 2&gt;&amp;1&quot;) do |io|
-      output = io.read
-    end
+
+    output = ruby &quot;-w #{spec_path} --help 2&gt;&amp;1&quot;
     output.should_not =~ /warning/n
   end
 end</diff>
      <filename>vendor/plugins/rspec/spec/spec/package/bin_spec_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,136 +1,147 @@
 require File.dirname(__FILE__) + '/../../spec_helper.rb'
 
-describe Spec::Runner::CommandLine, &quot;.run&quot; do
-  it_should_behave_like &quot;Test::Unit io sink&quot;
-
-  before do
-    @err = StringIO.new
-    @out = StringIO.new
-  end
+module Spec
+  module Runner
+    describe CommandLine, &quot;.run&quot; do
+      it_should_behave_like &quot;sandboxed rspec_options&quot;
+      attr_reader :options, :err, :out
+      before do
+        @err = options.error_stream
+        @out = options.output_stream
+      end
 
-  it &quot;should run directory&quot; do
-    file = File.dirname(__FILE__) + '/../../../examples'
-    Spec::Runner::CommandLine.run([file], @err, @out)
+      it &quot;should run directory&quot; do
+        file = File.dirname(__FILE__) + '/../../../examples/pure'
+        Spec::Runner::CommandLine.run(OptionParser.parse([file,&quot;-p&quot;,&quot;**/*.rb&quot;], @err, @out))
 
-    @out.rewind
-    @out.read.should =~ /\d+ examples, 0 failures, 3 pending/n
-  end
-
-  it &quot;should run file&quot; do
-    file = File.dirname(__FILE__) + '/../../../failing_examples/predicate_example.rb'
-    Spec::Runner::CommandLine.run([file], @err, @out)
+        @out.rewind
+        @out.read.should =~ /\d+ examples, 0 failures, 3 pending/n
+      end
 
-    @out.rewind
-    @out.read.should =~ /2 examples, 1 failure/n
-  end
+      it &quot;should run file&quot; do
+        file = File.dirname(__FILE__) + '/../../../failing_examples/predicate_example.rb'
+        Spec::Runner::CommandLine.run(OptionParser.parse([file], @err, @out))
 
-  it &quot;should raise when file does not exist&quot; do
-    file = File.dirname(__FILE__) + '/doesntexist'
+        @out.rewind
+        @out.read.should =~ /2 examples, 1 failure/n
+      end
 
-    lambda {
-      Spec::Runner::CommandLine.run([file], @err, @out)
-    }.should raise_error
-  end
-  
-  it &quot;should return true when in --generate-options mode&quot; do
-    Spec::Runner::CommandLine.run(['--generate-options', '/dev/null'], @err, @out).should be_true
-  end
+      it &quot;should raise when file does not exist&quot; do
+        file = File.dirname(__FILE__) + '/doesntexist'
 
-  it &quot;should dump even if Interrupt exception is occurred&quot; do
-    behaviour = Class.new(::Spec::DSL::Example).describe(&quot;behaviour&quot;) do
-      it &quot;no error&quot; do
+        lambda {
+          Spec::Runner::CommandLine.run(OptionParser.parse([file], @err, @out))
+        }.should raise_error
       end
 
-      it &quot;should interrupt&quot; do
-        raise Interrupt
+      it &quot;should return true when in --generate-options mode&quot; do
+        # NOTE - this used to say /dev/null but jruby hangs on that for some reason
+        Spec::Runner::CommandLine.run(
+          OptionParser.parse(['--generate-options', '/tmp/foo'], @err, @out)
+        ).should be_true
       end
-    end
 
-    options = ::Spec::Runner::Options.new(@err, @out)
-    ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
-    options.reporter.should_receive(:dump)
-    options.add_behaviour(behaviour)
-    
-    Spec::Runner::CommandLine.run([], @err, @out)
-  end
+      it &quot;should dump even if Interrupt exception is occurred&quot; do
+        example_group = Class.new(::Spec::Example::ExampleGroup) do
+          describe(&quot;example_group&quot;)
+          it &quot;no error&quot; do
+          end
 
-  it &quot;should heckle when options have heckle_runner&quot; do
-    behaviour = Class.new(::Spec::DSL::Example).describe(&quot;behaviour&quot;) do
-      it &quot;no error&quot; do
-      end
-    end
-    options = ::Spec::Runner::Options.new(@err, @out)
-    ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
-    options.add_behaviour behaviour
+          it &quot;should interrupt&quot; do
+            raise Interrupt, &quot;I'm interrupting&quot;
+          end
+        end
 
-    heckle_runner = mock(&quot;heckle_runner&quot;)
-    heckle_runner.should_receive(:heckle_with)
-    $rspec_mocks.__send__(:mocks).delete(heckle_runner)
+        options = ::Spec::Runner::Options.new(@err, @out)
+        ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
+        options.reporter.should_receive(:dump)
+        options.add_example_group(example_group)
 
-    options.heckle_runner = heckle_runner
-    options.add_behaviour(behaviour)
+        Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
+      end
 
-    Spec::Runner::CommandLine.run([], @err, @out)
-    heckle_runner.rspec_verify
-  end
+      it &quot;should heckle when options have heckle_runner&quot; do
+        example_group = Class.new(::Spec::Example::ExampleGroup).describe(&quot;example_group&quot;) do
+          it &quot;no error&quot; do
+          end
+        end
+        options = ::Spec::Runner::Options.new(@err, @out)
+        ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
+        options.add_example_group example_group
 
-  it &quot;should run examples backwards if options.reverse is true&quot; do
-    options = ::Spec::Runner::Options.new(@err, @out)
-    ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
-    options.reverse = true
+        heckle_runner = mock(&quot;heckle_runner&quot;)
+        heckle_runner.should_receive(:heckle_with)
+        $rspec_mocks.__send__(:mocks).delete(heckle_runner)
 
-    b1 = Class.new(Spec::DSL::Example)
-    b2 = Class.new(Spec::DSL::Example)
+        options.heckle_runner = heckle_runner
+        options.add_example_group(example_group)
 
-    b1_suite = b1.suite
-    b1.should_receive(:suite).and_return(b1_suite)
-    b2_suite = b2.suite
-    b2.should_receive(:suite).and_return(b2_suite)
+        Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
+        heckle_runner.rspec_verify
+      end
 
-    b2_suite.should_receive(:run).ordered
-    b1_suite.should_receive(:run).ordered
+      it &quot;should run examples backwards if options.reverse is true&quot; do
+        options = ::Spec::Runner::Options.new(@err, @out)
+        ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
+        options.reverse = true
 
-    options.add_behaviour(b1)
-    options.add_behaviour(b2)
+        b1 = Class.new(Spec::Example::ExampleGroup)
+        b2 = Class.new(Spec::Example::ExampleGroup)
 
-    Spec::Runner::CommandLine.run([], @err, @out)
-  end
+        b2.should_receive(:run).ordered
+        b1.should_receive(:run).ordered
 
-  it &quot;should pass its Description to the reporter&quot; do
-    behaviour = Class.new(::Spec::DSL::Example).describe(&quot;behaviour&quot;) do
-      it &quot;should&quot; do
-      end
-    end
+        options.add_example_group(b1)
+        options.add_example_group(b2)
 
-    options = ::Spec::Runner::Options.new(@err, @out)
-    ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
-    options.reporter.should_receive(:add_behaviour).with(an_instance_of(Spec::DSL::BehaviourDescription))
-    options.add_behaviour(behaviour)
-    Spec::Runner::CommandLine.run([], @err, @out)
-  end
+        Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
+      end
 
-  it &quot;runs only selected Examples when options.examples is set&quot; do
-    options = ::Spec::Runner::Options.new(@err, @out)
-    ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
+      it &quot;should pass its ExampleGroup to the reporter&quot; do
+        example_group = Class.new(::Spec::Example::ExampleGroup).describe(&quot;example_group&quot;) do
+          it &quot;should&quot; do
+          end
+        end
+        options = ::Spec::Runner::Options.new(@err, @out)
+        options.add_example_group(example_group)
+
+        ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
+        options.reporter.should_receive(:add_example_group).with(example_group)
+        
+        Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
+      end
 
-    options.examples &lt;&lt; &quot;behaviour should&quot;
-    should_has_run = false
-    should_not_has_run = false
-    behaviour = Class.new(::Spec::DSL::Example).describe(&quot;behaviour&quot;) do
-      it &quot;should&quot; do
-        should_has_run = true
+      it &quot;runs only selected Examples when options.examples is set&quot; do
+        options = ::Spec::Runner::Options.new(@err, @out)
+        ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
+
+        options.examples &lt;&lt; &quot;example_group should&quot;
+        should_has_run = false
+        should_not_has_run = false
+        example_group = Class.new(::Spec::Example::ExampleGroup).describe(&quot;example_group&quot;) do
+          it &quot;should&quot; do
+            should_has_run = true
+          end
+          it &quot;should not&quot; do
+            should_not_has_run = true
+          end
+        end
+
+        options.reporter.should_receive(:add_example_group).with(example_group)
+
+        options.add_example_group example_group
+        Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
+
+        should_has_run.should be_true
+        should_not_has_run.should be_false
       end
-      it &quot;should not&quot; do
-        should_not_has_run = true
+
+      it &quot;sets Spec.run to true&quot; do
+        ::Spec.run = false
+        ::Spec.should_not be_run
+        Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
+        ::Spec.should be_run
       end
     end
-
-    options.reporter.should_receive(:add_behaviour).with(an_instance_of(Spec::DSL::BehaviourDescription))
-
-    options.add_behaviour behaviour
-    Spec::Runner::CommandLine.run([], @err, @out)
-
-    should_has_run.should be_true
-    should_not_has_run.should be_false
   end
-end
+end
\ No newline at end of file</diff>
      <filename>vendor/plugins/rspec/spec/spec/runner/command_line_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,12 +3,11 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
 module Spec
   module Runner
     describe DrbCommandLine, &quot;without running local server&quot; do
-      it_should_behave_like &quot;Test::Unit io sink&quot;
       unless Config::CONFIG['ruby_install_name'] == 'jruby'
         it &quot;should print error when there is no running local server&quot; do
           err = StringIO.new
           out = StringIO.new
-          DrbCommandLine.run(['--version'], err, out)
+          DrbCommandLine.run(OptionParser.parse(['--version'], err, out))
 
           err.rewind
           err.read.should =~ /No server is running/
@@ -16,13 +15,12 @@ module Spec
       end    
     end
 
-    class DrbCommandLineSpec &lt; ::Spec::DSL::Example
+    class DrbCommandLineSpec &lt; ::Spec::Example::ExampleGroup
       describe DrbCommandLine, &quot;with local server&quot;
-      it_should_behave_like &quot;Test::Unit io sink&quot;
 
       class CommandLineForSpec
-        def self.run(argv, err, out)
-          exit Spec::Runner::CommandLine.run(argv, err, out)
+        def self.run(argv, stderr, stdout)
+          exit Spec::Runner::CommandLine.run(OptionParser.parse(argv, stderr, stdout))
         end
       end
       
@@ -77,12 +75,14 @@ module Spec
           end
         end
 
-        def run_spec_via_druby(args)
+        def run_spec_via_druby(argv)
           err, out = StringIO.new, StringIO.new
           out.instance_eval do
             def tty?; true end
           end
-          Spec::Runner::DrbCommandLine.run(args, err, out)
+          options = ::Spec::Runner::Options.new(err, out)
+          options.argv = argv
+          Spec::Runner::DrbCommandLine.run(options)
           out.rewind; out.read
         end
       end</diff>
      <filename>vendor/plugins/rspec/spec/spec/runner/drb_command_line_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,7 +7,13 @@ describe &quot;ExecutionContext&quot; do
     dt.should be_an_instance_of(Spec::Mocks::DuckTypeArgConstraint)
     dt.matches?([]).should be_true
   end
-
+  
+  it &quot;should provide hash_including&quot; do
+    hi = hash_including(:a =&gt; 1)
+    hi.should be_an_instance_of(Spec::Mocks::HashIncludingConstraint)
+    hi.matches?(:a =&gt; 1).should be_true
+  end
+  
   it &quot;should violate when violated()&quot; do
     lambda do
       violated</diff>
      <filename>vendor/plugins/rspec/spec/spec/runner/execution_context_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,26 +1,29 @@
 require File.dirname(__FILE__) + '/../../../spec_helper'
+require 'spec/runner/formatter/failing_examples_formatter'
 
 module Spec
   module Runner
     module Formatter
-      describe &quot;FailingExamplesFormatter&quot; do
+      describe FailingExamplesFormatter do
         before(:each) do
           @io = StringIO.new
-          @options = Options.new(StringIO.new, @io)
-          @formatter = @options.create_formatter(FailingExamplesFormatter)
-          @behaviour = Class.new(::Spec::DSL::Example).describe(&quot;My Behaviour&quot;)
+          options = mock('options')
+          @formatter = FailingExamplesFormatter.new(options, @io)
         end
 
         it &quot;should add example name for each failure&quot; do
-          @formatter.add_behaviour(&quot;b 1&quot;)
-          @formatter.example_failed(@behaviour.create_example_definition(&quot;e 1&quot;), nil, Reporter::Failure.new(nil, RuntimeError.new))
-          @formatter.add_behaviour(&quot;b 2&quot;)
-          @formatter.example_failed(@behaviour.create_example_definition(&quot;e 2&quot;), nil, Reporter::Failure.new(nil, RuntimeError.new))
-          @formatter.example_failed(@behaviour.create_example_definition(&quot;e 3&quot;), nil, Reporter::Failure.new(nil, RuntimeError.new))
+          example_group_1 = Class.new(ExampleGroup).describe(&quot;A&quot;)
+          example_group_2 = Class.new(example_group_1).describe(&quot;B&quot;)
+
+          @formatter.add_example_group(example_group_1)
+          @formatter.example_failed(example_group_1.it(&quot;a1&quot;){}, nil, Reporter::Failure.new(nil, RuntimeError.new))
+          @formatter.add_example_group(example_group_2)
+          @formatter.example_failed(example_group_2.it(&quot;b2&quot;){}, nil, Reporter::Failure.new(nil, RuntimeError.new))
+          @formatter.example_failed(example_group_2.it(&quot;b3&quot;){}, nil, Reporter::Failure.new(nil, RuntimeError.new))
           @io.string.should eql(&lt;&lt;-EOF
-b 1 e 1
-b 2 e 2
-b 2 e 3
+A a1
+A B b2
+A B b3
 EOF
 )
         end</diff>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/failing_examples_formatter_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -73,7 +73,7 @@ function makeYellow(element_id) {
   font-size: 1.2em;
 }
 
-.behaviour {
+.example_group {
   margin: 0 10px 5px;
   background: #fff;
 }
@@ -176,21 +176,21 @@ a {
 &lt;/div&gt;
 
 &lt;div class=&quot;results&quot;&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_1&quot;&gt;Mocker&lt;/dt&gt;
+  &lt;dt id=&quot;example_group_1&quot;&gt;Mocker&lt;/dt&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('5.8');&lt;/script&gt;
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;should be able to call mock()&lt;/span&gt;&lt;/dd&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;makeRed('rspec-header');&lt;/script&gt;
-    &lt;script type=&quot;text/javascript&quot;&gt;makeRed('behaviour_1');&lt;/script&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;makeRed('example_group_1');&lt;/script&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('11.7');&lt;/script&gt;
     &lt;dd class=&quot;spec failed&quot;&gt;
       &lt;span class=&quot;failed_spec_name&quot;&gt;should fail when expected message not received&lt;/span&gt;
       &lt;div class=&quot;failure&quot; id=&quot;failure_1&quot;&gt;
         &lt;div class=&quot;message&quot;&gt;&lt;pre&gt;Mock 'poke me' expected :poke with (any args) once, but received it 0 times&lt;/pre&gt;&lt;/div&gt;
         &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;./failing_examples/mocking_example.rb:13:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:&lt;/pre&gt;&lt;/div&gt;
+./spec/spec/runner/formatter/html_formatter_spec.rb:24:
+./spec/spec/runner/formatter/html_formatter_spec.rb:20:&lt;/pre&gt;&lt;/div&gt;
     &lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;&lt;span class=&quot;linenum&quot;&gt;11&lt;/span&gt;  &lt;span class=&quot;ident&quot;&gt;it&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;should fail when expected message not received&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;
 &lt;span class=&quot;linenum&quot;&gt;12&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;mock&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;mock&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;poke me&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;)&lt;/span&gt;
 &lt;span class=&quot;offending&quot;&gt;&lt;span class=&quot;linenum&quot;&gt;13&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;mock&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;should_receive&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;symbol&quot;&gt;:poke&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
@@ -204,8 +204,8 @@ a {
       &lt;div class=&quot;failure&quot; id=&quot;failure_2&quot;&gt;
         &lt;div class=&quot;message&quot;&gt;&lt;pre&gt;Mock 'one two three' received :three out of order&lt;/pre&gt;&lt;/div&gt;
         &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;./failing_examples/mocking_example.rb:22:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:&lt;/pre&gt;&lt;/div&gt;
+./spec/spec/runner/formatter/html_formatter_spec.rb:24:
+./spec/spec/runner/formatter/html_formatter_spec.rb:20:&lt;/pre&gt;&lt;/div&gt;
     &lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;&lt;span class=&quot;linenum&quot;&gt;20&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;mock&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;should_receive&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;symbol&quot;&gt;:three&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;ordered&lt;/span&gt;
 &lt;span class=&quot;linenum&quot;&gt;21&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;mock&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;one&lt;/span&gt;
 &lt;span class=&quot;offending&quot;&gt;&lt;span class=&quot;linenum&quot;&gt;22&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;mock&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;three&lt;/span&gt;&lt;/span&gt;
@@ -219,8 +219,8 @@ a {
       &lt;div class=&quot;failure&quot; id=&quot;failure_3&quot;&gt;
         &lt;div class=&quot;message&quot;&gt;&lt;pre&gt;Mock 'don't talk to me' expected :any_message_at_all with (any args) 0 times, but received it once&lt;/pre&gt;&lt;/div&gt;
         &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;./failing_examples/mocking_example.rb:28:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:&lt;/pre&gt;&lt;/div&gt;
+./spec/spec/runner/formatter/html_formatter_spec.rb:24:
+./spec/spec/runner/formatter/html_formatter_spec.rb:20:&lt;/pre&gt;&lt;/div&gt;
     &lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;&lt;span class=&quot;linenum&quot;&gt;26&lt;/span&gt;  &lt;span class=&quot;ident&quot;&gt;it&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;should get yelled at when sending unexpected messages&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;
 &lt;span class=&quot;linenum&quot;&gt;27&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;mock&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;mock&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;don't talk to me&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;)&lt;/span&gt;
 &lt;span class=&quot;offending&quot;&gt;&lt;span class=&quot;linenum&quot;&gt;28&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;mock&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;should_not_receive&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;symbol&quot;&gt;:any_message_at_all&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
@@ -234,8 +234,8 @@ a {
       &lt;div class=&quot;failure&quot; id=&quot;failure_4&quot;&gt;
         &lt;div class=&quot;message&quot;&gt;&lt;pre&gt;Expected pending 'here is the bug' to fail. No Error was raised.&lt;/pre&gt;&lt;/div&gt;
         &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;./failing_examples/mocking_example.rb:33:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:&lt;/pre&gt;&lt;/div&gt;
+./spec/spec/runner/formatter/html_formatter_spec.rb:24:
+./spec/spec/runner/formatter/html_formatter_spec.rb:20:&lt;/pre&gt;&lt;/div&gt;
     &lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;&lt;span class=&quot;linenum&quot;&gt;31&lt;/span&gt;
 &lt;span class=&quot;linenum&quot;&gt;32&lt;/span&gt;  &lt;span class=&quot;ident&quot;&gt;it&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;has a bug we need to fix&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;
 &lt;span class=&quot;offending&quot;&gt;&lt;span class=&quot;linenum&quot;&gt;33&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;pending&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;here is the bug&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;&lt;/span&gt;
@@ -245,10 +245,10 @@ a {
     &lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_2&quot;&gt;Running specs with --diff&lt;/dt&gt;
-    &lt;script type=&quot;text/javascript&quot;&gt;makeRed('behaviour_2');&lt;/script&gt;
+  &lt;dt id=&quot;example_group_2&quot;&gt;Running specs with --diff&lt;/dt&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;makeRed('example_group_2');&lt;/script&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('35.2');&lt;/script&gt;
     &lt;dd class=&quot;spec failed&quot;&gt;
       &lt;span class=&quot;failed_spec_name&quot;&gt;should print diff of different strings&lt;/span&gt;
@@ -263,8 +263,8 @@ Diff:
  framework for Ruby
 &lt;/pre&gt;&lt;/div&gt;
         &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;./failing_examples/diffing_spec.rb:13:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:&lt;/pre&gt;&lt;/div&gt;
+./spec/spec/runner/formatter/html_formatter_spec.rb:24:
+./spec/spec/runner/formatter/html_formatter_spec.rb:20:&lt;/pre&gt;&lt;/div&gt;
     &lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;&lt;span class=&quot;linenum&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;framework&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;Ruby&lt;/span&gt;
 &lt;span class=&quot;linenum&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;constant&quot;&gt;EOF&lt;/span&gt;
 &lt;span class=&quot;offending&quot;&gt;&lt;span class=&quot;linenum&quot;&gt;13&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;usa&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;should&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;uk&lt;/span&gt;&lt;/span&gt;
@@ -293,8 +293,8 @@ Diff:
  &amp;gt;
 &lt;/pre&gt;&lt;/div&gt;
         &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;./failing_examples/diffing_spec.rb:34:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:&lt;/pre&gt;&lt;/div&gt;
+./spec/spec/runner/formatter/html_formatter_spec.rb:24:
+./spec/spec/runner/formatter/html_formatter_spec.rb:20:&lt;/pre&gt;&lt;/div&gt;
     &lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;&lt;span class=&quot;linenum&quot;&gt;32&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;expected&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;Animal&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;bob&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;,&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;giraffe&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;
 &lt;span class=&quot;linenum&quot;&gt;33&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;actual&lt;/span&gt;   &lt;span class=&quot;punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;Animal&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;bob&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;,&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;tortoise&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;
 &lt;span class=&quot;offending&quot;&gt;&lt;span class=&quot;linenum&quot;&gt;34&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;expected&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;should&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;eql&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;actual&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
@@ -304,16 +304,16 @@ Diff:
     &lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_3&quot;&gt;A consumer of a stub&lt;/dt&gt;
+  &lt;dt id=&quot;example_group_3&quot;&gt;A consumer of a stub&lt;/dt&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('47.0');&lt;/script&gt;
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;should be able to stub methods on any Object&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_4&quot;&gt;A stubbed method on a class&lt;/dt&gt;
+  &lt;dt id=&quot;example_group_4&quot;&gt;A stubbed method on a class&lt;/dt&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('52.9');&lt;/script&gt;
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;should return the stubbed value&lt;/span&gt;&lt;/dd&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('58.8');&lt;/script&gt;
@@ -322,9 +322,9 @@ Diff:
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;can stub! and mock the same message&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_5&quot;&gt;A mock&lt;/dt&gt;
+  &lt;dt id=&quot;example_group_5&quot;&gt;A mock&lt;/dt&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('70.5');&lt;/script&gt;
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;can stub!&lt;/span&gt;&lt;/dd&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('76.4');&lt;/script&gt;
@@ -333,28 +333,28 @@ Diff:
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;can stub! and mock the same message&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_6&quot;&gt;pending example (using pending method)&lt;/dt&gt;
-    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('behaviour_6');&lt;/script&gt;
+  &lt;dt id=&quot;example_group_6&quot;&gt;pending example (using pending method)&lt;/dt&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('example_group_6');&lt;/script&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('88.2');&lt;/script&gt;
-    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should be reported as &amp;quot;PENDING: for some reason&amp;quot;&lt;/span&gt;&lt;/dd&gt;
+    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should be reported as &amp;quot;PENDING: for some reason&amp;quot; (PENDING: for some reason)&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_7&quot;&gt;pending example (with no block)&lt;/dt&gt;
-    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('behaviour_7');&lt;/script&gt;
+  &lt;dt id=&quot;example_group_7&quot;&gt;pending example (with no block)&lt;/dt&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('example_group_7');&lt;/script&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('94.1');&lt;/script&gt;
-    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should be reported as &amp;quot;PENDING: Not Yet Implemented&amp;quot;&lt;/span&gt;&lt;/dd&gt;
+    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should be reported as &amp;quot;PENDING: Not Yet Implemented&amp;quot; (PENDING: Not Yet Implemented)&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_8&quot;&gt;pending example (with block for pending)&lt;/dt&gt;
-    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('behaviour_8');&lt;/script&gt;
+  &lt;dt id=&quot;example_group_8&quot;&gt;pending example (with block for pending)&lt;/dt&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('example_group_8');&lt;/script&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('100.0');&lt;/script&gt;
-    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should have a failing block, passed to pending, reported as &amp;quot;PENDING: for some reason&amp;quot;&lt;/span&gt;&lt;/dd&gt;
+    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should have a failing block, passed to pending, reported as &amp;quot;PENDING: for some reason&amp;quot; (PENDING: for some reason)&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
 &lt;script type=&quot;text/javascript&quot;&gt;document.getElementById('duration').innerHTML = &quot;Finished in &lt;strong&gt;x seconds&lt;/strong&gt;&quot;;&lt;/script&gt;</diff>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.4.html</filename>
    </modified>
    <modified>
      <diff>@@ -18,7 +18,6 @@
   &lt;/style&gt;
 &lt;/head&gt;
 &lt;body&gt;
-
 &lt;div class=&quot;rspec-report&quot;&gt;
   &lt;script type=&quot;text/javascript&quot;&gt;
     // &lt;![CDATA[
@@ -74,7 +73,7 @@ function makeYellow(element_id) {
   font-size: 1.2em;
 }
 
-.behaviour {
+.example_group {
   margin: 0 10px 5px;
   background: #fff;
 }
@@ -177,22 +176,23 @@ a {
 &lt;/div&gt;
 
 &lt;div class=&quot;results&quot;&gt;
-
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_1&quot;&gt;Mocker&lt;/dt&gt;
+  &lt;dt id=&quot;example_group_1&quot;&gt;Mocker&lt;/dt&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('5.8');&lt;/script&gt;
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;should be able to call mock()&lt;/span&gt;&lt;/dd&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;makeRed('rspec-header');&lt;/script&gt;
-    &lt;script type=&quot;text/javascript&quot;&gt;makeRed('behaviour_1');&lt;/script&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;makeRed('example_group_1');&lt;/script&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('11.7');&lt;/script&gt;
     &lt;dd class=&quot;spec failed&quot;&gt;
       &lt;span class=&quot;failed_spec_name&quot;&gt;should fail when expected message not received&lt;/span&gt;
       &lt;div class=&quot;failure&quot; id=&quot;failure_1&quot;&gt;
         &lt;div class=&quot;message&quot;&gt;&lt;pre&gt;Mock 'poke me' expected :poke with (any args) once, but received it 0 times&lt;/pre&gt;&lt;/div&gt;
-        &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;./failing_examples/mocking_example.rb:13:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:&lt;/pre&gt;&lt;/div&gt;
+        &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/mocking_example.rb:13:in `should_receive'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:24:in `run'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `instance_eval'&lt;/pre&gt;&lt;/div&gt;
     &lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;&lt;span class=&quot;linenum&quot;&gt;11&lt;/span&gt;  it &quot;should fail when expected message not received&quot; do
 &lt;span class=&quot;linenum&quot;&gt;12&lt;/span&gt;    mock = mock(&quot;poke me&quot;)
 &lt;span class=&quot;offending&quot;&gt;&lt;span class=&quot;linenum&quot;&gt;13&lt;/span&gt;    mock.should_receive(:poke)&lt;/span&gt;
@@ -206,9 +206,12 @@ a {
       &lt;span class=&quot;failed_spec_name&quot;&gt;should fail when messages are received out of order&lt;/span&gt;
       &lt;div class=&quot;failure&quot; id=&quot;failure_2&quot;&gt;
         &lt;div class=&quot;message&quot;&gt;&lt;pre&gt;Mock 'one two three' received :three out of order&lt;/pre&gt;&lt;/div&gt;
-        &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;./failing_examples/mocking_example.rb:22:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:&lt;/pre&gt;&lt;/div&gt;
+        &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/mocking_example.rb:22:in `three'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/mocking_example.rb:16:in `instance_eval'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:24:in `run'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `instance_eval'&lt;/pre&gt;&lt;/div&gt;
     &lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;&lt;span class=&quot;linenum&quot;&gt;20&lt;/span&gt;    mock.should_receive(:three).ordered
 &lt;span class=&quot;linenum&quot;&gt;21&lt;/span&gt;    mock.one
 &lt;span class=&quot;offending&quot;&gt;&lt;span class=&quot;linenum&quot;&gt;22&lt;/span&gt;    mock.three&lt;/span&gt;
@@ -222,9 +225,11 @@ a {
       &lt;span class=&quot;failed_spec_name&quot;&gt;should get yelled at when sending unexpected messages&lt;/span&gt;
       &lt;div class=&quot;failure&quot; id=&quot;failure_3&quot;&gt;
         &lt;div class=&quot;message&quot;&gt;&lt;pre&gt;Mock 'don't talk to me' expected :any_message_at_all with (any args) 0 times, but received it once&lt;/pre&gt;&lt;/div&gt;
-        &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;./failing_examples/mocking_example.rb:28:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:&lt;/pre&gt;&lt;/div&gt;
+        &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/mocking_example.rb:28:in `should_not_receive'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:24:in `run'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `instance_eval'&lt;/pre&gt;&lt;/div&gt;
     &lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;&lt;span class=&quot;linenum&quot;&gt;26&lt;/span&gt;  it &quot;should get yelled at when sending unexpected messages&quot; do
 &lt;span class=&quot;linenum&quot;&gt;27&lt;/span&gt;    mock = mock(&quot;don't talk to me&quot;)
 &lt;span class=&quot;offending&quot;&gt;&lt;span class=&quot;linenum&quot;&gt;28&lt;/span&gt;    mock.should_not_receive(:any_message_at_all)&lt;/span&gt;
@@ -238,9 +243,12 @@ a {
       &lt;span class=&quot;failed_spec_name&quot;&gt;has a bug we need to fix&lt;/span&gt;
       &lt;div class=&quot;failure&quot; id=&quot;failure_4&quot;&gt;
         &lt;div class=&quot;message&quot;&gt;&lt;pre&gt;Expected pending 'here is the bug' to fail. No Error was raised.&lt;/pre&gt;&lt;/div&gt;
-        &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;./failing_examples/mocking_example.rb:33:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:&lt;/pre&gt;&lt;/div&gt;
+        &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/mocking_example.rb:33:in `pending'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/mocking_example.rb:33:in `instance_eval'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:24:in `run'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `instance_eval'&lt;/pre&gt;&lt;/div&gt;
     &lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;&lt;span class=&quot;linenum&quot;&gt;31&lt;/span&gt;
 &lt;span class=&quot;linenum&quot;&gt;32&lt;/span&gt;  it &quot;has a bug we need to fix&quot; do
 &lt;span class=&quot;offending&quot;&gt;&lt;span class=&quot;linenum&quot;&gt;33&lt;/span&gt;    pending &quot;here is the bug&quot; do&lt;/span&gt;
@@ -251,10 +259,10 @@ a {
     &lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_2&quot;&gt;Running specs with --diff&lt;/dt&gt;
-    &lt;script type=&quot;text/javascript&quot;&gt;makeRed('behaviour_2');&lt;/script&gt;
+  &lt;dt id=&quot;example_group_2&quot;&gt;Running specs with --diff&lt;/dt&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;makeRed('example_group_2');&lt;/script&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('35.2');&lt;/script&gt;
     &lt;dd class=&quot;spec failed&quot;&gt;
       &lt;span class=&quot;failed_spec_name&quot;&gt;should print diff of different strings&lt;/span&gt;
@@ -268,10 +276,11 @@ Diff:
 +behaviour driven development
  framework for Ruby
 &lt;/pre&gt;&lt;/div&gt;
-        &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;./failing_examples/diffing_spec.rb:13:in `=='
-./failing_examples/diffing_spec.rb:13:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:&lt;/pre&gt;&lt;/div&gt;
+        &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/diffing_spec.rb:13:in `=='
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:24:in `run'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `instance_eval'&lt;/pre&gt;&lt;/div&gt;
     &lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;&lt;span class=&quot;linenum&quot;&gt;11&lt;/span&gt;framework for Ruby
 &lt;span class=&quot;linenum&quot;&gt;12&lt;/span&gt;EOF
 &lt;span class=&quot;offending&quot;&gt;&lt;span class=&quot;linenum&quot;&gt;13&lt;/span&gt;    usa.should == uk&lt;/span&gt;
@@ -301,9 +310,12 @@ Diff:
 +species=tortoise
  &amp;gt;
 &lt;/pre&gt;&lt;/div&gt;
-        &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;./failing_examples/diffing_spec.rb:34:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:&lt;/pre&gt;&lt;/div&gt;
+        &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/diffing_spec.rb:34:in `should'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/./failing_examples/diffing_spec.rb:31:in `instance_eval'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:24:in `run'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `chdir'
+/Users/david/projects/ruby/jruby/testsuites/rspec/target/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:20:in `instance_eval'&lt;/pre&gt;&lt;/div&gt;
     &lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;&lt;span class=&quot;linenum&quot;&gt;32&lt;/span&gt;    expected = Animal.new &quot;bob&quot;, &quot;giraffe&quot;
 &lt;span class=&quot;linenum&quot;&gt;33&lt;/span&gt;    actual   = Animal.new &quot;bob&quot;, &quot;tortoise&quot;
 &lt;span class=&quot;offending&quot;&gt;&lt;span class=&quot;linenum&quot;&gt;34&lt;/span&gt;    expected.should eql(actual)&lt;/span&gt;
@@ -314,16 +326,16 @@ Diff:
     &lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_3&quot;&gt;A consumer of a stub&lt;/dt&gt;
+  &lt;dt id=&quot;example_group_3&quot;&gt;A consumer of a stub&lt;/dt&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('47.0');&lt;/script&gt;
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;should be able to stub methods on any Object&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_4&quot;&gt;A stubbed method on a class&lt;/dt&gt;
+  &lt;dt id=&quot;example_group_4&quot;&gt;A stubbed method on a class&lt;/dt&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('52.9');&lt;/script&gt;
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;should return the stubbed value&lt;/span&gt;&lt;/dd&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('58.8');&lt;/script&gt;
@@ -332,9 +344,9 @@ Diff:
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;can stub! and mock the same message&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_5&quot;&gt;A mock&lt;/dt&gt;
+  &lt;dt id=&quot;example_group_5&quot;&gt;A mock&lt;/dt&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('70.5');&lt;/script&gt;
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;can stub!&lt;/span&gt;&lt;/dd&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('76.4');&lt;/script&gt;
@@ -343,28 +355,28 @@ Diff:
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;can stub! and mock the same message&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_6&quot;&gt;pending example (using pending method)&lt;/dt&gt;
-    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('behaviour_6');&lt;/script&gt;
+  &lt;dt id=&quot;example_group_6&quot;&gt;pending example (using pending method)&lt;/dt&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('example_group_6');&lt;/script&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('88.2');&lt;/script&gt;
-    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should be reported as &amp;quot;PENDING: for some reason&amp;quot;&lt;/span&gt;&lt;/dd&gt;
+    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should be reported as &amp;quot;PENDING: for some reason&amp;quot; (PENDING: for some reason)&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_7&quot;&gt;pending example (with no block)&lt;/dt&gt;
-    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('behaviour_7');&lt;/script&gt;
+  &lt;dt id=&quot;example_group_7&quot;&gt;pending example (with no block)&lt;/dt&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('example_group_7');&lt;/script&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('94.1');&lt;/script&gt;
-    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should be reported as &amp;quot;PENDING: Not Yet Implemented&amp;quot;&lt;/span&gt;&lt;/dd&gt;
+    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should be reported as &amp;quot;PENDING: Not Yet Implemented&amp;quot; (PENDING: Not Yet Implemented)&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_8&quot;&gt;pending example (with block for pending)&lt;/dt&gt;
-    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('behaviour_8');&lt;/script&gt;
+  &lt;dt id=&quot;example_group_8&quot;&gt;pending example (with block for pending)&lt;/dt&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('example_group_8');&lt;/script&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('100.0');&lt;/script&gt;
-    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should have a failing block, passed to pending, reported as &amp;quot;PENDING: for some reason&amp;quot;&lt;/span&gt;&lt;/dd&gt;
+    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should have a failing block, passed to pending, reported as &amp;quot;PENDING: for some reason&amp;quot; (PENDING: for some reason)&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
 &lt;script type=&quot;text/javascript&quot;&gt;document.getElementById('duration').innerHTML = &quot;Finished in &lt;strong&gt;x seconds&lt;/strong&gt;&quot;;&lt;/script&gt;</diff>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html</filename>
    </modified>
    <modified>
      <diff>@@ -73,7 +73,7 @@ function makeYellow(element_id) {
   font-size: 1.2em;
 }
 
-.behaviour {
+.example_group {
   margin: 0 10px 5px;
   background: #fff;
 }
@@ -176,13 +176,13 @@ a {
 &lt;/div&gt;
 
 &lt;div class=&quot;results&quot;&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_1&quot;&gt;Mocker&lt;/dt&gt;
+  &lt;dt id=&quot;example_group_1&quot;&gt;Mocker&lt;/dt&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('5.8');&lt;/script&gt;
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;should be able to call mock()&lt;/span&gt;&lt;/dd&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;makeRed('rspec-header');&lt;/script&gt;
-    &lt;script type=&quot;text/javascript&quot;&gt;makeRed('behaviour_1');&lt;/script&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;makeRed('example_group_1');&lt;/script&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('11.7');&lt;/script&gt;
     &lt;dd class=&quot;spec failed&quot;&gt;
       &lt;span class=&quot;failed_spec_name&quot;&gt;should fail when expected message not received&lt;/span&gt;
@@ -249,10 +249,10 @@ a {
     &lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_2&quot;&gt;Running specs with --diff&lt;/dt&gt;
-    &lt;script type=&quot;text/javascript&quot;&gt;makeRed('behaviour_2');&lt;/script&gt;
+  &lt;dt id=&quot;example_group_2&quot;&gt;Running specs with --diff&lt;/dt&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;makeRed('example_group_2');&lt;/script&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('35.2');&lt;/script&gt;
     &lt;dd class=&quot;spec failed&quot;&gt;
       &lt;span class=&quot;failed_spec_name&quot;&gt;should print diff of different strings&lt;/span&gt;
@@ -310,16 +310,16 @@ Diff:
     &lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_3&quot;&gt;A consumer of a stub&lt;/dt&gt;
+  &lt;dt id=&quot;example_group_3&quot;&gt;A consumer of a stub&lt;/dt&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('47.0');&lt;/script&gt;
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;should be able to stub methods on any Object&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_4&quot;&gt;A stubbed method on a class&lt;/dt&gt;
+  &lt;dt id=&quot;example_group_4&quot;&gt;A stubbed method on a class&lt;/dt&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('52.9');&lt;/script&gt;
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;should return the stubbed value&lt;/span&gt;&lt;/dd&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('58.8');&lt;/script&gt;
@@ -328,9 +328,9 @@ Diff:
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;can stub! and mock the same message&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_5&quot;&gt;A mock&lt;/dt&gt;
+  &lt;dt id=&quot;example_group_5&quot;&gt;A mock&lt;/dt&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('70.5');&lt;/script&gt;
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;can stub!&lt;/span&gt;&lt;/dd&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('76.4');&lt;/script&gt;
@@ -339,28 +339,28 @@ Diff:
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;can stub! and mock the same message&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_6&quot;&gt;pending example (using pending method)&lt;/dt&gt;
-    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('behaviour_6');&lt;/script&gt;
+  &lt;dt id=&quot;example_group_6&quot;&gt;pending example (using pending method)&lt;/dt&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('example_group_6');&lt;/script&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('88.2');&lt;/script&gt;
-    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should be reported as &amp;quot;PENDING: for some reason&amp;quot;&lt;/span&gt;&lt;/dd&gt;
+    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should be reported as &amp;quot;PENDING: for some reason&amp;quot; (PENDING: for some reason)&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_7&quot;&gt;pending example (with no block)&lt;/dt&gt;
-    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('behaviour_7');&lt;/script&gt;
+  &lt;dt id=&quot;example_group_7&quot;&gt;pending example (with no block)&lt;/dt&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('example_group_7');&lt;/script&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('94.1');&lt;/script&gt;
-    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should be reported as &amp;quot;PENDING: Not Yet Implemented&amp;quot;&lt;/span&gt;&lt;/dd&gt;
+    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should be reported as &amp;quot;PENDING: Not Yet Implemented&amp;quot; (PENDING: Not Yet Implemented)&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_8&quot;&gt;pending example (with block for pending)&lt;/dt&gt;
-    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('behaviour_8');&lt;/script&gt;
+  &lt;dt id=&quot;example_group_8&quot;&gt;pending example (with block for pending)&lt;/dt&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('example_group_8');&lt;/script&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('100.0');&lt;/script&gt;
-    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should have a failing block, passed to pending, reported as &amp;quot;PENDING: for some reason&amp;quot;&lt;/span&gt;&lt;/dd&gt;
+    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should have a failing block, passed to pending, reported as &amp;quot;PENDING: for some reason&amp;quot; (PENDING: for some reason)&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
 &lt;script type=&quot;text/javascript&quot;&gt;document.getElementById('duration').innerHTML = &quot;Finished in &lt;strong&gt;x seconds&lt;/strong&gt;&quot;;&lt;/script&gt;</diff>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.5.html</filename>
    </modified>
    <modified>
      <diff>@@ -73,7 +73,7 @@ function makeYellow(element_id) {
   font-size: 1.2em;
 }
 
-.behaviour {
+.example_group {
   margin: 0 10px 5px;
   background: #fff;
 }
@@ -176,22 +176,22 @@ a {
 &lt;/div&gt;
 
 &lt;div class=&quot;results&quot;&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_1&quot;&gt;Mocker&lt;/dt&gt;
+  &lt;dt id=&quot;example_group_1&quot;&gt;Mocker&lt;/dt&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('5.8');&lt;/script&gt;
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;should be able to call mock()&lt;/span&gt;&lt;/dd&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;makeRed('rspec-header');&lt;/script&gt;
-    &lt;script type=&quot;text/javascript&quot;&gt;makeRed('behaviour_1');&lt;/script&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;makeRed('example_group_1');&lt;/script&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('11.7');&lt;/script&gt;
     &lt;dd class=&quot;spec failed&quot;&gt;
       &lt;span class=&quot;failed_spec_name&quot;&gt;should fail when expected message not received&lt;/span&gt;
       &lt;div class=&quot;failure&quot; id=&quot;failure_1&quot;&gt;
         &lt;div class=&quot;message&quot;&gt;&lt;pre&gt;Mock 'poke me' expected :poke with (any args) once, but received it 0 times&lt;/pre&gt;&lt;/div&gt;
         &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;./failing_examples/mocking_example.rb:13:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:&lt;/pre&gt;&lt;/div&gt;
+/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:25:
+/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:in `chdir'
+/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:&lt;/pre&gt;&lt;/div&gt;
     &lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;&lt;span class=&quot;linenum&quot;&gt;11&lt;/span&gt;  &lt;span class=&quot;ident&quot;&gt;it&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;should fail when expected message not received&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;
 &lt;span class=&quot;linenum&quot;&gt;12&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;mock&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;mock&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;poke me&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;)&lt;/span&gt;
 &lt;span class=&quot;offending&quot;&gt;&lt;span class=&quot;linenum&quot;&gt;13&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;mock&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;should_receive&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;symbol&quot;&gt;:poke&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
@@ -205,9 +205,9 @@ a {
       &lt;div class=&quot;failure&quot; id=&quot;failure_2&quot;&gt;
         &lt;div class=&quot;message&quot;&gt;&lt;pre&gt;Mock 'one two three' received :three out of order&lt;/pre&gt;&lt;/div&gt;
         &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;./failing_examples/mocking_example.rb:22:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:&lt;/pre&gt;&lt;/div&gt;
+/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:25:
+/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:in `chdir'
+/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:&lt;/pre&gt;&lt;/div&gt;
     &lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;&lt;span class=&quot;linenum&quot;&gt;20&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;mock&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;should_receive&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;symbol&quot;&gt;:three&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;ordered&lt;/span&gt;
 &lt;span class=&quot;linenum&quot;&gt;21&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;mock&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;one&lt;/span&gt;
 &lt;span class=&quot;offending&quot;&gt;&lt;span class=&quot;linenum&quot;&gt;22&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;mock&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;three&lt;/span&gt;&lt;/span&gt;
@@ -219,15 +219,14 @@ a {
     &lt;dd class=&quot;spec failed&quot;&gt;
       &lt;span class=&quot;failed_spec_name&quot;&gt;should get yelled at when sending unexpected messages&lt;/span&gt;
       &lt;div class=&quot;failure&quot; id=&quot;failure_3&quot;&gt;
-        &lt;div class=&quot;message&quot;&gt;&lt;pre&gt;Mock 'don't talk to me' expected :any_message_at_all with (any args) 0 times, but received it once&lt;/pre&gt;&lt;/div&gt;
-        &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;./failing_examples/mocking_example.rb:28:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:&lt;/pre&gt;&lt;/div&gt;
-    &lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;&lt;span class=&quot;linenum&quot;&gt;26&lt;/span&gt;  &lt;span class=&quot;ident&quot;&gt;it&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;should get yelled at when sending unexpected messages&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;
-&lt;span class=&quot;linenum&quot;&gt;27&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;mock&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;mock&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;don't talk to me&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;)&lt;/span&gt;
-&lt;span class=&quot;offending&quot;&gt;&lt;span class=&quot;linenum&quot;&gt;28&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;mock&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;should_not_receive&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;symbol&quot;&gt;:any_message_at_all&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
-&lt;span class=&quot;linenum&quot;&gt;29&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;mock&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;any_message_at_all&lt;/span&gt;
+        &lt;div class=&quot;message&quot;&gt;&lt;pre&gt;Mock 'don't talk to me' expected :any_message_at_all with (no args) 0 times, but received it once&lt;/pre&gt;&lt;/div&gt;
+        &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;./failing_examples/mocking_example.rb:29:
+/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:25:
+/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:in `chdir'
+/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:&lt;/pre&gt;&lt;/div&gt;
+    &lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;&lt;span class=&quot;linenum&quot;&gt;27&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;mock&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;mock&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;don't talk to me&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;)&lt;/span&gt;
+&lt;span class=&quot;linenum&quot;&gt;28&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;mock&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;should_not_receive&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;symbol&quot;&gt;:any_message_at_all&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt;
+&lt;span class=&quot;offending&quot;&gt;&lt;span class=&quot;linenum&quot;&gt;29&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;mock&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;any_message_at_all&lt;/span&gt;&lt;/span&gt;
 &lt;span class=&quot;linenum&quot;&gt;30&lt;/span&gt;  &lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
       &lt;/div&gt;
     &lt;/dd&gt;
@@ -237,9 +236,9 @@ a {
       &lt;div class=&quot;failure&quot; id=&quot;failure_4&quot;&gt;
         &lt;div class=&quot;message&quot;&gt;&lt;pre&gt;Expected pending 'here is the bug' to fail. No Error was raised.&lt;/pre&gt;&lt;/div&gt;
         &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;./failing_examples/mocking_example.rb:33:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:&lt;/pre&gt;&lt;/div&gt;
+/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:25:
+/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:in `chdir'
+/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:&lt;/pre&gt;&lt;/div&gt;
     &lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;&lt;span class=&quot;linenum&quot;&gt;31&lt;/span&gt;
 &lt;span class=&quot;linenum&quot;&gt;32&lt;/span&gt;  &lt;span class=&quot;ident&quot;&gt;it&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;has a bug we need to fix&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;
 &lt;span class=&quot;offending&quot;&gt;&lt;span class=&quot;linenum&quot;&gt;33&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;pending&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;here is the bug&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;&lt;/span&gt;
@@ -249,10 +248,10 @@ a {
     &lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_2&quot;&gt;Running specs with --diff&lt;/dt&gt;
-    &lt;script type=&quot;text/javascript&quot;&gt;makeRed('behaviour_2');&lt;/script&gt;
+  &lt;dt id=&quot;example_group_2&quot;&gt;Running specs with --diff&lt;/dt&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;makeRed('example_group_2');&lt;/script&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('35.2');&lt;/script&gt;
     &lt;dd class=&quot;spec failed&quot;&gt;
       &lt;span class=&quot;failed_spec_name&quot;&gt;should print diff of different strings&lt;/span&gt;
@@ -262,14 +261,14 @@ a {
 Diff:
 @@ -1,4 +1,4 @@
  RSpec is a
--behavior driven development
-+behaviour driven development
+-behaviour driven development
++behavior driven development
  framework for Ruby
 &lt;/pre&gt;&lt;/div&gt;
         &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;./failing_examples/diffing_spec.rb:13:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:&lt;/pre&gt;&lt;/div&gt;
+/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:25:
+/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:in `chdir'
+/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:&lt;/pre&gt;&lt;/div&gt;
     &lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;&lt;span class=&quot;linenum&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;framework&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;Ruby&lt;/span&gt;
 &lt;span class=&quot;linenum&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;constant&quot;&gt;EOF&lt;/span&gt;
 &lt;span class=&quot;offending&quot;&gt;&lt;span class=&quot;linenum&quot;&gt;13&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;usa&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;should&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;uk&lt;/span&gt;&lt;/span&gt;
@@ -293,14 +292,14 @@ Diff:
 @@ -1,5 +1,5 @@
  &amp;lt;Animal
  name=bob,
--species=giraffe
-+species=tortoise
+-species=tortoise
++species=giraffe
  &amp;gt;
 &lt;/pre&gt;&lt;/div&gt;
         &lt;div class=&quot;backtrace&quot;&gt;&lt;pre&gt;./failing_examples/diffing_spec.rb:34:
-./spec/spec/runner/formatter/html_formatter_spec.rb:17:
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:in `chdir'
-./spec/spec/runner/formatter/html_formatter_spec.rb:13:&lt;/pre&gt;&lt;/div&gt;
+/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:25:
+/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:in `chdir'
+/Users/david/projects/ruby/rspec/rspec/spec/spec/runner/formatter/html_formatter_spec.rb:21:&lt;/pre&gt;&lt;/div&gt;
     &lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;&lt;span class=&quot;linenum&quot;&gt;32&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;expected&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;Animal&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;bob&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;,&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;giraffe&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;
 &lt;span class=&quot;linenum&quot;&gt;33&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;actual&lt;/span&gt;   &lt;span class=&quot;punct&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;constant&quot;&gt;Animal&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;bob&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;,&lt;/span&gt; &lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;tortoise&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;&amp;quot;&lt;/span&gt;
 &lt;span class=&quot;offending&quot;&gt;&lt;span class=&quot;linenum&quot;&gt;34&lt;/span&gt;    &lt;span class=&quot;ident&quot;&gt;expected&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;should&lt;/span&gt; &lt;span class=&quot;ident&quot;&gt;eql&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ident&quot;&gt;actual&lt;/span&gt;&lt;span class=&quot;punct&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
@@ -310,16 +309,16 @@ Diff:
     &lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_3&quot;&gt;A consumer of a stub&lt;/dt&gt;
+  &lt;dt id=&quot;example_group_3&quot;&gt;A consumer of a stub&lt;/dt&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('47.0');&lt;/script&gt;
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;should be able to stub methods on any Object&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_4&quot;&gt;A stubbed method on a class&lt;/dt&gt;
+  &lt;dt id=&quot;example_group_4&quot;&gt;A stubbed method on a class&lt;/dt&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('52.9');&lt;/script&gt;
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;should return the stubbed value&lt;/span&gt;&lt;/dd&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('58.8');&lt;/script&gt;
@@ -328,9 +327,9 @@ Diff:
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;can stub! and mock the same message&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_5&quot;&gt;A mock&lt;/dt&gt;
+  &lt;dt id=&quot;example_group_5&quot;&gt;A mock&lt;/dt&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('70.5');&lt;/script&gt;
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;can stub!&lt;/span&gt;&lt;/dd&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('76.4');&lt;/script&gt;
@@ -339,28 +338,28 @@ Diff:
     &lt;dd class=&quot;spec passed&quot;&gt;&lt;span class=&quot;passed_spec_name&quot;&gt;can stub! and mock the same message&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_6&quot;&gt;pending example (using pending method)&lt;/dt&gt;
-    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('behaviour_6');&lt;/script&gt;
+  &lt;dt id=&quot;example_group_6&quot;&gt;pending example (using pending method)&lt;/dt&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('example_group_6');&lt;/script&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('88.2');&lt;/script&gt;
-    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should be reported as &amp;quot;PENDING: for some reason&amp;quot;&lt;/span&gt;&lt;/dd&gt;
+    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should be reported as &amp;quot;PENDING: for some reason&amp;quot; (PENDING: for some reason)&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_7&quot;&gt;pending example (with no block)&lt;/dt&gt;
-    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('behaviour_7');&lt;/script&gt;
+  &lt;dt id=&quot;example_group_7&quot;&gt;pending example (with no block)&lt;/dt&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('example_group_7');&lt;/script&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('94.1');&lt;/script&gt;
-    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should be reported as &amp;quot;PENDING: Not Yet Implemented&amp;quot;&lt;/span&gt;&lt;/dd&gt;
+    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should be reported as &amp;quot;PENDING: Not Yet Implemented&amp;quot; (PENDING: Not Yet Implemented)&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
-&lt;div class=&quot;behaviour&quot;&gt;
+&lt;div class=&quot;example_group&quot;&gt;
   &lt;dl&gt;
-  &lt;dt id=&quot;behaviour_8&quot;&gt;pending example (with block for pending)&lt;/dt&gt;
-    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('behaviour_8');&lt;/script&gt;
+  &lt;dt id=&quot;example_group_8&quot;&gt;pending example (with block for pending)&lt;/dt&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;makeYellow('example_group_8');&lt;/script&gt;
     &lt;script type=&quot;text/javascript&quot;&gt;moveProgressBar('100.0');&lt;/script&gt;
-    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should have a failing block, passed to pending, reported as &amp;quot;PENDING: for some reason&amp;quot;&lt;/span&gt;&lt;/dd&gt;
+    &lt;dd class=&quot;spec not_implemented&quot;&gt;&lt;span class=&quot;not_implemented_spec_name&quot;&gt;should have a failing block, passed to pending, reported as &amp;quot;PENDING: for some reason&amp;quot; (PENDING: for some reason)&lt;/span&gt;&lt;/dd&gt;
   &lt;/dl&gt;
 &lt;/div&gt;
 &lt;script type=&quot;text/javascript&quot;&gt;document.getElementById('duration').innerHTML = &quot;Finished in &lt;strong&gt;x seconds&lt;/strong&gt;&quot;;&lt;/script&gt;</diff>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/html_formatted-1.8.6.html</filename>
    </modified>
    <modified>
      <diff>@@ -1,57 +1,63 @@
 require File.dirname(__FILE__) + '/../../../spec_helper'
 require 'hpricot' # Needed to compare generated with wanted HTML
-
-describe &quot;HtmlFormatter&quot; do
-  it_should_behave_like &quot;Test::Unit io sink&quot;
-  ['--diff', '--dry-run'].each do |opt|
-    it &quot;should produce HTML identical to the one we designed manually with #{opt}&quot; do
-      root = File.expand_path(File.dirname(__FILE__) + '/../../../..')
-      suffix = PLATFORM == 'java' ? '-jruby' : ''
-      expected_file = File.dirname(__FILE__) + &quot;/html_formatted-#{VERSION}#{suffix}.html&quot;
-      raise &quot;There is no HTML file with expected content for this platform: #{expected_file}&quot; unless File.file?(expected_file)
-      expected_html = File.read(expected_file)
-      raise &quot;There should be no absolute paths in html_formatted.html!!&quot; if (expected_html =~ /\/Users/n || expected_html =~ /\/home/n)
-
-      Dir.chdir(root) do
-        args = ['failing_examples/mocking_example.rb', 'failing_examples/diffing_spec.rb', 'examples/stubbing_example.rb',  'examples/pending_example.rb', '--format', 'html', opt]
-        err = StringIO.new
-        out = StringIO.new
-        Spec::Runner::CommandLine.run(
-          args,
-          err,
-          out
-        )
-
-        seconds = /\d+\.\d+ seconds/
-        html = out.string.gsub seconds, 'x seconds'
-        expected_html.gsub! seconds, 'x seconds'
-
-        if opt == '--diff'
-          # Uncomment this line temporarily in order to overwrite the expected with actual.
-          # Use with care!!!
-          # File.open(expected_file, 'w') {|io| io.write(html)}
-
-          doc = Hpricot(html)
-          backtraces = doc.search(&quot;div.backtrace&quot;).collect {|e| e.at(&quot;/pre&quot;).inner_html}
-          doc.search(&quot;div.backtrace&quot;).remove
-
-          expected_doc = Hpricot(expected_html)
-          expected_backtraces = expected_doc.search(&quot;div.backtrace&quot;).collect {|e| e.at(&quot;/pre&quot;).inner_html}
-          expected_doc.search(&quot;div.backtrace&quot;).remove
-
-          doc.inner_html.should == expected_doc.inner_html
-
-          expected_backtraces.each_with_index do |expected_line, i|
-            expected_path, expected_line_number, expected_suffix = expected_line.split(':')
-            actual_path, actual_line_number, actual_suffix = backtraces[i].split(':')
-            File.expand_path(actual_path).should == File.expand_path(expected_path)
-            actual_line_number.should == expected_line_number
+require 'spec/runner/formatter/html_formatter'
+
+module Spec
+  module Runner
+    module Formatter
+      describe HtmlFormatter do
+        ['--diff', '--dry-run'].each do |opt|
+          def jruby?
+            PLATFORM == 'java'
+          end
+    
+          it &quot;should produce HTML identical to the one we designed manually with #{opt}&quot; do
+            root = File.expand_path(File.dirname(__FILE__) + '/../../../..')
+            suffix = jruby? ? '-jruby' : ''
+            expected_file = File.dirname(__FILE__) + &quot;/html_formatted-#{::VERSION}#{suffix}.html&quot;
+            raise &quot;There is no HTML file with expected content for this platform: #{expected_file}&quot; unless File.file?(expected_file)
+            expected_html = File.read(expected_file)
+
+            Dir.chdir(root) do
+              args = ['failing_examples/mocking_example.rb', 'failing_examples/diffing_spec.rb', 'examples/pure/stubbing_example.rb',  'examples/pure/pending_example.rb', '--format', 'html', opt]
+              err = StringIO.new
+              out = StringIO.new
+              CommandLine.run(
+                OptionParser.parse(args, err, out)
+              )
+
+              seconds = /\d+\.\d+ seconds/
+              html = out.string.gsub seconds, 'x seconds'
+              expected_html.gsub! seconds, 'x seconds'
+
+              if opt == '--diff'
+                # Uncomment this line temporarily in order to overwrite the expected with actual.
+                # Use with care!!!
+                # File.open(expected_file, 'w') {|io| io.write(html)}
+
+                doc = Hpricot(html)
+                backtraces = doc.search(&quot;div.backtrace&quot;).collect {|e| e.at(&quot;/pre&quot;).inner_html}
+                doc.search(&quot;div.backtrace&quot;).remove
+
+                expected_doc = Hpricot(expected_html)
+                expected_backtraces = expected_doc.search(&quot;div.backtrace&quot;).collect {|e| e.at(&quot;/pre&quot;).inner_html}
+                expected_doc.search(&quot;div.backtrace&quot;).remove
+
+                doc.inner_html.should == expected_doc.inner_html
+
+                expected_backtraces.each_with_index do |expected_line, i|
+                  expected_path, expected_line_number, expected_suffix = expected_line.split(':')
+                  actual_path, actual_line_number, actual_suffix = backtraces[i].split(':')
+                  File.expand_path(actual_path).should == File.expand_path(expected_path)
+                  actual_line_number.should == expected_line_number
+                end
+              else
+                html.should =~ /This was a dry-run/m
+              end
+            end
           end
-        else
-          html.should =~ /This was a dry-run/m
         end
       end
     end
   end
-  
 end</diff>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/html_formatter_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 require File.dirname(__FILE__) + '/../../../spec_helper.rb'
+require 'spec/runner/formatter/progress_bar_formatter'
 
 module Spec
   module Runner
@@ -6,8 +7,10 @@ module Spec
       describe ProgressBarFormatter do
         before(:each) do
           @io = StringIO.new
-          @options = Options.new(StringIO.new, @io)
-          @formatter = @options.create_formatter(ProgressBarFormatter)
+          @options = mock('options')
+          @options.stub!(:dry_run).and_return(false)
+          @options.stub!(:colour).and_return(false)
+          @formatter = ProgressBarFormatter.new(@options, @io)
         end
 
         it &quot;should produce line break on start dump&quot; do
@@ -21,7 +24,12 @@ module Spec
         end
         
         it &quot;should produce standard summary&quot; do
-          @formatter.example_pending(&quot;behaviour&quot;, &quot;example&quot;, &quot;message&quot;)  
+          example_group = ExampleGroup.describe(&quot;example_group&quot;) do
+            specify &quot;example&quot; do
+            end
+          end
+          example = example_group.examples.first
+          @formatter.example_pending(example, &quot;message&quot;)
           @io.rewind
           @formatter.dump_summary(3, 2, 1, 1)
           @io.string.should eql(%Q|
@@ -33,29 +41,29 @@ Finished in 3 seconds
 
         it &quot;should push green dot for passing spec&quot; do
           @io.should_receive(:tty?).and_return(true)
-          @options.colour = true
+          @options.should_receive(:colour).and_return(true)
           @formatter.example_passed(&quot;spec&quot;)
           @io.string.should == &quot;\e[32m.\e[0m&quot;
         end
 
         it &quot;should push red F for failure spec&quot; do
           @io.should_receive(:tty?).and_return(true)
-          @options.colour = true
+          @options.should_receive(:colour).and_return(true)
           @formatter.example_failed(&quot;spec&quot;, 98, Reporter::Failure.new(&quot;c s&quot;, Spec::Expectations::ExpectationNotMetError.new))
           @io.string.should eql(&quot;\e[31mF\e[0m&quot;)
         end
 
         it &quot;should push magenta F for error spec&quot; do
           @io.should_receive(:tty?).and_return(true)
-          @options.colour = true
+          @options.should_receive(:colour).and_return(true)
           @formatter.example_failed(&quot;spec&quot;, 98, Reporter::Failure.new(&quot;c s&quot;, RuntimeError.new))
           @io.string.should eql(&quot;\e[35mF\e[0m&quot;)
         end
 
         it &quot;should push blue F for fixed pending spec&quot; do
           @io.should_receive(:tty?).and_return(true)
-          @options.colour = true
-          @formatter.example_failed(&quot;spec&quot;, 98, Reporter::Failure.new(&quot;c s&quot;, Spec::DSL::PendingFixedError.new))
+          @options.should_receive(:colour).and_return(true)
+          @formatter.example_failed(&quot;spec&quot;, 98, Reporter::Failure.new(&quot;c s&quot;, Spec::Example::PendingExampleFixedError.new))
           @io.string.should eql(&quot;\e[34mF\e[0m&quot;)
         end
 
@@ -81,18 +89,23 @@ EOE
         end
         
         it &quot;should dump pending&quot; do
-          @formatter.example_pending(&quot;behaviour&quot;, &quot;example&quot;, &quot;message&quot;)
+          example_group = ExampleGroup.describe(&quot;example_group&quot;) do
+            specify &quot;example&quot; do
+            end
+          end
+          example = example_group.examples.first
+          @formatter.example_pending(example, &quot;message&quot;)
           @formatter.dump_pending
-          @io.string.should =~ /Pending\:\nbehaviour example \(message\)\n/
+          @io.string.should =~ /Pending\:\nexample_group example \(message\)\n/
         end
       end
       
       describe &quot;ProgressBarFormatter outputting to custom out&quot; do
         before(:each) do
           @out = mock(&quot;out&quot;)
-          @options = Options.new(StringIO.new, @out)
+          @options = mock('options')
           @out.stub!(:puts)
-          @formatter = @options.create_formatter(ProgressBarFormatter)
+          @formatter = ProgressBarFormatter.new(@options, @out)
           @formatter.class.send :public, :output_to_tty?
         end
 
@@ -105,6 +118,20 @@ EOE
           @formatter.output_to_tty?.should be_false
         end
       end
+
+      describe ProgressBarFormatter, &quot;dry run&quot; do
+        before(:each) do
+          @io = StringIO.new
+          options = mock('options')
+          options.stub!(:dry_run).and_return(true)
+          @formatter = ProgressBarFormatter.new(options, @io)
+        end
+      
+        it &quot;should not produce summary on dry run&quot; do
+          @formatter.dump_summary(3, 2, 1, 0)
+          @io.string.should eql(&quot;&quot;)
+        end
+      end
     end
   end
 end</diff>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,18 @@
 require File.dirname(__FILE__) + '/../../../spec_helper.rb'
+require 'spec/runner/formatter/snippet_extractor'
 
-describe Spec::Runner::Formatter::SnippetExtractor do
-  it &quot;should fall back on a default message when it doesn't understand a line&quot; do
-    Spec::Runner::Formatter::SnippetExtractor.new.snippet_for(&quot;blech&quot;).should == [&quot;# Couldn't get snippet for blech&quot;, 1]
-  end
+module Spec
+  module Runner
+    module Formatter
+      describe SnippetExtractor do
+        it &quot;should fall back on a default message when it doesn't understand a line&quot; do
+          SnippetExtractor.new.snippet_for(&quot;blech&quot;).should == [&quot;# Couldn't get snippet for blech&quot;, 1]
+        end
 
-  it &quot;should fall back on a default message when it doesn't find the file&quot; do
-    Spec::Runner::Formatter::SnippetExtractor.new.lines_around(&quot;blech&quot;, 8).should == &quot;# Couldn't get snippet for blech&quot;
+        it &quot;should fall back on a default message when it doesn't find the file&quot; do
+          SnippetExtractor.new.lines_around(&quot;blech&quot;, 8).should == &quot;# Couldn't get snippet for blech&quot;
+        end
+      end
+    end
   end
-end
+end
\ No newline at end of file</diff>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/snippet_extractor_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,63 +1,128 @@
 require File.dirname(__FILE__) + '/../../../spec_helper.rb'
+require 'spec/runner/formatter/specdoc_formatter'
 
 module Spec
   module Runner
     module Formatter
-      describe &quot;SpecdocFormatter&quot; do
+      describe SpecdocFormatter do
+        it_should_behave_like &quot;sandboxed rspec_options&quot;
+        attr_reader :io, :options, :formatter, :example_group
         before(:each) do
           @io = StringIO.new
-          @options = Options.new(StringIO.new, @io)
-          @formatter = @options.create_formatter(SpecdocFormatter)
-          @behaviour = Class.new(::Spec::DSL::Example).describe(&quot;My Behaviour&quot;)
+          options.stub!(:dry_run).and_return(false)
+          options.stub!(:colour).and_return(false)
+          @formatter = SpecdocFormatter.new(options, io)
+          @example_group = ::Spec::Example::ExampleGroup.describe(&quot;ExampleGroup&quot;) do
+            specify &quot;example&quot; do
+            end
+          end
         end
 
-        it &quot;should produce standard summary without pending when pending has a 0 count&quot; do
-          @formatter.dump_summary(3, 2, 1, 0)
-          @io.string.should eql(&quot;\nFinished in 3 seconds\n\n2 examples, 1 failure\n&quot;)
-        end
+        describe &quot;where ExampleGroup has no superclasss with a description&quot; do
+          before do
+            formatter.add_example_group(example_group)
+          end
 
-        it &quot;should produce standard summary&quot; do
-          @formatter.dump_summary(3, 2, 1, 4)
-          @io.string.should eql(&quot;\nFinished in 3 seconds\n\n2 examples, 1 failure, 4 pending\n&quot;)
-        end
+          it &quot;should produce standard summary without pending when pending has a 0 count&quot; do
+            formatter.dump_summary(3, 2, 1, 0)
+            io.string.should have_example_group_output(&quot;\nFinished in 3 seconds\n\n2 examples, 1 failure\n&quot;)
+          end
 
-        it &quot;should push context name&quot; do
-          @formatter.add_behaviour(Spec::DSL::BehaviourDescription.new(&quot;context&quot;))
-          @io.string.should eql(&quot;\ncontext\n&quot;)
-        end
+          it &quot;should produce standard summary&quot; do
+            formatter.dump_summary(3, 2, 1, 4)
+            io.string.should have_example_group_output(&quot;\nFinished in 3 seconds\n\n2 examples, 1 failure, 4 pending\n&quot;)
+          end
 
-        it &quot;should push failing spec name and failure number&quot; do
-          @formatter.example_failed(@behaviour.create_example_definition(&quot;spec&quot;), 98, Reporter::Failure.new(&quot;c s&quot;, RuntimeError.new))
-          @io.string.should eql(&quot;- spec (ERROR - 98)\n&quot;)
-        end
+          it &quot;should push ExampleGroup name&quot; do
+            io.string.should eql(&quot;\nExampleGroup\n&quot;)
+          end
 
-        it &quot;should push nothing on start&quot; do
-          @formatter.start(5)
-          @io.string.should eql(&quot;&quot;)
-        end
+          it &quot;when having an error, should push failing spec name and failure number&quot; do
+            formatter.example_failed(
+            example_group.it(&quot;spec&quot;),
+            98,
+            Reporter::Failure.new(&quot;c s&quot;, RuntimeError.new)
+            )
+            io.string.should have_example_group_output(&quot;- spec (ERROR - 98)\n&quot;)
+          end
 
-        it &quot;should push nothing on start dump&quot; do
-          @formatter.start_dump
-          @io.string.should eql(&quot;&quot;)
-        end
+          it &quot;when having an expectation failure, should push failing spec name and failure number&quot; do
+            formatter.example_failed(
+            example_group.it(&quot;spec&quot;),
+            98,
+            Reporter::Failure.new(&quot;c s&quot;, Spec::Expectations::ExpectationNotMetError.new)
+            )
+            io.string.should have_example_group_output(&quot;- spec (FAILED - 98)\n&quot;)
+          end
 
-        it &quot;should push passing spec name&quot; do
-          @formatter.example_passed(@behaviour.create_example_definition(&quot;spec&quot;))
-          @io.string.should eql(&quot;- spec\n&quot;)
-        end
+          it &quot;should push nothing on start&quot; do
+            formatter.start(5)
+            io.string.should have_example_group_output(&quot;&quot;)
+          end
 
-        it &quot;should push pending example name and message&quot; do
-          @formatter.example_pending('behaviour', 'example','reason')
-          @io.string.should eql(&quot;- example (PENDING: reason)\n&quot;)
-        end
+          it &quot;should push nothing on start dump&quot; do
+            formatter.start_dump
+            io.string.should have_example_group_output(&quot;&quot;)
+          end
 
-        it &quot;should dump pending&quot; do
-          @formatter.example_pending('behaviour', 'example','reason')
-          @io.rewind
-          @formatter.dump_pending
-          @io.string.should =~ /Pending\:\nbehaviour example \(reason\)\n/
+          it &quot;should push passing spec name&quot; do
+            formatter.example_passed(example_group.it(&quot;spec&quot;))
+            io.string.should have_example_group_output(&quot;- spec\n&quot;)
+          end
+
+          it &quot;should push pending example name and message&quot; do
+            formatter.example_pending(example_group.examples.first, 'reason')
+            io.string.should have_example_group_output(&quot;- example (PENDING: reason)\n&quot;)
+          end
+
+          it &quot;should dump pending&quot; do
+            formatter.example_pending(example_group.examples.first, 'reason')
+            io.rewind
+            formatter.dump_pending
+            io.string.should =~ /Pending\:\nExampleGroup example \(reason\)\n/
+          end
+
+          def have_example_group_output(expected_output)
+            expected = &quot;\nExampleGroup\n#{expected_output}&quot;
+            ::Spec::Matchers::SimpleMatcher.new(expected) do |actual|
+              actual == expected
+            end
+          end
         end
 
+        describe &quot;where ExampleGroup has two superclasses with a description&quot; do
+          attr_reader :child_example_group, :grand_child_example_group
+          before do
+            @child_example_group = Class.new(example_group).describe(&quot;Child ExampleGroup&quot;)
+            @grand_child_example_group = Class.new(child_example_group).describe(&quot;GrandChild ExampleGroup&quot;)
+            formatter.add_example_group(grand_child_example_group)
+          end
+
+          specify &quot;when having an error, should push failing spec name and failure number&quot; do
+            formatter.example_failed(
+              example_group.it(&quot;spec&quot;),
+              98,
+              Reporter::Failure.new(&quot;c s&quot;, RuntimeError.new)
+            )
+            io.string.should have_nested_example_group_output(&quot;- spec (ERROR - 98)\n&quot;)
+          end
+
+          specify &quot;when having an expectation failure, should push failing spec name and failure number&quot; do
+            formatter.example_failed(
+              example_group.it(&quot;spec&quot;),
+              98,
+              Reporter::Failure.new(&quot;c s&quot;, Spec::Expectations::ExpectationNotMetError.new)
+            )
+            io.string.should have_nested_example_group_output(&quot;- spec (FAILED - 98)\n&quot;)
+          end
+
+          def have_nested_example_group_output(expected_output)
+            expected_full_output = &quot;\nExampleGroup Child ExampleGroup GrandChild ExampleGroup\n#{expected_output}&quot;
+            ::Spec::Matchers::SimpleMatcher.new(expected_full_output) do |actual|
+              actual == expected_full_output
+            end
+          end
+        end
       end
     end
   end</diff>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/specdoc_formatter_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -59,4 +59,20 @@ unless [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM}
       heckle_runner.heckle_with
     end
   end
+  
+  describe &quot;Heckler&quot; do
+    it &quot;should say yes to tests_pass? if specs pass&quot; do
+      options = mock(&quot;options&quot;, :null_object =&gt; true)
+      options.should_receive(:run_examples).and_return(true)
+      heckler = Spec::Runner::Heckler.new(&quot;Foo&quot;, nil, options)
+      heckler.tests_pass?.should be_true
+    end
+
+    it &quot;should say no to tests_pass? if specs fail&quot; do
+      options = mock(&quot;options&quot;, :null_object =&gt; true)
+      options.should_receive(:run_examples).and_return(false)
+      heckler = Spec::Runner::Heckler.new(&quot;Foo&quot;, nil, options)
+      heckler.tests_pass?.should be_false
+    end
+  end
 end</diff>
      <filename>vendor/plugins/rspec/spec/spec/runner/heckle_runner_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,7 +3,6 @@ unless [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM}
   require 'spec/runner/heckle_runner'
 
   describe &quot;Heckler&quot; do
-    it_should_behave_like &quot;Test::Unit io sink&quot;
     it &quot;should run examples on tests_pass?&quot; do
       options = Spec::Runner::Options.new(StringIO.new, StringIO.new)
       options.should_receive(:run_examples).with().and_return(&amp;options.method(:run_examples))</diff>
      <filename>vendor/plugins/rspec/spec/spec/runner/heckler_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -11,32 +11,32 @@ module Spec
       it &quot;should leave anything in lib spec dir&quot; do
         [&quot;expectations&quot;, &quot;mocks&quot;, &quot;runner&quot;, &quot;stubs&quot;].each do |child|
           @error.set_backtrace([&quot;/lib/spec/#{child}/anything.rb&quot;])
-          @tweaker.tweak_backtrace(@error, &quot;spec name&quot;)
+          @tweaker.tweak_backtrace(@error)
           @error.backtrace.should_not be_empty
         end
       end
 
       it &quot;should leave anything in spec dir&quot; do
         @error.set_backtrace([&quot;/lib/spec/expectations/anything.rb&quot;])
-        @tweaker.tweak_backtrace(@error, &quot;spec name&quot;)
+        @tweaker.tweak_backtrace(@error)
         @error.backtrace.should_not be_empty
       end
 
       it &quot;should leave bin spec&quot; do
         @error.set_backtrace([&quot;bin/spec:&quot;])
-        @tweaker.tweak_backtrace(@error, &quot;spec name&quot;)
+        @tweaker.tweak_backtrace(@error)
         @error.backtrace.should_not be_empty
       end
 
       it &quot;should not barf on nil backtrace&quot; do
         lambda do
-          @tweaker.tweak_backtrace(@error, &quot;spec name&quot;)
+          @tweaker.tweak_backtrace(@error)
         end.should_not raise_error
       end
       
       it &quot;should clean up double slashes&quot; do
         @error.set_backtrace([&quot;/a//b/c//d.rb&quot;])
-        @tweaker.tweak_backtrace(@error, &quot;spec name&quot;)
+        @tweaker.tweak_backtrace(@error)
         @error.backtrace.should include(&quot;/a/b/c/d.rb&quot;)
       end
       </diff>
      <filename>vendor/plugins/rspec/spec/spec/runner/noisy_backtrace_tweaker_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 require File.dirname(__FILE__) + '/../../spec_helper.rb'
+require 'fileutils'
 
 describe &quot;OptionParser&quot; do
   before(:each) do
@@ -11,12 +12,17 @@ describe &quot;OptionParser&quot; do
     @parser.parse(args)
     @parser.options
   end
-
+  
+  it &quot;should accept files to include&quot; do
+    options = parse([&quot;--pattern&quot;, &quot;foo&quot;])
+    options.filename_pattern.should == &quot;foo&quot;
+  end
+  
   it &quot;should accept dry run option&quot; do
     options = parse([&quot;--dry-run&quot;])
     options.dry_run.should be_true
   end
-
+  
   it &quot;should eval and use custom formatter when none of the builtins&quot; do
     options = parse([&quot;--format&quot;, &quot;Custom::Formatter&quot;])
     options.formatters[0].class.should be(Custom::Formatter)
@@ -34,32 +40,43 @@ describe &quot;OptionParser&quot; do
     options.formatters[2].where.should eql(&quot;foo\\bar&quot;)
     options.formatters[3].where.should eql(&quot;/foo/bar&quot;)
   end
-
+  
   it &quot;should not be verbose by default&quot; do
     options = parse([])
     options.verbose.should be_nil
   end
-
+  
   it &quot;should not use colour by default&quot; do
     options = parse([])
     options.colour.should == false
   end
-
+  
+  it &quot;should print help to stdout if no args&quot; do
+    pending 'A regression since 1.0.8' do
+      options = parse([])
+      @out.rewind
+      @out.read.should match(/Usage: spec \(FILE\|DIRECTORY\|GLOB\)\+ \[options\]/m)
+    end
+  end
+  
   it &quot;should print help to stdout&quot; do
     options = parse([&quot;--help&quot;])
     @out.rewind
     @out.read.should match(/Usage: spec \(FILE\|DIRECTORY\|GLOB\)\+ \[options\]/m)
   end
-
+  
   it &quot;should print instructions about how to require missing formatter&quot; do
-    lambda { options = parse([&quot;--format&quot;, &quot;Custom::MissingFormatter&quot;]) }.should raise_error(NameError)
+    lambda do 
+      options = parse([&quot;--format&quot;, &quot;Custom::MissingFormatter&quot;]) 
+      options.formatters
+    end.should raise_error(NameError)
     @err.string.should match(/Couldn't find formatter class Custom::MissingFormatter/n)
   end
-
+  
   it &quot;should print version to stdout&quot; do
     options = parse([&quot;--version&quot;])
     @out.rewind
-    @out.read.should match(/RSpec-\d+\.\d+\.\d+.*\(r\d+\) - BDD for Ruby\nhttp:\/\/rspec.rubyforge.org\/\n/n)
+    @out.read.should match(/RSpec-\d+\.\d+\.\d+.*\(build \d+\) - BDD for Ruby\nhttp:\/\/rspec.rubyforge.org\/\n/n)
   end
   
   it &quot;should require file when require specified&quot; do
@@ -67,37 +84,37 @@ describe &quot;OptionParser&quot; do
       parse([&quot;--require&quot;, &quot;whatever&quot;])
     end.should raise_error(LoadError)
   end
-
+  
   it &quot;should support c option&quot; do
     options = parse([&quot;-c&quot;])
     options.colour.should be_true
   end
-
+  
   it &quot;should support queens colour option&quot; do
     options = parse([&quot;--colour&quot;])
     options.colour.should be_true
   end
-
+  
   it &quot;should support us color option&quot; do
     options = parse([&quot;--color&quot;])
     options.colour.should be_true
   end
-
+  
   it &quot;should support single example with -e option&quot; do
     options = parse([&quot;-e&quot;, &quot;something or other&quot;])
     options.examples.should eql([&quot;something or other&quot;])
   end
-
+  
   it &quot;should support single example with -s option (will be removed when autotest supports -e)&quot; do
     options = parse([&quot;-s&quot;, &quot;something or other&quot;])
     options.examples.should eql([&quot;something or other&quot;])
   end
-
+  
   it &quot;should support single example with --example option&quot; do
     options = parse([&quot;--example&quot;, &quot;something or other&quot;])
     options.examples.should eql([&quot;something or other&quot;])
   end
-
+  
   it &quot;should read several example names from file if --example is given an existing file name&quot; do
     options = parse([&quot;--example&quot;, File.dirname(__FILE__) + '/examples.txt'])
     options.examples.should eql([
@@ -109,156 +126,153 @@ describe &quot;OptionParser&quot; do
     options = parse([&quot;--example&quot;, File.dirname(__FILE__) + '/empty_file.txt'])
     options.examples.should eql([])
   end
-
+  
   it &quot;should use html formatter when format is h&quot; do
     options = parse([&quot;--format&quot;, &quot;h&quot;])
     options.formatters[0].class.should equal(Spec::Runner::Formatter::HtmlFormatter)
   end
-
+  
+  it &quot;should use html story formatter when format is h&quot; do
+    options = parse([&quot;--format&quot;, &quot;h&quot;])
+    options.story_formatters[0].class.should equal(Spec::Runner::Formatter::Story::HtmlFormatter)
+  end
+  
   it &quot;should use html formatter when format is html&quot; do
     options = parse([&quot;--format&quot;, &quot;html&quot;])
     options.formatters[0].class.should equal(Spec::Runner::Formatter::HtmlFormatter)
   end
-
+  
+  it &quot;should use html story formatter when format is html&quot; do
+    options = parse([&quot;--format&quot;, &quot;html&quot;])
+    options.story_formatters[0].class.should equal(Spec::Runner::Formatter::Story::HtmlFormatter)
+  end
+  
   it &quot;should use html formatter with explicit output when format is html:test.html&quot; do
     FileUtils.rm 'test.html' if File.exist?('test.html')
     options = parse([&quot;--format&quot;, &quot;html:test.html&quot;])
+    options.formatters # creates the file
     File.should be_exist('test.html')
     options.formatters[0].class.should equal(Spec::Runner::Formatter::HtmlFormatter)
     options.formatters[0].close
     FileUtils.rm 'test.html'
   end
-
+  
   it &quot;should use noisy backtrace tweaker with b option&quot; do
     options = parse([&quot;-b&quot;])
     options.backtrace_tweaker.should be_instance_of(Spec::Runner::NoisyBacktraceTweaker)
   end
-
+  
   it &quot;should use noisy backtrace tweaker with backtrace option&quot; do
     options = parse([&quot;--backtrace&quot;])
     options.backtrace_tweaker.should be_instance_of(Spec::Runner::NoisyBacktraceTweaker)
   end
-
+  
   it &quot;should use quiet backtrace tweaker by default&quot; do
     options = parse([])
     options.backtrace_tweaker.should be_instance_of(Spec::Runner::QuietBacktraceTweaker)
   end
-
+  
   it &quot;should use progress bar formatter by default&quot; do
     options = parse([])
     options.formatters[0].class.should equal(Spec::Runner::Formatter::ProgressBarFormatter)
   end
-
-  it &quot;should use rdoc formatter when format is r&quot; do
-    options = parse([&quot;--format&quot;, &quot;r&quot;])
-    options.formatters[0].class.should equal(Spec::Runner::Formatter::RdocFormatter)
-  end
-
-  it &quot;should use rdoc formatter when format is rdoc&quot; do
-    options = parse([&quot;--format&quot;, &quot;rdoc&quot;])
-    options.formatters[0].class.should equal(Spec::Runner::Formatter::RdocFormatter)
-  end
-
+  
   it &quot;should use specdoc formatter when format is s&quot; do
     options = parse([&quot;--format&quot;, &quot;s&quot;])
     options.formatters[0].class.should equal(Spec::Runner::Formatter::SpecdocFormatter)
   end
-
+  
   it &quot;should use specdoc formatter when format is specdoc&quot; do
     options = parse([&quot;--format&quot;, &quot;specdoc&quot;])
     options.formatters[0].class.should equal(Spec::Runner::Formatter::SpecdocFormatter)
   end
-
+  
   it &quot;should support diff option when format is not specified&quot; do
     options = parse([&quot;--diff&quot;])
     options.diff_format.should == :unified
   end
-
+  
   it &quot;should use unified diff format option when format is unified&quot; do
     options = parse([&quot;--diff&quot;, &quot;unified&quot;])
     options.diff_format.should == :unified
     options.differ_class.should equal(Spec::Expectations::Differs::Default)
   end
-
+  
   it &quot;should use context diff format option when format is context&quot; do
     options = parse([&quot;--diff&quot;, &quot;context&quot;])
     options.diff_format.should == :context
     options.differ_class.should == Spec::Expectations::Differs::Default
   end
-
+  
   it &quot;should use custom diff format option when format is a custom format&quot; do
     Spec::Expectations.differ.should_not be_instance_of(Custom::Differ)
-
+  
     options = parse([&quot;--diff&quot;, &quot;Custom::Differ&quot;])
     options.parse_diff &quot;Custom::Differ&quot;
     options.diff_format.should == :custom
     options.differ_class.should == Custom::Differ
     Spec::Expectations.differ.should be_instance_of(Custom::Differ)
   end
-
+  
   it &quot;should print instructions about how to fix missing differ&quot; do
     lambda { parse([&quot;--diff&quot;, &quot;Custom::MissingFormatter&quot;]) }.should raise_error(NameError)
     @err.string.should match(/Couldn't find differ class Custom::MissingFormatter/n)
   end
-
-  it &quot;should support --line to identify spec&quot; do
-    spec_parser = mock(&quot;spec_parser&quot;)
-    @parser.instance_variable_set('@spec_parser', spec_parser)
-
-    file_factory = mock(&quot;File&quot;)
-    file_factory.should_receive(:file?).and_return(true)
-    file_factory.should_receive(:open).and_return(&quot;fake_io&quot;)
-    @parser.instance_variable_set('@file_factory', file_factory)
-
-    spec_parser.should_receive(:spec_name_for).with(&quot;fake_io&quot;, 169).and_return(&quot;some spec&quot;)
-
-    options = parse([&quot;some file&quot;, &quot;--line&quot;, &quot;169&quot;])
-    options.examples.should eql([&quot;some spec&quot;])
-    File.rspec_verify
-  end
-
-  it &quot;should fail with error message if file is dir along with --line&quot; do
-    spec_parser = mock(&quot;spec_parser&quot;)
-    @parser.instance_variable_set('@spec_parser', spec_parser)
-
-    file_factory = mock(&quot;File&quot;)
-    file_factory.should_receive(:file?).and_return(false)
-    file_factory.should_receive(:directory?).and_return(true)
-    @parser.instance_variable_set('@file_factory', file_factory)
-
-    options = parse([&quot;some file&quot;, &quot;--line&quot;, &quot;169&quot;])
-    @err.string.should match(/You must specify one file, not a directory when using the --line option/n)
-  end
-
-  it &quot;should fail with error message if file is dir along with --line&quot; do
-    spec_parser = mock(&quot;spec_parser&quot;)
-    @parser.instance_variable_set('@spec_parser', spec_parser)
-
-    file_factory = mock(&quot;File&quot;)
-    file_factory.should_receive(:file?).and_return(false)
-    file_factory.should_receive(:directory?).and_return(false)
-    @parser.instance_variable_set('@file_factory', file_factory)
-
-    options = parse([&quot;some file&quot;, &quot;--line&quot;, &quot;169&quot;])
-    @err.string.should match(/some file does not exist/n)
-  end
-
-  it &quot;should fail with error message if more than one files are specified along with --line&quot; do
-    spec_parser = mock(&quot;spec_parser&quot;)
-    @parser.instance_variable_set('@spec_parser', spec_parser)
-
-    options = parse([&quot;some file&quot;, &quot;some other file&quot;, &quot;--line&quot;, &quot;169&quot;])
-    @err.string.should match(/Only one file can be specified when using the --line option/n)
-  end
-
-  it &quot;should fail with error message if --example and --line are used simultaneously&quot; do
-    spec_parser = mock(&quot;spec_parser&quot;)
-    @parser.instance_variable_set('@spec_parser', spec_parser)
-
-    options = parse([&quot;some file&quot;, &quot;--example&quot;, &quot;some example&quot;, &quot;--line&quot;, &quot;169&quot;])
-    @err.string.should match(/You cannot use both --line and --example/n)
+  
+  describe &quot;when attempting a focussed spec&quot; do
+    attr_reader :file, :dir
+    before do
+      @original_rspec_options = $rspec_options
+      @file = &quot;#{File.dirname(__FILE__)}/spec_parser/spec_parser_fixture.rb&quot;
+      @dir = File.dirname(file)
+    end
+  
+    after do
+      $rspec_options = @original_rspec_options
+    end
+  
+    def parse(args)
+      options = super
+      $rspec_options = options
+      options.filename_pattern = &quot;*_fixture.rb&quot;
+      options
+    end
+  
+    it &quot;should support --line to identify spec&quot; do
+      options = parse([file, &quot;--line&quot;, &quot;13&quot;])
+      options.line_number.should == 13
+      options.examples.should be_empty
+      options.run_examples
+      options.examples.should eql([&quot;d&quot;])
+    end
+  
+    it &quot;should fail with error message if file is dir along with --line&quot; do
+      options = parse([dir, &quot;--line&quot;, &quot;169&quot;])
+      options.line_number.should == 169
+      options.run_examples
+      @err.string.should match(/You must specify one file, not a directory when using the --line option/n)
+    end
+  
+    it &quot;should fail with error message if file does not exist along with --line&quot; do
+      options = parse([&quot;some file&quot;, &quot;--line&quot;, &quot;169&quot;])
+      proc do
+        options.run_examples
+      end.should raise_error
+    end
+  
+    it &quot;should fail with error message if more than one files are specified along with --line&quot; do
+      options = parse([file, file, &quot;--line&quot;, &quot;169&quot;])
+      options.run_examples
+      @err.string.should match(/Only one file can be specified when using the --line option/n)
+    end
+  
+    it &quot;should fail with error message if --example and --line are used simultaneously&quot; do
+      options = parse([file, &quot;--example&quot;, &quot;some example&quot;, &quot;--line&quot;, &quot;169&quot;])
+      options.run_examples
+      @err.string.should match(/You cannot use both --line and --example/n)
+    end
   end
-
+  
   if [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM}
     it &quot;should barf when --heckle is specified (and platform is windows)&quot; do
       lambda do
@@ -271,18 +285,24 @@ describe &quot;OptionParser&quot; do
       options.heckle_runner.should be_instance_of(Spec::Runner::HeckleRunner)
     end
   end
-
+  
   it &quot;should read options from file when --options is specified&quot; do
     options = parse([&quot;--options&quot;, File.dirname(__FILE__) + &quot;/spec.opts&quot;])
     options.diff_format.should_not be_nil
     options.colour.should be_true
   end
-
+  
   it &quot;should default the formatter to ProgressBarFormatter when using options file&quot; do
     options = parse([&quot;--options&quot;, File.dirname(__FILE__) + &quot;/spec.opts&quot;])
     options.formatters.first.should be_instance_of(::Spec::Runner::Formatter::ProgressBarFormatter)
   end
 
+  it &quot;should run parse drb after parsing options&quot; do
+    @parser.stub!(:parse_drb)
+    @parser.should_receive(:parse_drb).with([&quot;--drb&quot;]).and_return(true)
+    options = parse([&quot;--options&quot;, File.dirname(__FILE__) + &quot;/spec_drb.opts&quot;])    
+  end
+
   it &quot;should read spaced and multi-line options from file when --options is specified&quot; do
     options = parse([&quot;--options&quot;, File.dirname(__FILE__) + &quot;/spec_spaced.opts&quot;])
     options.diff_format.should_not be_nil
@@ -296,56 +316,69 @@ describe &quot;OptionParser&quot; do
     IO.read('test.spec.opts').should == &quot;--colour\n--diff\n&quot;
     FileUtils.rm 'test.spec.opts'
   end
-
+  
   it &quot;should save config to file when -G is specified&quot; do
     FileUtils.rm 'test.spec.opts' if File.exist?('test.spec.opts')
     options = parse([&quot;--colour&quot;, &quot;-G&quot;, &quot;test.spec.opts&quot;, &quot;--diff&quot;])
     IO.read('test.spec.opts').should == &quot;--colour\n--diff\n&quot;
     FileUtils.rm 'test.spec.opts'
   end
-
-  it &quot;should call DrbCommandLine when --drb is specified&quot; do
-    Spec::Runner::DrbCommandLine.should_receive(:run).with([&quot;some/spec.rb&quot;, &quot;--diff&quot;, &quot;--colour&quot;], @err, @out)
-    options = parse([&quot;some/spec.rb&quot;, &quot;--diff&quot;, &quot;--drb&quot;, &quot;--colour&quot;])
+  
+  it &quot;when --drb is specified, calls DrbCommandLine all of the other ARGV arguments&quot; do
+    options = Spec::Runner::OptionParser.parse([
+      &quot;some/spec.rb&quot;, &quot;--diff&quot;, &quot;--colour&quot;
+    ], @err, @out)
+    Spec::Runner::DrbCommandLine.should_receive(:run).and_return do |options|
+      options.argv.should == [&quot;some/spec.rb&quot;, &quot;--diff&quot;, &quot;--colour&quot;]
+    end
+    parse([&quot;some/spec.rb&quot;, &quot;--diff&quot;, &quot;--drb&quot;, &quot;--colour&quot;])
   end
   
   it &quot;should reverse spec order when --reverse is specified&quot; do
     options = parse([&quot;some/spec.rb&quot;, &quot;--reverse&quot;])
   end
-
+  
   it &quot;should set an mtime comparator when --loadby mtime&quot; do
     options = parse([&quot;--loadby&quot;, 'mtime'])
+    runner = Spec::Runner::ExampleGroupRunner.new(options)
+    Spec::Runner::ExampleGroupRunner.should_receive(:new).
+      with(options).
+      and_return(runner)
+    runner.should_receive(:load_files).with([&quot;most_recent_spec.rb&quot;, &quot;command_line_spec.rb&quot;])
+  
     Dir.chdir(File.dirname(__FILE__)) do
       options.files &lt;&lt; 'command_line_spec.rb'
       options.files &lt;&lt; 'most_recent_spec.rb'
       FileUtils.touch &quot;most_recent_spec.rb&quot;
-      options.paths.should == [&quot;most_recent_spec.rb&quot;, &quot;command_line_spec.rb&quot;]
+      options.run_examples
       FileUtils.rm &quot;most_recent_spec.rb&quot;
     end
   end
-
+  
   it &quot;should use the standard runner by default&quot; do
+    runner = ::Spec::Runner::ExampleGroupRunner.new(@parser.options)
+    ::Spec::Runner::ExampleGroupRunner.should_receive(:new).
+      with(@parser.options).
+      and_return(runner)
     options = parse([])
-    options.custom_runner.should be_nil
+    options.run_examples
   end
-
+  
   it &quot;should use a custom runner when given&quot; do
-    options = parse([&quot;--runner&quot;, &quot;Custom::BehaviourRunner&quot;])
-    options.custom_runner.class.should equal(Custom::BehaviourRunner)
+    runner = Custom::ExampleGroupRunner.new(@parser.options, nil)
+    Custom::ExampleGroupRunner.should_receive(:new).
+      with(@parser.options, nil).
+      and_return(runner)
+    options = parse([&quot;--runner&quot;, &quot;Custom::ExampleGroupRunner&quot;])
+    options.run_examples
   end
-
+  
   it &quot;should use a custom runner with extra options&quot; do
-    options = parse([&quot;--runner&quot;, &quot;Custom::BehaviourRunner:something&quot;])
-    options.custom_runner.class.should equal(Custom::BehaviourRunner)
-  end
-
-  it &quot;should not have a custom runner by default&quot; do
-    options = Spec::Runner::OptionParser.parse([], @err, @out)
-    options.custom_runner.should be_nil
+    runner = Custom::ExampleGroupRunner.new(@parser.options, 'something')
+    Custom::ExampleGroupRunner.should_receive(:new).
+      with(@parser.options, 'something').
+      and_return(runner)
+    options = parse([&quot;--runner&quot;, &quot;Custom::ExampleGroupRunner:something&quot;])
+    options.run_examples
   end
-
-  it &quot;should return the correct default behaviour runner&quot; do
-   options = Spec::Runner::OptionParser.parse([&quot;--runner&quot;, &quot;Custom::BehaviourRunner&quot;], @err, @out)
-    options.custom_runner.class.should equal(Custom::BehaviourRunner)
-  end  
 end</diff>
      <filename>vendor/plugins/rspec/spec/spec/runner/option_parser_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -8,233 +8,396 @@ module Spec
         @out = StringIO.new('')
         @options = Options.new(@err, @out)
       end
-      
+
       after(:each) do
         Spec::Expectations.differ = nil
       end
 
-      it &quot;instantiates empty arrays&quot; do
-        @options.examples.should == []
-        @options.formatters.should == []
+      describe &quot;#examples&quot; do
+        it &quot;should default to empty array&quot; do
+          @options.examples.should == []
+        end
       end
-
-      it &quot;defaults to QuietBacktraceTweaker&quot; do
-        @options.backtrace_tweaker.class.should == QuietBacktraceTweaker
+      
+      describe &quot;#include_pattern&quot; do
+        it &quot;should default to '**/*_spec.rb'&quot; do
+          @options.filename_pattern.should == &quot;**/*_spec.rb&quot;
+        end
       end
+      
+      describe &quot;#files_to_load&quot; do
+        
+        it &quot;should load files not following pattern if named explicitly&quot; do
+          file = File.expand_path(File.dirname(__FILE__) + &quot;/resources/a_bar.rb&quot;)
+          @options.files &lt;&lt; file
+          @options.files_to_load.should include(file)
+        end
+        
+        describe &quot;with default --pattern&quot; do
+          it &quot;should load files named _spec.rb&quot; do
+            dir = File.expand_path(File.dirname(__FILE__) + &quot;/resources/&quot;)
+            @options.files &lt;&lt; dir
+            @options.files_to_load.should == [&quot;#{dir}/a_spec.rb&quot;]
+          end
+        end
+        
+        describe &quot;with explicit pattern (single)&quot; do
+          before(:each) do
+            @options.filename_pattern = &quot;**/*_foo.rb&quot;
+          end
+        
+          it &quot;should load files following pattern&quot; do
+            file = File.expand_path(File.dirname(__FILE__) + &quot;/resources/a_foo.rb&quot;)
+            @options.files &lt;&lt; file
+            @options.files_to_load.should include(file)
+          end
+        
+          it &quot;should load files in directories following pattern&quot; do
+            dir = File.expand_path(File.dirname(__FILE__) + &quot;/resources&quot;)
+            @options.files &lt;&lt; dir
+            @options.files_to_load.should include(&quot;#{dir}/a_foo.rb&quot;)
+          end
+        
+          it &quot;should not load files in directories not following pattern&quot; do
+            dir = File.expand_path(File.dirname(__FILE__) + &quot;/resources&quot;)
+            @options.files &lt;&lt; dir
+            @options.files_to_load.should_not include(&quot;#{dir}/a_bar.rb&quot;)
+          end
+        end
+        
+        describe &quot;with explicit pattern (comma,separated,values)&quot; do
+          
+          before(:each) do
+            @options.filename_pattern = &quot;**/*_foo.rb,**/*_bar.rb&quot;
+          end
 
-      it &quot;defaults to no dry_run&quot; do
-        @options.dry_run.should == false
+          it &quot;should support comma separated values&quot; do
+            dir = File.expand_path(File.dirname(__FILE__) + &quot;/resources&quot;)
+            @options.files &lt;&lt; dir
+            @options.files_to_load.should include(&quot;#{dir}/a_foo.rb&quot;)
+            @options.files_to_load.should include(&quot;#{dir}/a_bar.rb&quot;)
+          end
+        
+          it &quot;should support comma separated values with spaces&quot; do
+            dir = File.expand_path(File.dirname(__FILE__) + &quot;/resources&quot;)
+            @options.files &lt;&lt; dir
+            @options.files_to_load.should include(&quot;#{dir}/a_foo.rb&quot;)
+            @options.files_to_load.should include(&quot;#{dir}/a_bar.rb&quot;)
+          end
+        
+        end
+      
       end
 
-      it &quot;parse_diff sets context_lines&quot; do
-        @options.parse_diff nil
-        @options.context_lines.should == 3
+      describe &quot;#backtrace_tweaker&quot; do
+        it &quot;should default to QuietBacktraceTweaker&quot; do
+          @options.backtrace_tweaker.class.should == QuietBacktraceTweaker
+        end
       end
 
-      it &quot;defaults diff to unified&quot; do
-        @options.parse_diff nil
-        @options.diff_format.should == :unified
+      describe &quot;#dry_run&quot; do
+        it &quot;should default to false&quot; do
+          @options.dry_run.should == false
+        end
       end
 
-      it &quot;should use unified diff format option when format is unified&quot; do
-        @options.parse_diff 'unified'
-        @options.diff_format.should == :unified
-        @options.differ_class.should equal(Spec::Expectations::Differs::Default)
+      describe &quot;#context_lines&quot; do
+        it &quot;should default to 3&quot; do
+          @options.context_lines.should == 3
+        end
       end
 
-      it &quot;should use context diff format option when format is context&quot; do
-        @options.parse_diff 'context'
-        @options.diff_format.should == :context
-        @options.differ_class.should == Spec::Expectations::Differs::Default
-      end
+      describe &quot;#parse_diff with nil&quot; do
+        before(:each) do
+          @options.parse_diff nil
+        end
 
-      it &quot;should use custom diff format option when format is a custom format&quot; do
-        Spec::Expectations.differ.should_not be_instance_of(Custom::Differ)
-        
-        @options.parse_diff &quot;Custom::Differ&quot;
-        @options.diff_format.should == :custom
-        @options.differ_class.should == Custom::Differ
-        Spec::Expectations.differ.should be_instance_of(Custom::Differ)
-      end
-
-      it &quot;should print instructions about how to fix missing differ&quot; do
-        lambda { @options.parse_diff &quot;Custom::MissingDiffer&quot; }.should raise_error(NameError)
-        @err.string.should match(/Couldn't find differ class Custom::MissingDiffer/n)
-      end      
-
-      it &quot;should print instructions about how to fix bad formatter&quot; do
-        lambda do
-          @options.parse_format &quot;Custom::BadFormatter&quot;
-        end.should raise_error(NameError, /undefined local variable or method `bad_method'/)
-      end      
-
-      it &quot;parse_example sets single example when argument not a file&quot; do
-        example = &quot;something or other&quot;
-        File.file?(example).should == false
-        @options.parse_example example
-        @options.examples.should eql([&quot;something or other&quot;])
-      end
-
-      it &quot;parse_example sets examples to contents of file&quot; do
-        example = &quot;#{File.dirname(__FILE__)}/examples.txt&quot;
-        File.should_receive(:file?).with(example).and_return(true)
-        file = StringIO.new(&quot;Sir, if you were my husband, I would poison your drink.\nMadam, if you were my wife, I would drink it.&quot;)
-        File.should_receive(:open).with(example).and_return(file)
-        
-        @options.parse_example example
-        @options.examples.should eql([
-          &quot;Sir, if you were my husband, I would poison your drink.&quot;,
-          &quot;Madam, if you were my wife, I would drink it.&quot;
-        ])
-      end
-    end
+        it &quot;should make diff_format unified&quot; do
+          @options.diff_format.should == :unified
+        end
 
-    describe Options, &quot;#custom_runner?&quot; do
-      before do
-        @err = StringIO.new('')
-        @out = StringIO.new('')
-        @options = Options.new(@err, @out)
-      end
-      
-      it &quot;returns true when there is a runner_arg&quot; do
-        @options.runner_arg = &quot;Custom::BehaviourRunner&quot;
-        @options.custom_runner?.should be_true
+        it &quot;should set Spec::Expectations.differ to be a default differ&quot; do
+          Spec::Expectations.differ.class.should ==
+            ::Spec::Expectations::Differs::Default
+        end
       end
 
-      it &quot;returns false when there is no runner_arg&quot; do
-        @options.runner_arg = nil
-        @options.custom_runner?.should be_false
-      end
-    end
+      describe &quot;#parse_diff with 'unified'&quot; do
+        before(:each) do
+          @options.parse_diff 'unified'
+        end
 
-    describe Options, &quot;splitting class names and args&quot; do
-      before do
-        @err = StringIO.new('')
-        @out = StringIO.new('')
-        @options = Options.new(@err, @out)
-      end
-      
-      it &quot;should split class names with args&quot; do
-        @options.split_at_colon('Foo').should == ['Foo', nil]
-        @options.split_at_colon('Foo:arg').should == ['Foo', 'arg']
-        @options.split_at_colon('Foo::Bar::Zap:arg').should == ['Foo::Bar::Zap', 'arg']
-        @options.split_at_colon('Foo:arg1,arg2').should == ['Foo', 'arg1,arg2']
-        @options.split_at_colon('Foo::Bar::Zap:arg1,arg2').should == ['Foo::Bar::Zap', 'arg1,arg2']
-        @options.split_at_colon('Foo::Bar::Zap:drb://foo,drb://bar').should == ['Foo::Bar::Zap', 'drb://foo,drb://bar']
-      end
+        it &quot;should make diff_format unified and uses default differ_class&quot; do
+          @options.diff_format.should == :unified
+          @options.differ_class.should equal(Spec::Expectations::Differs::Default)
+        end
 
-      it &quot;should raise error when splitting something starting with a number&quot; do
-        lambda { @options.split_at_colon('') }.should raise_error(&quot;Couldn't parse \&quot;\&quot;&quot;)
+        it &quot;should set Spec::Expectations.differ to be a default differ&quot; do
+          Spec::Expectations.differ.class.should ==
+            ::Spec::Expectations::Differs::Default
+        end
       end
 
-      it &quot;should raise error when not class name&quot; do
-        lambda do
-          @options.load_class('foo', 'fruit', '--food')
-        end.should raise_error('&quot;foo&quot; is not a valid class name')
+      describe &quot;#parse_diff with 'context'&quot; do
+        before(:each) do
+          @options.parse_diff 'context'
+        end
+
+        it &quot;should make diff_format context and uses default differ_class&quot; do
+          @options.diff_format.should == :context
+          @options.differ_class.should == Spec::Expectations::Differs::Default
+        end
+
+        it &quot;should set Spec::Expectations.differ to be a default differ&quot; do
+          Spec::Expectations.differ.class.should ==
+            ::Spec::Expectations::Differs::Default
+        end
       end
-    end
 
-    describe Options, &quot;#differ_class and #differ_class=&quot; do
-      before do
-        @err = StringIO.new
-        @out = StringIO.new
-        @options = Options.new(@err, @out)
+      describe &quot;#parse_diff with Custom::Differ&quot; do
+        before(:each) do
+          @options.parse_diff 'Custom::Differ'
+        end
+
+        it &quot;should use custom differ_class&quot; do
+          @options.diff_format.should == :custom
+          @options.differ_class.should == Custom::Differ
+          Spec::Expectations.differ.should be_instance_of(Custom::Differ)
+        end
+
+        it &quot;should set Spec::Expectations.differ to be a default differ&quot; do
+          Spec::Expectations.differ.class.should ==
+            ::Custom::Differ
+        end
       end
 
-      it &quot;does not set Expectations differ when differ_class is not set&quot; do
-        Spec::Expectations.should_not_receive(:differ=)
-        @options.differ_class = nil
+      describe &quot;#parse_diff with missing class name&quot; do
+        it &quot;should raise error&quot; do
+          lambda { @options.parse_diff &quot;Custom::MissingDiffer&quot; }.should raise_error(NameError)
+          @err.string.should match(/Couldn't find differ class Custom::MissingDiffer/n)
+        end
       end
 
-      it &quot;sets Expectations differ when differ_class is set&quot; do
-        Spec::Expectations.should_receive(:differ=).with(anything()).and_return do |arg|
-          arg.class.should == Spec::Expectations::Differs::Default
+      describe &quot;#parse_example&quot; do
+        it &quot;with argument thats not a file path, sets argument as the example&quot; do
+          example = &quot;something or other&quot;
+          File.file?(example).should == false
+          @options.parse_example example
+          @options.examples.should eql([&quot;something or other&quot;])
+        end
+
+        it &quot;with argument that is a file path, sets examples to contents of the file&quot; do
+          example = &quot;#{File.dirname(__FILE__)}/examples.txt&quot;
+          File.should_receive(:file?).with(example).and_return(true)
+          file = StringIO.new(&quot;Sir, if you were my husband, I would poison your drink.\nMadam, if you were my wife, I would drink it.&quot;)
+          File.should_receive(:open).with(example).and_return(file)
+
+          @options.parse_example example
+          @options.examples.should eql([
+            &quot;Sir, if you were my husband, I would poison your drink.&quot;,
+              &quot;Madam, if you were my wife, I would drink it.&quot;
+          ])
         end
-        @options.differ_class = Spec::Expectations::Differs::Default
       end
-    end
 
-    describe Options, &quot;#reporter&quot; do
-      before do
-        @err = StringIO.new
-        @out = StringIO.new
-        @options = Options.new(@err, @out)
+      describe &quot;#examples_should_not_be_run&quot; do
+        it &quot;should cause #run_examples to return true and do nothing&quot; do
+          @options.examples_should_not_be_run
+          ExampleGroupRunner.should_not_receive(:new)
+
+          @options.run_examples.should be_true
+        end
       end
 
-      it &quot;returns a Reporter&quot; do
-        @options.reporter.should be_instance_of(Reporter)
-        @options.reporter.options.should === @options
+      describe &quot;#load_class&quot; do
+        it &quot;should raise error when not class name&quot; do
+          lambda do
+            @options.send(:load_class, 'foo', 'fruit', '--food')
+          end.should raise_error('&quot;foo&quot; is not a valid class name')
+        end
       end
-    end
 
-    describe Options, &quot;#add_behaviour affecting passed in behaviour&quot; do
-      it_should_behave_like &quot;Test::Unit io sink&quot;
-      before do
-        @err = StringIO.new('')
-        @out = StringIO.new('')
-        @options = Options.new(@err, @out)
+      describe &quot;#reporter&quot; do
+        it &quot;returns a Reporter&quot; do
+          @options.reporter.should be_instance_of(Reporter)
+          @options.reporter.options.should === @options
+        end
       end
 
-      it &quot;runs all examples when options.examples is nil&quot; do
-        example_1_has_run = false
-        example_2_has_run = false
-        @behaviour = Class.new(::Spec::DSL::Example).describe(&quot;A Behaviour&quot;) do
-          it &quot;runs 1&quot; do
-            example_1_has_run = true
-          end
-          it &quot;runs 2&quot; do
-            example_2_has_run = true
+      describe &quot;#add_example_group affecting passed in example_group&quot; do
+        it &quot;runs all examples when options.examples is nil&quot; do
+          example_1_has_run = false
+          example_2_has_run = false
+          @example_group = Class.new(::Spec::Example::ExampleGroup).describe(&quot;Some Examples&quot;) do
+            it &quot;runs 1&quot; do
+              example_1_has_run = true
+            end
+            it &quot;runs 2&quot; do
+              example_2_has_run = true
+            end
           end
+
+          @options.examples = nil
+
+          @options.add_example_group @example_group
+          @options.run_examples
+          example_1_has_run.should be_true
+          example_2_has_run.should be_true
         end
 
-        @options.examples = nil
+        it &quot;keeps all example_definitions when options.examples is empty&quot; do
+          example_1_has_run = false
+          example_2_has_run = false
+          @example_group = Class.new(::Spec::Example::ExampleGroup).describe(&quot;Some Examples&quot;) do
+            it &quot;runs 1&quot; do
+              example_1_has_run = true
+            end
+            it &quot;runs 2&quot; do
+              example_2_has_run = true
+            end
+          end
 
-        @options.add_behaviour @behaviour
-        @options.run_examples
-        example_1_has_run.should be_true
-        example_2_has_run.should be_true
+          @options.examples = []
+
+          @options.add_example_group @example_group
+          @options.run_examples
+          example_1_has_run.should be_true
+          example_2_has_run.should be_true
+        end
       end
 
-      it &quot;keeps all example_definitions when options.examples is empty&quot; do
-        example_1_has_run = false
-        example_2_has_run = false
-        @behaviour = Class.new(::Spec::DSL::Example).describe(&quot;A Behaviour&quot;) do
-          it &quot;runs 1&quot; do
-            example_1_has_run = true
-          end
-          it &quot;runs 2&quot; do
-            example_2_has_run = true
+      describe &quot;#add_example_group affecting example_group&quot; do
+        it &quot;adds example_group when example_group has example_definitions and is not shared&quot; do
+          @example_group = Class.new(::Spec::Example::ExampleGroup).describe(&quot;Some Examples&quot;) do
+            it &quot;uses this example_group&quot; do
+            end
           end
+
+          @options.number_of_examples.should == 0
+          @options.add_example_group @example_group
+          @options.number_of_examples.should == 1
+          @options.example_groups.length.should == 1
         end
+      end
 
-        @options.examples = []
+      describe &quot;#remove_example_group&quot; do
+        it &quot;should remove the ExampleGroup from the list of ExampleGroups&quot; do
+          @example_group = Class.new(::Spec::Example::ExampleGroup).describe(&quot;Some Examples&quot;) do
+          end
+          @options.add_example_group @example_group
+          @options.example_groups.should include(@example_group)
 
-        @options.add_behaviour @behaviour
-        @options.run_examples
-        example_1_has_run.should be_true
-        example_2_has_run.should be_true
+          @options.remove_example_group @example_group
+          @options.example_groups.should_not include(@example_group)
+        end
       end
-    end
 
-    describe Options, &quot;#add_behaviour affecting behaviours&quot; do
-      it_should_behave_like &quot;Test::Unit io sink&quot;
-      before do
-        @err = StringIO.new('')
-        @out = StringIO.new('')
-        @options = Options.new(@err,@out)
-      end
+      describe &quot;#run_examples&quot; do
+        it &quot;should use the standard runner by default&quot; do
+          runner = ::Spec::Runner::ExampleGroupRunner.new(@options)
+          ::Spec::Runner::ExampleGroupRunner.should_receive(:new).
+            with(@options).
+            and_return(runner)
+          @options.user_input_for_runner = nil
 
-      it &quot;adds behaviour when behaviour has example_definitions and is not shared&quot; do
-        @behaviour = Class.new(::Spec::DSL::Example).describe(&quot;A Behaviour&quot;) do
-          it &quot;uses this behaviour&quot; do
+          @options.run_examples
+        end
+
+        it &quot;should use a custom runner when given&quot; do
+          runner = Custom::ExampleGroupRunner.new(@options, nil)
+          Custom::ExampleGroupRunner.should_receive(:new).
+            with(@options, nil).
+            and_return(runner)
+          @options.user_input_for_runner = &quot;Custom::ExampleGroupRunner&quot;
+
+          @options.run_examples
+        end
+
+        it &quot;should use a custom runner with extra options&quot; do
+          runner = Custom::ExampleGroupRunner.new(@options, 'something')
+          Custom::ExampleGroupRunner.should_receive(:new).
+            with(@options, 'something').
+            and_return(runner)
+          @options.user_input_for_runner = &quot;Custom::ExampleGroupRunner:something&quot;
+
+          @options.run_examples
+        end
+
+        describe &quot;when there are examples&quot; do
+          before(:each) do
+            @options.add_example_group Class.new(::Spec::Example::ExampleGroup)
+            @options.formatters &lt;&lt; Formatter::BaseTextFormatter.new(@options, @out)
+          end
+
+          it &quot;runs the Examples and outputs the result&quot; do
+            @options.run_examples
+            @out.string.should include(&quot;0 examples, 0 failures&quot;)
+          end
+
+          it &quot;sets #examples_run? to true&quot; do
+            @options.examples_run?.should be_false
+            @options.run_examples
+            @options.examples_run?.should be_true
+          end
+
+          describe &quot;when using heckle runner&quot; do
+            before(:each) do
+              @heckle_runner_mock = mock(&quot;HeckleRunner&quot;)
+              @options.heckle_runner = @heckle_runner_mock
+            end
+            
+            it &quot;should heckle&quot; do
+              @heckle_runner_mock.should_receive(:heckle_with)
+              @options.run_examples
+            end
+            
+            it &quot;shouldn't heckle recursively&quot; do
+              heckled = false
+              @heckle_runner_mock.should_receive(:heckle_with) {
+                heckled.should == false
+                heckled = true
+                @options.run_examples
+              }
+              @options.run_examples
+            end
+
+            it &quot;shouldn't load spec files twice&quot; do
+              example_runner = mock(&quot;ExampleGroupRunner&quot;)
+              example_runner_inside_heckle = mock(&quot;ExampleGroupRunner inside Heckle&quot;)
+
+              ExampleGroupRunner.should_receive(:new).twice.and_return(
+                example_runner, example_runner_inside_heckle
+              )
+
+              example_runner.stub!(:run)
+              example_runner.should_receive(:load_files)
+              @heckle_runner_mock.stub!(:heckle_with).and_return { @options.run_examples }
+              example_runner_inside_heckle.stub!(:run)
+              example_runner_inside_heckle.should_not_receive(:load_files)
+
+              @options.run_examples
+            end
           end
         end
 
-        @options.number_of_examples.should == 0
-        @options.add_behaviour @behaviour
-        @options.number_of_examples.should == 1
-        @options.behaviours.length.should == 1
+        describe &quot;when there are no examples&quot; do
+          before(:each) do
+            @options.formatters &lt;&lt; Formatter::BaseTextFormatter.new(@options, @out)
+          end
+
+          it &quot;does not run Examples and does not output a result&quot; do
+            @options.run_examples
+            @out.string.should_not include(&quot;examples&quot;)
+            @out.string.should_not include(&quot;failures&quot;)
+          end
+
+          it &quot;sets #examples_run? to false&quot; do
+            @options.examples_run?.should be_false
+            @options.run_examples
+            @options.examples_run?.should be_false
+          end
+        end
       end
-    end    
+    end
   end
 end</diff>
      <filename>vendor/plugins/rspec/spec/spec/runner/options_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -10,13 +10,13 @@ module Spec
 
       it &quot;should not barf on nil backtrace&quot; do
         lambda do
-          @tweaker.tweak_backtrace(@error, &quot;spec name&quot;)
+          @tweaker.tweak_backtrace(@error)
         end.should_not raise_error
       end
 
       it &quot;should remove anything from textmate ruby bundle&quot; do
         @error.set_backtrace([&quot;/Applications/TextMate.app/Contents/SharedSupport/Bundles/Ruby.tmbundle/Support/tmruby.rb:147&quot;])
-        @tweaker.tweak_backtrace(@error, &quot;spec name&quot;)
+        @tweaker.tweak_backtrace(@error)
         @error.backtrace.should be_empty
       end
 
@@ -24,7 +24,7 @@ module Spec
         [&quot;expectations&quot;, &quot;mocks&quot;, &quot;runner&quot;].each do |child|
           element=&quot;/lib/spec/#{child}/anything.rb&quot;
           @error.set_backtrace([element])
-          @tweaker.tweak_backtrace(@error, &quot;spec name&quot;)
+          @tweaker.tweak_backtrace(@error)
           unless (@error.backtrace.empty?)
             raise(&quot;Should have tweaked away '#{element}'&quot;)
           end
@@ -34,7 +34,7 @@ module Spec
       it &quot;should remove mock_frameworks/rspec&quot; do
         element = &quot;mock_frameworks/rspec&quot;
         @error.set_backtrace([element])
-        @tweaker.tweak_backtrace(@error, &quot;spec name&quot;)
+        @tweaker.tweak_backtrace(@error)
         unless (@error.backtrace.empty?)
           raise(&quot;Should have tweaked away '#{element}'&quot;)
         end
@@ -42,13 +42,13 @@ module Spec
 
       it &quot;should remove bin spec&quot; do
         @error.set_backtrace([&quot;bin/spec:&quot;])
-        @tweaker.tweak_backtrace(@error, &quot;spec name&quot;)
+        @tweaker.tweak_backtrace(@error)
         @error.backtrace.should be_empty
       end
       
       it &quot;should clean up double slashes&quot; do
         @error.set_backtrace([&quot;/a//b/c//d.rb&quot;])
-        @tweaker.tweak_backtrace(@error, &quot;spec name&quot;)
+        @tweaker.tweak_backtrace(@error)
         @error.backtrace.should include(&quot;/a/b/c/d.rb&quot;)
       end
     end</diff>
      <filename>vendor/plugins/rspec/spec/spec/runner/quiet_backtrace_tweaker_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,214 +2,190 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
 
 module Spec
   module Runner
-    
-    module ReporterSpecHelper
-      def setup
-        @io = StringIO.new
-        @options = Options.new(StringIO.new, @io)
+    describe Reporter do
+      attr_reader :formatter_output, :options, :backtrace_tweaker, :formatter, :reporter, :example_group
+      before(:each) do
+        @formatter_output = StringIO.new
+        @options = Options.new(StringIO.new, StringIO.new)
         @backtrace_tweaker = stub(&quot;backtrace tweaker&quot;, :tweak_backtrace =&gt; nil)
-        @options.backtrace_tweaker = @backtrace_tweaker
-        @formatter = mock(&quot;formatter&quot;)
-        @options.formatters &lt;&lt; @formatter
-        @reporter = Reporter.new(@options)
+        options.backtrace_tweaker = backtrace_tweaker
+        @formatter = ::Spec::Runner::Formatter::BaseTextFormatter.new(options, formatter_output)
+        options.formatters &lt;&lt; formatter
+        @reporter = Reporter.new(options)
+        @example_group = create_example_group(&quot;example_group&quot;)
+        reporter.add_example_group example_group
       end
 
       def failure
         Mocks::DuckTypeArgConstraint.new(:header, :exception)
       end
-      
-      def description(s)
-        Spec::DSL::BehaviourDescription.new(s)
+
+      def create_example_group(description_text)
+        example_group = Spec::Example::ExampleGroup.describe(description_text) do
+          it &quot;should do something&quot; do
+          end
+        end
+        example_group
       end
-    end
-    
-    describe Reporter do
-      include ReporterSpecHelper
-      before(:each) {setup}
-      
-      it &quot;should tell formatter when behaviour is added&quot; do
-        @formatter.should_receive(:add_behaviour).with(description(&quot;behaviour&quot;))
-        @reporter.add_behaviour(description(&quot;behaviour&quot;))
+
+      it &quot;should assign itself as the reporter to options&quot; do
+        options.reporter.should equal(@reporter)
+      end
+
+      it &quot;should tell formatter when example_group is added&quot; do
+        formatter.should_receive(:add_example_group).with(example_group)
+        reporter.add_example_group(example_group)
       end
 
-      it &quot;should handle multiple behaviours with same name&quot; do
-        @formatter.should_receive(:add_behaviour).exactly(3).times
-        @formatter.should_receive(:example_started).exactly(3).times
-        @formatter.should_receive(:example_passed).exactly(3).times
-        @formatter.should_receive(:start_dump)
-        @formatter.should_receive(:dump_pending)
-        @formatter.should_receive(:close).with(no_args)
-        @formatter.should_receive(:dump_summary).with(anything(), 3, 0, 0)
-        @reporter.add_behaviour(description(&quot;behaviour&quot;))
-        @reporter.example_started(&quot;spec 1&quot;)
-        @reporter.example_finished(&quot;spec 1&quot;)
-        @reporter.add_behaviour(description(&quot;behaviour&quot;))
-        @reporter.example_started(&quot;spec 2&quot;)
-        @reporter.example_finished(&quot;spec 2&quot;)
-        @reporter.add_behaviour(description(&quot;behaviour&quot;))
-        @reporter.example_started(&quot;spec 3&quot;)
-        @reporter.example_finished(&quot;spec 3&quot;)
-        @reporter.dump
+      it &quot;should handle multiple example_groups with same name&quot; do
+        formatter.should_receive(:add_example_group).exactly(3).times
+        formatter.should_receive(:example_started).exactly(3).times
+        formatter.should_receive(:example_passed).exactly(3).times
+        formatter.should_receive(:start_dump)
+        formatter.should_receive(:dump_pending)
+        formatter.should_receive(:close).with(no_args)
+        formatter.should_receive(:dump_summary).with(anything(), 3, 0, 0)
+        reporter.add_example_group(create_example_group(&quot;example_group&quot;))
+        reporter.example_started(&quot;spec 1&quot;)
+        reporter.example_finished(&quot;spec 1&quot;)
+        reporter.add_example_group(create_example_group(&quot;example_group&quot;))
+        reporter.example_started(&quot;spec 2&quot;)
+        reporter.example_finished(&quot;spec 2&quot;)
+        reporter.add_example_group(create_example_group(&quot;example_group&quot;))
+        reporter.example_started(&quot;spec 3&quot;)
+        reporter.example_finished(&quot;spec 3&quot;)
+        reporter.dump
       end
 
       it &quot;should handle multiple examples with the same name&quot; do
         error=RuntimeError.new
-        @formatter.should_receive(:add_behaviour).exactly(2).times
-        @formatter.should_receive(:example_passed).with(&quot;example&quot;).exactly(2).times
-        @formatter.should_receive(:example_failed).with(&quot;example&quot;, 1, failure)
-        @formatter.should_receive(:example_failed).with(&quot;example&quot;, 2, failure)
-        @formatter.should_receive(:dump_failure).exactly(2).times
-        @formatter.should_receive(:start_dump)
-        @formatter.should_receive(:dump_pending)
-        @formatter.should_receive(:close).with(no_args)
-        @formatter.should_receive(:dump_summary).with(anything(), 4, 2, 0)
-        @backtrace_tweaker.should_receive(:tweak_backtrace).twice
-        @reporter.add_behaviour(description(&quot;behaviour&quot;))
-        @reporter.example_finished(&quot;example&quot;)
-        @reporter.example_finished(&quot;example&quot;, error)
-        @reporter.add_behaviour(description(&quot;behaviour&quot;))
-        @reporter.example_finished(&quot;example&quot;)
-        @reporter.example_finished(&quot;example&quot;, error)
-        @reporter.dump
+        passing = ExampleGroup.new(&quot;example&quot;)
+        failing = ExampleGroup.new(&quot;example&quot;)
+
+        formatter.should_receive(:add_example_group).exactly(2).times
+        formatter.should_receive(:example_passed).with(passing).exactly(2).times
+        formatter.should_receive(:example_failed).with(failing, 1, failure)
+        formatter.should_receive(:example_failed).with(failing, 2, failure)
+        formatter.should_receive(:dump_failure).exactly(2).times
+        formatter.should_receive(:start_dump)
+        formatter.should_receive(:dump_pending)
+        formatter.should_receive(:close).with(no_args)
+        formatter.should_receive(:dump_summary).with(anything(), 4, 2, 0)
+        backtrace_tweaker.should_receive(:tweak_backtrace).twice
+
+        reporter.add_example_group(create_example_group(&quot;example_group&quot;))
+        reporter.example_finished(passing)
+        reporter.example_finished(failing, error)
+
+        reporter.add_example_group(create_example_group(&quot;example_group&quot;))
+        reporter.example_finished(passing)
+        reporter.example_finished(failing, error)
+        reporter.dump
       end
 
       it &quot;should push stats to formatter even with no data&quot; do
-        @formatter.should_receive(:start_dump)
-        @formatter.should_receive(:dump_pending)
-        @formatter.should_receive(:dump_summary).with(anything(), 0, 0, 0)
-        @formatter.should_receive(:close).with(no_args)
-        @reporter.dump
+        formatter.should_receive(:start_dump)
+        formatter.should_receive(:dump_pending)
+        formatter.should_receive(:dump_summary).with(anything(), 0, 0, 0)
+        formatter.should_receive(:close).with(no_args)
+        reporter.dump
       end
-      
+
       it &quot;should push time to formatter&quot; do
-        @formatter.should_receive(:start).with(5)
-        @formatter.should_receive(:start_dump)
-        @formatter.should_receive(:dump_pending)
-        @formatter.should_receive(:close).with(no_args)
-        @formatter.should_receive(:dump_summary) do |time, a, b|
+        formatter.should_receive(:start).with(5)
+        formatter.should_receive(:start_dump)
+        formatter.should_receive(:dump_pending)
+        formatter.should_receive(:close).with(no_args)
+        formatter.should_receive(:dump_summary) do |time, a, b|
           time.to_s.should match(/[0-9].[0-9|e|-]+/)
         end
-        @reporter.start(5)
-        @reporter.end
-        @reporter.dump
-      end
-    end
-    
-    describe Reporter, &quot;reporting one passing example&quot; do
-      include ReporterSpecHelper
-      before(:each) {setup}
-
-      it &quot;should tell formatter example passed&quot; do
-        @formatter.should_receive(:example_passed)
-        @reporter.example_finished(&quot;example&quot;)
-      end
-      
-      it &quot;should not delegate to backtrace tweaker&quot; do
-        @formatter.should_receive(:example_passed)
-        @backtrace_tweaker.should_not_receive(:tweak_backtrace)
-        @reporter.example_finished(&quot;example&quot;)
+        reporter.start(5)
+        reporter.end
+        reporter.dump
       end
 
-      it &quot;should account for passing example in stats&quot; do
-        @formatter.should_receive(:example_passed)
-        @formatter.should_receive(:start_dump)
-        @formatter.should_receive(:dump_pending)
-        @formatter.should_receive(:dump_summary).with(anything(), 1, 0, 0)
-        @formatter.should_receive(:close).with(no_args)
-        @reporter.example_finished(&quot;example&quot;)
-        @reporter.dump
-      end
-    end
+      describe Reporter, &quot;reporting one passing example&quot; do
+        it &quot;should tell formatter example passed&quot; do
+          formatter.should_receive(:example_passed)
+          reporter.example_finished(&quot;example&quot;)
+        end
 
-    describe Reporter, &quot;reporting one failing example&quot; do
-      include ReporterSpecHelper
-      before(:each) {setup}
+        it &quot;should not delegate to backtrace tweaker&quot; do
+          formatter.should_receive(:example_passed)
+          backtrace_tweaker.should_not_receive(:tweak_backtrace)
+          reporter.example_finished(&quot;example&quot;)
+        end
 
-      it &quot;should tell formatter that example failed&quot; do
-        @formatter.should_receive(:example_failed)
-        @reporter.example_finished(&quot;example&quot;, RuntimeError.new)
-      end
-      
-      it &quot;should delegate to backtrace tweaker&quot; do
-        @formatter.should_receive(:example_failed)
-        @backtrace_tweaker.should_receive(:tweak_backtrace)
-        @reporter.example_finished(&quot;spec&quot;, RuntimeError.new)
+        it &quot;should account for passing example in stats&quot; do
+          formatter.should_receive(:example_passed)
+          formatter.should_receive(:start_dump)
+          formatter.should_receive(:dump_pending)
+          formatter.should_receive(:dump_summary).with(anything(), 1, 0, 0)
+          formatter.should_receive(:close).with(no_args)
+          reporter.example_finished(&quot;example&quot;)
+          reporter.dump
+        end
       end
 
-      it &quot;should account for failing example in stats&quot; do
-        @formatter.should_receive(:add_behaviour)
-        @formatter.should_receive(:example_failed).with(&quot;example&quot;, 1, failure)
-        @formatter.should_receive(:start_dump)
-        @formatter.should_receive(:dump_pending)
-        @formatter.should_receive(:dump_failure).with(1, anything())
-        @formatter.should_receive(:dump_summary).with(anything(), 1, 1, 0)
-        @formatter.should_receive(:close).with(no_args)
-        @reporter.add_behaviour(description(&quot;behaviour&quot;))
-        @reporter.example_finished(&quot;example&quot;, RuntimeError.new)
-        @reporter.dump
-      end
-      
-    end
-    
-    describe Reporter, &quot;reporting one pending example (Not Yet Implemented)&quot; do
-      include ReporterSpecHelper
-      before(:each) {setup}
-
-      it &quot;should tell formatter example is pending&quot; do
-        @formatter.should_receive(:example_pending).with(description(&quot;behaviour&quot;), &quot;example&quot;, &quot;Not Yet Implemented&quot;)
-        @formatter.should_receive(:add_behaviour).with(description(&quot;behaviour&quot;))
-        @reporter.add_behaviour(description('behaviour'))
-        @reporter.example_finished(&quot;example&quot;, nil, nil, true)
-      end
+      describe Reporter, &quot;reporting one failing example&quot; do
+        it &quot;should tell formatter that example failed&quot; do
+          example = example_group.it(&quot;should do something&quot;) {}
+          formatter.should_receive(:example_failed)
+          reporter.example_finished(example, RuntimeError.new)
+        end
 
-      it &quot;should account for pending example in stats&quot; do
-        @formatter.should_receive(:example_pending).with(description(&quot;behaviour&quot;), &quot;example&quot;, &quot;Not Yet Implemented&quot;)
-        @formatter.should_receive(:start_dump)
-        @formatter.should_receive(:dump_pending)
-        @formatter.should_receive(:dump_summary).with(anything(), 1, 0, 1)
-        @formatter.should_receive(:add_behaviour).with(description(&quot;behaviour&quot;))
-        @formatter.should_receive(:close).with(no_args)
-        @reporter.add_behaviour(description('behaviour'))
-        @reporter.example_finished(&quot;example&quot;, nil, nil, true)
-        @reporter.dump
-      end
-    end
+        it &quot;should delegate to backtrace tweaker&quot; do
+          formatter.should_receive(:example_failed)
+          backtrace_tweaker.should_receive(:tweak_backtrace)
+          reporter.example_finished(ExampleGroup.new(&quot;example&quot;), RuntimeError.new)
+        end
 
-    describe Reporter, &quot;reporting one pending example (ExamplePendingError)&quot; do
-      include ReporterSpecHelper
-      before(:each) {setup}
+        it &quot;should account for failing example in stats&quot; do
+          example = ExampleGroup.new(&quot;example&quot;)
+          formatter.should_receive(:example_failed).with(example, 1, failure)
+          formatter.should_receive(:start_dump)
+          formatter.should_receive(:dump_pending)
+          formatter.should_receive(:dump_failure).with(1, anything())
+          formatter.should_receive(:dump_summary).with(anything(), 1, 1, 0)
+          formatter.should_receive(:close).with(no_args)
+          reporter.example_finished(example, RuntimeError.new)
+          reporter.dump
+        end
 
-      it &quot;should tell formatter example is pending&quot; do
-        @formatter.should_receive(:example_pending).with(description(&quot;behaviour&quot;), &quot;example&quot;, &quot;reason&quot;)
-        @formatter.should_receive(:add_behaviour).with(description(&quot;behaviour&quot;))
-        @reporter.add_behaviour(description('behaviour'))
-        @reporter.example_finished(&quot;example&quot;, Spec::DSL::ExamplePendingError.new(&quot;reason&quot;), nil, false)
       end
 
-      it &quot;should account for pending example in stats&quot; do
-        @formatter.should_receive(:example_pending).with(description(&quot;behaviour&quot;), &quot;example&quot;, &quot;reason&quot;)
-        @formatter.should_receive(:start_dump)
-        @formatter.should_receive(:dump_pending)
-        @formatter.should_receive(:dump_summary).with(anything(), 1, 0, 1)
-        @formatter.should_receive(:close).with(no_args)
-        @formatter.should_receive(:add_behaviour).with(description(&quot;behaviour&quot;))
-        @reporter.add_behaviour(description('behaviour'))
-        @reporter.example_finished(&quot;example&quot;, Spec::DSL::ExamplePendingError.new(&quot;reason&quot;), nil, false)
-        @reporter.dump
-      end
-    end
+      describe Reporter, &quot;reporting one pending example (ExamplePendingError)&quot; do
+        it &quot;should tell formatter example is pending&quot; do
+          example = ExampleGroup.new(&quot;example&quot;)
+          formatter.should_receive(:example_pending).with(example, &quot;reason&quot;)
+          formatter.should_receive(:add_example_group).with(example_group)
+          reporter.add_example_group(example_group)
+          reporter.example_finished(example, Spec::Example::ExamplePendingError.new(&quot;reason&quot;))
+        end
 
-    describe Reporter, &quot;reporting one pending example (PendingFixedError)&quot; do
-      include ReporterSpecHelper
-      before(:each) {setup}
+        it &quot;should account for pending example in stats&quot; do
+          example = ExampleGroup.new(&quot;example&quot;)
+          formatter.should_receive(:example_pending).with(example, &quot;reason&quot;)
+          formatter.should_receive(:start_dump)
+          formatter.should_receive(:dump_pending)
+          formatter.should_receive(:dump_summary).with(anything(), 1, 0, 1)
+          formatter.should_receive(:close).with(no_args)
+          formatter.should_receive(:add_example_group).with(example_group)
+          reporter.add_example_group(example_group)
+          reporter.example_finished(example, Spec::Example::ExamplePendingError.new(&quot;reason&quot;))
+          reporter.dump
+        end
+      end
 
-      it &quot;should tell formatter pending example is fixed&quot; do
-        @formatter.should_receive(:example_failed) do |name, counter, failure|
-          failure.header.should == &quot;'behaviour example' FIXED&quot;
+      describe Reporter, &quot;reporting one pending example (PendingExampleFixedError)&quot; do
+        it &quot;should tell formatter pending example is fixed&quot; do
+          formatter.should_receive(:example_failed) do |name, counter, failure|
+            failure.header.should == &quot;'example_group should do something' FIXED&quot;
+          end
+          formatter.should_receive(:add_example_group).with(example_group)
+          reporter.add_example_group(example_group)
+          reporter.example_finished(example_group.examples.first, Spec::Example::PendingExampleFixedError.new(&quot;reason&quot;))
         end
-        @formatter.should_receive(:add_behaviour).with(description(&quot;behaviour&quot;))
-        @reporter.add_behaviour(description('behaviour'))
-        @reporter.example_finished(&quot;example&quot;, Spec::DSL::PendingFixedError.new(&quot;reason&quot;), nil, false)
       end
     end
   end</diff>
      <filename>vendor/plugins/rspec/spec/spec/runner/reporter_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,124 +1,79 @@
 require File.dirname(__FILE__) + '/../../spec_helper.rb'
 
-describe &quot;c&quot; do
-
-  it &quot;1&quot; do
-  end
-
-  it &quot;2&quot; do
-  end
-
-end
-
-describe &quot;d&quot; do
-
-  it &quot;3&quot; do
-  end
-
-  it &quot;4&quot; do
-  end
-
-end
-
-class SpecParserSubject
-end
-
-describe SpecParserSubject do
-  
-  it &quot;5&quot; do
-  end
-  
-end
-
-describe SpecParserSubject, &quot;described&quot; do
-  
-  it &quot;6&quot; do
-  end
-  
-end
-
-describe SpecParserSubject, &quot;described&quot;, :something =&gt; :something_else do
-   
-   it &quot;7&quot; do
-   end
-
-end
-
-describe &quot;described&quot;, :something =&gt; :something_else do
-  
-  it &quot;8&quot; do
-  end
-  
-end
-   
-
 describe &quot;SpecParser&quot; do
+  attr_reader :parser, :file
   before(:each) do
-    @p = Spec::Runner::SpecParser.new
+    @parser = Spec::Runner::SpecParser.new
+    @file = &quot;#{File.dirname(__FILE__)}/spec_parser/spec_parser_fixture.rb&quot;
+    require file
   end
 
   it &quot;should find spec name for 'specify' at same line&quot; do
-    @p.spec_name_for(File.open(__FILE__), 5).should == &quot;c 1&quot;
+    parser.spec_name_for(file, 5).should == &quot;c 1&quot;
   end
 
   it &quot;should find spec name for 'specify' at end of spec line&quot; do
-    @p.spec_name_for(File.open(__FILE__), 6).should == &quot;c 1&quot;
+    parser.spec_name_for(file, 6).should == &quot;c 1&quot;
   end
 
   it &quot;should find context for 'context' above all specs&quot; do
-    @p.spec_name_for(File.open(__FILE__), 4).should == &quot;c&quot;
+    parser.spec_name_for(file, 4).should == &quot;c&quot;
   end
 
   it &quot;should find spec name for 'it' at same line&quot; do
-    @p.spec_name_for(File.open(__FILE__), 15).should == &quot;d 3&quot;
+    parser.spec_name_for(file, 15).should == &quot;d 3&quot;
   end
 
   it &quot;should find spec name for 'it' at end of spec line&quot; do
-    @p.spec_name_for(File.open(__FILE__), 16).should == &quot;d 3&quot;
+    parser.spec_name_for(file, 16).should == &quot;d 3&quot;
   end
 
   it &quot;should find context for 'describe' above all specs&quot; do
-    @p.spec_name_for(File.open(__FILE__), 14).should == &quot;d&quot;
+    parser.spec_name_for(file, 14).should == &quot;d&quot;
   end
 
  it &quot;should find nearest example name between examples&quot; do
-   @p.spec_name_for(File.open(__FILE__), 7).should == &quot;c 1&quot;
+   parser.spec_name_for(file, 7).should == &quot;c 1&quot;
  end
 
   it &quot;should find nothing outside a context&quot; do
-    @p.spec_name_for(File.open(__FILE__), 2).should be_nil
+    parser.spec_name_for(file, 2).should be_nil
   end
-  
+
   it &quot;should find context name for type&quot; do
-    @p.spec_name_for(File.open(__FILE__), 26).should == &quot;SpecParserSubject&quot;
+    parser.spec_name_for(file, 26).should == &quot;SpecParserSubject&quot;
   end
-  
+
   it &quot;should find context and spec name for type&quot; do
-    @p.spec_name_for(File.open(__FILE__), 28).should == &quot;SpecParserSubject 5&quot;
+    parser.spec_name_for(file, 28).should == &quot;SpecParserSubject 5&quot;
   end
 
   it &quot;should find context and description for type&quot; do
-    @p.spec_name_for(File.open(__FILE__), 33).should == &quot;SpecParserSubject described&quot;
+    parser.spec_name_for(file, 33).should == &quot;SpecParserSubject described&quot;
   end
-  
+
   it &quot;should find context and description and example for type&quot; do
-    @p.spec_name_for(File.open(__FILE__), 36).should == &quot;SpecParserSubject described 6&quot;
+    parser.spec_name_for(file, 36).should == &quot;SpecParserSubject described 6&quot;
   end
 
   it &quot;should find context and description for type with modifications&quot; do
-    @p.spec_name_for(File.open(__FILE__), 40).should == &quot;SpecParserSubject described&quot;
+    parser.spec_name_for(file, 40).should == &quot;SpecParserSubject described&quot;
   end
-  
+
   it &quot;should find context and described and example for type with modifications&quot; do
-    @p.spec_name_for(File.open(__FILE__), 43).should == &quot;SpecParserSubject described 7&quot;
+    parser.spec_name_for(file, 43).should == &quot;SpecParserSubject described 7&quot;
   end
-  
-  it &quot;should find context and described for type with modifications&quot; do
-    @p.spec_name_for(File.open(__FILE__), 47).should == &quot;described&quot;
+
+  it &quot;should find example group&quot; do
+    parser.spec_name_for(file, 47).should == &quot;described&quot;
   end
-  
-  it &quot;should find context and described for type with modifications&quot; do
-    @p.spec_name_for(File.open(__FILE__), 50).should == &quot;described 8&quot;
+
+  it &quot;should find example&quot; do
+    parser.spec_name_for(file, 50).should == &quot;described 8&quot;
+  end
+
+  it &quot;should find nested example&quot; do
+    parser.spec_name_for(file, 63).should == &quot;e f 11&quot;
   end
-  
+
 end</diff>
      <filename>vendor/plugins/rspec/spec/spec/runner/spec_parser_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -51,6 +51,9 @@ module Spec
           [1]
         end
         
+        def items
+          @items_in_collection_with_size_method
+        end
       end
 
       class HandCodedMock
@@ -96,6 +99,7 @@ module Spec
 end
 
 module Custom
+  require 'spec/runner/formatter/base_text_formatter'
   class Formatter &lt; Spec::Runner::Formatter::BaseTextFormatter
     attr_reader :options, :where
     
@@ -118,6 +122,12 @@ module Custom
     def initialize(options)
       @options = options
     end
+
+    def diff_as_object(target, expected)
+      &quot;&quot;
+    end
   end
 end
 
+class FakeReporter &lt; Spec::Runner::Reporter
+end</diff>
      <filename>vendor/plugins/rspec/spec/spec/spec_classes.rb</filename>
    </modified>
    <modified>
      <diff>@@ -8,7 +8,7 @@ module Spec
         class MyWorld
           attr :scenario_ran
         end
-        instance = MyWorld.new
+        instance = World.create(MyWorld)
         scenario = ScenarioBuilder.new.to_scenario do
           @scenario_ran = true
         end
@@ -17,10 +17,10 @@ module Spec
         step = GivenScenario.new 'scenario name'
         
         # when
-        step.perform(instance)
+        step.perform(instance, nil)
         
         # then
-        ensure_that instance.scenario_ran, is(true)
+        instance.scenario_ran.should be_true
       end
     end
   end</diff>
      <filename>vendor/plugins/rspec/spec/spec/story/given_scenario_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -15,11 +15,11 @@ module Spec
           scenarios = scenario_collector.scenarios
           
           # then
-          ensure_that scenarios.size, is(2)
-          ensure_that scenarios[0].name, is('scenario1')
-          ensure_that scenarios[0].story, is(story)
-          ensure_that scenarios[1].name, is('scenario2')
-          ensure_that scenarios[1].story, is(story)
+          scenario_collector.should have(2).scenarios
+          scenarios.first.name.should == 'scenario1'
+          scenarios.first.story.should equal(story)
+          scenarios.last.name.should == 'scenario2'
+          scenarios.last.story.should equal(story)
         end
       end
     end</diff>
      <filename>vendor/plugins/rspec/spec/spec/story/runner/scenario_collector_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -20,7 +20,7 @@ module Spec
           scenario_runner.run(scenario, world)
           
           # then
-          ensure_that $answer, is(42)
+          $answer.should == 42
         end
         
         it 'should allow scenarios to share methods' do
@@ -69,75 +69,121 @@ module Spec
           scenario_runner.run(scenario, world)
           
           # then
-          # TODO verify_all
         end
-        
-        it 'should notify listeners when a scenario succeeds' do
-          # given
-          world = stub_everything('world')
-          story = Story.new 'story', 'narrative' do end
-          scenario = Scenario.new story, 'scenario1' do
-            # succeeds
+        describe &quot;when a scenario succeeds&quot; do
+          before(:each) do
+            # given
+            @world = stub_everything('world')
+            @story = Story.new 'story', 'narrative' do end
+            @scenario = Scenario.new @story, 'scenario1' do
+              # succeeds
+            end
+            @scenario_runner = ScenarioRunner.new            
           end
-          scenario_runner = ScenarioRunner.new
-          mock_listener1 = stub_everything('listener1')
-          mock_listener2 = stub_everything('listener2')
-          scenario_runner.add_listener(mock_listener1)
-          scenario_runner.add_listener(mock_listener2)
-          
-          # expect
-          mock_listener1.should_receive(:scenario_succeeded).with('story', 'scenario1')
-          mock_listener2.should_receive(:scenario_succeeded).with('story', 'scenario1')
           
-          # when
-          scenario_runner.run(scenario, world)
+          it 'should notify listeners' do
+            #given
+            mock_listener1 = stub_everything('listener1')
+            mock_listener2 = stub_everything('listener2')
+            @scenario_runner.add_listener(mock_listener1)
+            @scenario_runner.add_listener(mock_listener2)
+            
+            # expect
+            mock_listener1.should_receive(:scenario_succeeded).with('story', 'scenario1')
+            mock_listener2.should_receive(:scenario_succeeded).with('story', 'scenario1')
+            
+            # when
+            @scenario_runner.run(@scenario, @world)
+
+            # then
+          end
           
-          # then
-          # TODO verify_all
+          it &quot;should return true&quot; do
+            #when
+            success = @scenario_runner.run(@scenario, @world)
+            
+            #then
+            success.should == true
+          end
         end
-        
-        it 'should notify listeners when a scenario raises an error' do
-          # given
-          error = RuntimeError.new('oops')
-          story = Story.new 'title', 'narrative' do end
-          scenario = Scenario.new story, 'scenario1' do
-            raise error
+
+        describe &quot;when a scenario raises an error (other than a pending error)&quot; do
+          before(:each) do
+            # given
+            @error = RuntimeError.new('oops')
+            @story = Story.new 'title', 'narrative' do end
+            @scenario = Scenario.new @story, 'scenario1' do
+            end
+            @scenario_runner = ScenarioRunner.new
+            @world = stub_everything
+
+            # expect
+            @world.should_receive(:errors).twice.and_return([@error, @error])
           end
-          scenario_runner = ScenarioRunner.new
-          mock_listener = stub_everything('listener')
-          scenario_runner.add_listener(mock_listener)
-          world = stub_everything
           
-          # expect
-          mock_listener.should_receive(:scenario_failed).with('title', 'scenario1', error)
+          it 'should notify listeners ONCE' do
+            #given
+            mock_listener = stub_everything('listener')
+            @scenario_runner.add_listener(mock_listener)
+            
+            #expect
+            mock_listener.should_receive(:scenario_failed).with('title', 'scenario1', @error).once
+
+            # when
+            @scenario_runner.run @scenario, @world
+
+            # then
+          end
+          
+          it &quot;should return false&quot; do
+            # when
+            success = @scenario_runner.run @scenario, @world
+
+            # then
+            success.should == false
+          end
           
-          # when
-          scenario_runner.run scenario, world
           
-          # then
-          # TODO verify_all
         end
         
-        it 'should notify listeners when a scenario is pending' do
-          # given
-          story = Story.new 'title', 'narrative' do end
-          scenario = Scenario.new story, 'scenario1' do
-            pending 'todo'
+        describe &quot;when a scenario is pending&quot; do
+          before(:each) do
+            # given
+            @pending_error = Spec::Example::ExamplePendingError.new('todo')
+            @story = Story.new 'title', 'narrative' do end
+            @scenario = Scenario.new @story, 'scenario1' do
+            end
+            @scenario_runner = ScenarioRunner.new
+            @world = stub_everything
+            
+            # expect
+            @world.should_receive(:errors).twice.and_return([@pending_error, @pending_error])
           end
-          scenario_runner = ScenarioRunner.new
-          mock_listener = mock('listener')
-          scenario_runner.add_listener(mock_listener)
-          world = World.create
           
-          # expect
-          mock_listener.should_receive(:scenario_started).with('title', 'scenario1')
-          mock_listener.should_receive(:scenario_pending).with('title', 'scenario1', 'todo')
+          it 'should notify listeners' do
+            #given 
+            mock_listener = mock('listener')
+            @scenario_runner.add_listener(mock_listener)
+            
+            # expect
+            mock_listener.should_receive(:scenario_started).with('title', 'scenario1')
+            mock_listener.should_receive(:scenario_pending).with('title', 'scenario1', 'todo').once
+
+            # when
+            @scenario_runner.run @scenario, @world
+
+            # then
+          end
+          
+          it &quot;should return true&quot; do
+            # when
+            success = @scenario_runner.run @scenario, @world
+
+            # then
+            success.should == true
+          end
           
-          # when
-          scenario_runner.run scenario, world
           
-          # then
-          # TODO verify_all
         end
       end
     end</diff>
      <filename>vendor/plugins/rspec/spec/spec/story/runner/scenario_runner_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -14,11 +14,11 @@ module Spec
           stories = story_runner.stories
           
           # then
-          ensure_that stories.size, is(2)
-          ensure_that stories[0].title, is('title1')
-          ensure_that stories[0].narrative, is('narrative1')
-          ensure_that stories[1].title, is('title2')
-          ensure_that stories[1].narrative, is('narrative2')
+          story_runner.should have(2).stories
+          stories.first.title.should == 'title1'
+          stories.first.narrative.should == 'narrative1'
+          stories.last.title.should == 'title2'
+          stories.last.narrative.should == 'narrative2'
         end
         
         it 'should gather all the scenarios in the stories' do
@@ -36,10 +36,10 @@ module Spec
           scenarios = story_runner.scenarios
           
           # then
-          ensure_that scenarios.size, is(3)
-          ensure_that scenarios[0].name, is('scenario1')
-          ensure_that scenarios[1].name, is('scenario2')
-          ensure_that scenarios[2].name, is('scenario3')
+          story_runner.should have(3).scenarios
+          scenarios[0].name.should == 'scenario1'
+          scenarios[1].name.should == 'scenario2'
+          scenarios[2].name.should == 'scenario3'
         end
         
         # captures worlds passed into a ScenarioRunner
@@ -64,10 +64,48 @@ module Spec
           
           # then
           worlds = scenario_world_catcher.worlds
-          ensure_that worlds.size, is(2)
+          scenario_world_catcher.should have(2).worlds
           worlds[0].should_not == worlds[1]
         end
         
+        it &quot;should return false if the scenario runner returns false ever&quot; do
+          #given
+          stub_scenario_runner = stub_everything
+          story_runner = StoryRunner.new(stub_scenario_runner)
+          story_runner.Story 'story', 'narrative' do
+            Scenario 'scenario1' do end
+            Scenario 'scenario2' do end
+          end
+          
+          # expect
+          stub_scenario_runner.should_receive(:run).once.and_return(false,true)
+          
+          # when
+          success = story_runner.run_stories
+          
+          #then
+          success.should == false
+        end
+        
+        it &quot;should return true if the scenario runner returns true for all scenarios&quot; do
+          #given
+          stub_scenario_runner = stub_everything
+          story_runner = StoryRunner.new(stub_scenario_runner)
+          story_runner.Story 'story', 'narrative' do
+            Scenario 'scenario1' do end
+            Scenario 'scenario2' do end
+          end
+          
+          # expect
+          stub_scenario_runner.should_receive(:run).once.and_return(true,true)
+          
+          # when
+          success = story_runner.run_stories
+          
+          #then
+          success.should == true
+        end
+        
         it 'should use the provided world creator to create worlds' do
           # given
           stub_scenario_runner = stub_everything
@@ -85,7 +123,6 @@ module Spec
           story_runner.run_stories
           
           # then
-          # TODO verify_all
         end
         
         it 'should notify listeners of the scenario count when the run starts' do
@@ -112,7 +149,6 @@ module Spec
           story_runner.run_stories
           
           # then
-          # TODO verify_all
         end
         
         it 'should notify listeners when a story starts' do
@@ -141,7 +177,6 @@ module Spec
           story_runner.run_stories
           
           # then
-          # TODO verify_all
         end
         
         it 'should notify listeners when the run ends' do
@@ -163,7 +198,6 @@ module Spec
           story_runner.run_stories
           
           # then
-          # TODO verify_all
         end
         
         it 'should run a story in an instance of a specified class' do
@@ -198,18 +232,16 @@ module Spec
           scenario_world_catcher.worlds[0].size.should == 3
         end
         
-        it 'should store the current running story in the world' do
+        it 'should find a scenario in the current story by name' do
           # given
-          $stories = []
           story_runner = StoryRunner.new(ScenarioRunner.new)
-          story_runner.Story 'title1', 'narrative1' do
-            Scenario 'scenario1' do
-              $stories &lt;&lt; @current_story
+          $scenario = nil
+          
+          story_runner.Story 'title', 'narrative' do
+            Scenario 'first scenario' do
             end
-          end
-          story_runner.Story 'title2', 'narrative2' do
-            Scenario 'scenario2' do
-              $stories &lt;&lt; @current_story
+            Scenario 'second scenario' do
+              $scenario = StoryRunner.scenario_from_current_story 'first scenario'
             end
           end
           
@@ -217,29 +249,44 @@ module Spec
           story_runner.run_stories
           
           # then
-          $stories.size.should == 2
-          ensure_that $stories[0].title, is('title1')
-          ensure_that $stories[1].title, is('title2')
+          $scenario.name.should == 'first scenario'
         end
-      
-        it 'should find a scenario in the current story by name' do
-          # given
+        
+        it &quot;should clean the steps between stories&quot; do
+          #given
           story_runner = StoryRunner.new(ScenarioRunner.new)
-          $scenario = nil
+          result = mock 'result'
           
-          story_runner.Story 'title', 'narrative' do
+          step1 = Step.new('step') do
+            result.one
+          end
+          steps1 = StepGroup.new
+          steps1.add :when, step1
+          
+          story_runner.Story 'title', 'narrative', :steps_for =&gt; steps1 do
             Scenario 'first scenario' do
+              When 'step'
             end
+          end
+          
+          step2 = Step.new('step') do
+            result.two
+          end
+          steps2 = StepGroup.new
+          steps2.add :when, step2
+          
+          story_runner.Story 'title2', 'narrative', :steps_for =&gt; steps2 do
             Scenario 'second scenario' do
-              $scenario = StoryRunner.scenario_from_current_story 'first scenario'
+              When 'step'
             end
           end
           
-          # when
-          story_runner.run_stories
+          #then
+          result.should_receive(:one)
+          result.should_receive(:two)
           
-          # then
-          $scenario.name.should == 'first scenario'
+          #when
+          story_runner.run_stories
         end
       end
     end</diff>
      <filename>vendor/plugins/rspec/spec/spec/story/runner/story_runner_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,64 +1,93 @@
 require File.dirname(__FILE__) + '/story_helper'
+require 'spec/runner/formatter/story/plain_text_formatter'
+require 'spec/runner/formatter/story/html_formatter'
 
 module Spec
   module Story
-    describe Runner do
-      def dev_null
-        io = StringIO.new
-        def io.write(str)
-          str.to_s.size
-        end
-        return io
-      end
-      
-      before :each do
-        Kernel.stub!(:at_exit)
-        @stdout, $stdout = $stdout, dev_null
-        @argv = Array.new(ARGV)
-        Runner.module_eval { @run_options = @story_runner = nil }
+    describe Runner, &quot;module&quot; do
+      before(:each) do
+        @world_creator = World.dup
+        @runner_module = Runner.dup
+        @runner_module.instance_eval {@story_runner = nil}
+        @runner_module.stub!(:register_exit_hook)
       end
       
-      after :each do
-        $stdout = @stdout
-        ARGV.replace @argv
-        Runner.module_eval { @run_options = @story_runner = nil }
+      def create_options(args=[])
+        Spec::Runner::OptionParser.parse(args, StringIO.new, StringIO.new)
       end
       
       it 'should wire up a singleton StoryRunner' do
-        Runner.story_runner.should_not be_nil
+        @runner_module.story_runner.should_not be_nil
       end
       
       it 'should set its options based on ARGV' do
         # given
-        ARGV &lt;&lt; '--dry-run'
-        
+        @runner_module.should_receive(:run_options).and_return(
+          create_options(['--dry-run'])
+        )
+
         # when
-        options = Runner.run_options
+        options = @runner_module.run_options
         
         # then
-        ensure_that options.dry_run, is(true)
+        options.dry_run.should be_true
       end
+      
+      describe &quot;initialization&quot; do
+        
+        before(:each) do
+          # given
+          @story_runner = mock('story runner', :null_object =&gt; true)
+          @scenario_runner = mock('scenario runner', :null_object =&gt; true)
+          @world_creator = mock('world', :null_object =&gt; true)
+        
+          @runner_module.stub!(:world_creator).and_return(@world_creator)
+          @runner_module.stub!(:create_story_runner).and_return(@story_runner)
+          @runner_module.stub!(:scenario_runner).and_return(@scenario_runner)
+        end
 
-      it 'should add a documenter to the runner classes if one is specified' do
-        # given
-        ARGV &lt;&lt; &quot;--format&quot; &lt;&lt; &quot;specdoc&quot;
-        story_runner = mock('story runner')
-        scenario_runner = mock('scenario runner')
+        it 'should add a reporter to the runner classes' do
+          @runner_module.should_receive(:run_options).and_return(
+            create_options
+          )
         
-        story_runner.stub!(:add_listener).with(an_instance_of(Reporter::PlainTextReporter))
-        scenario_runner.stub!(:add_listener).with(an_instance_of(Reporter::PlainTextReporter))
+          # expect
+          @world_creator.should_receive(:add_listener).with(an_instance_of(Spec::Runner::Formatter::Story::PlainTextFormatter))
+          @story_runner.should_receive(:add_listener).with(an_instance_of(Spec::Runner::Formatter::Story::PlainTextFormatter))
+          @scenario_runner.should_receive(:add_listener).with(an_instance_of(Spec::Runner::Formatter::Story::PlainTextFormatter))
+        
+          # when
+          @runner_module.story_runner
+        end
+      
+        it 'should add a documenter to the runner classes if one is specified' do
+        
+          @runner_module.should_receive(:run_options).and_return(
+            create_options([&quot;--format&quot;,&quot;html&quot;])
+          )
 
-        Runner::StoryRunner.stub!(:new).and_return(story_runner)
-        Runner::ScenarioRunner.stub!(:new).and_return(scenario_runner)
+          # expect
+          @world_creator.should_receive(:add_listener).with(an_instance_of(Spec::Runner::Formatter::Story::HtmlFormatter))
+          @story_runner.should_receive(:add_listener).with(an_instance_of(Spec::Runner::Formatter::Story::HtmlFormatter))
+          @scenario_runner.should_receive(:add_listener).with(an_instance_of(Spec::Runner::Formatter::Story::HtmlFormatter))
+        
+          # when
+          @runner_module.story_runner
+        end
+      
+        it 'should add any registered listener to the runner classes' do
+          # given
+          listener = Object.new
         
-        # expect
-        World.should_receive(:add_listener).with(an_instance_of(Documenter::PlainTextDocumenter))
-        story_runner.should_receive(:add_listener).with(an_instance_of(Documenter::PlainTextDocumenter))
-        scenario_runner.should_receive(:add_listener).with(an_instance_of(Documenter::PlainTextDocumenter))
+          # expect
+          @world_creator.should_receive(:add_listener).with(listener)
+          @story_runner.should_receive(:add_listener).with(listener)
+          @scenario_runner.should_receive(:add_listener).with(listener)
         
-        # when
-        Runner.story_runner
+          # when
+          @runner_module.register_listener listener
+        end
+      end
       end
-    end
   end
 end</diff>
      <filename>vendor/plugins/rspec/spec/spec/story/runner_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -6,8 +6,8 @@ module Spec
       it 'should store a step by name and type' do
         # given
         step_mother = StepMother.new
-        step = SimpleStep.new(&quot;a given&quot;, &amp;lambda {})
-        step_mother.store(:given, &quot;a given&quot;, step)
+        step = Step.new(&quot;a given&quot;, &amp;lambda {})
+        step_mother.store(:given, step)
         
         # when
         found = step_mother.find(:given, &quot;a given&quot;)
@@ -35,18 +35,18 @@ module Spec
         step = step_mother.find(:given, &quot;doesn't exist&quot;)
         
         # then
-        step.should be_an_instance_of(SimpleStep)
+        step.should be_an_instance_of(Step)
         
         lambda do
-          step.perform(Object.new)
-        end.should raise_error(Spec::DSL::ExamplePendingError, /Unimplemented/)
+          step.perform(Object.new, &quot;doesn't exist&quot;)
+        end.should raise_error(Spec::Example::ExamplePendingError, /Unimplemented/)
       end
       
       it 'should clear itself' do
         # given
         step_mother = StepMother.new
-        step = SimpleStep.new(&quot;a given&quot;) do end
-        step_mother.store(:given, &quot;a given&quot;, step)
+        step = Step.new(&quot;a given&quot;) do end
+        step_mother.store(:given, step)
 
         # when
         step_mother.clear
@@ -54,6 +54,19 @@ module Spec
         # then
         step_mother.should be_empty
       end
+      
+      it &quot;should use assigned steps&quot; do
+        step_mother = StepMother.new
+        
+        step = Step.new('step') {}
+        step_group = StepGroup.new
+        step_group.add(:given, step)
+        
+        step_mother.use(step_group)
+                
+        step_mother.find(:given, &quot;step&quot;).should equal(step)
+      end
+
     end
   end
 end</diff>
      <filename>vendor/plugins/rspec/spec/spec/story/step_mother_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,2 @@
 require File.dirname(__FILE__) + '/../../spec_helper'
-require File.dirname(__FILE__) + '/rspec_adapter'
 require File.dirname(__FILE__) + '/builders'</diff>
      <filename>vendor/plugins/rspec/spec/spec/story/story_helper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,7 @@ module Spec
         error.should be_nil
       end
       
-      it &quot;should raise when error raised running in another object&quot; do
+      it &quot;should raise an error when an error is raised running in another object&quot; do
         #given
         story = Story.new 'title', 'narrative' do
           raise &quot;this is raised in the story&quot;
@@ -40,6 +40,47 @@ module Spec
           story.run_in(object)
         end.should raise_error
       end
+      
+      it &quot;should use the steps it is told to using a StepGroup&quot; do
+        story = Story.new(&quot;title&quot;, &quot;narrative&quot;, :steps_for =&gt; steps = StepGroup.new) do end
+        assignee = mock(&quot;assignee&quot;)
+        assignee.should_receive(:use).with(steps)
+        story.assign_steps_to(assignee)
+      end
+
+      it &quot;should use the steps it is told to using a key&quot; do
+        begin
+          orig_rspec_story_steps = $rspec_story_steps
+          $rspec_story_steps = StepGroupHash.new
+          $rspec_story_steps[:foo] = steps = Object.new
+        
+          story = Story.new(&quot;title&quot;, &quot;narrative&quot;, :steps_for =&gt; :foo) do end
+          assignee = mock(&quot;assignee&quot;)
+        
+          assignee.should_receive(:use).with(steps)
+          story.assign_steps_to(assignee)
+        ensure
+          $rspec_story_steps = orig_rspec_story_steps
+        end
+      end
+      
+      it &quot;should use the steps it is told to using multiple keys&quot; do
+        begin
+          orig_rspec_story_steps = $rspec_story_steps
+          $rspec_story_steps = StepGroupHash.new
+          $rspec_story_steps[:foo] = foo_steps = Object.new
+          $rspec_story_steps[:bar] = bar_steps = Object.new
+        
+          story = Story.new(&quot;title&quot;, &quot;narrative&quot;, :steps_for =&gt; [:foo, :bar]) do end
+          assignee = mock(&quot;assignee&quot;)
+        
+          assignee.should_receive(:use).with(foo_steps)
+          assignee.should_receive(:use).with(bar_steps)
+          story.assign_steps_to(assignee)
+        ensure
+          $rspec_story_steps = orig_rspec_story_steps
+        end
+      end
     end
   end
 end</diff>
      <filename>vendor/plugins/rspec/spec/spec/story/story_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -8,80 +8,80 @@ module Spec
       before :each do
         World.listeners.clear
       end
-      
+
       after :each do
         World.listeners.clear
         World.step_mother.clear
       end
-      
+
       it 'should create an object that mixes in a World' do
         # when
         obj = World::create
-        
+
         # then
         obj.should be_kind_of(World)
       end
-      
+
       it 'should create a World from any object type' do
         # when
         obj = World::create String
-        
+
         # then
         obj.should be_kind_of(String)
         obj.should be_kind_of(World)
       end
-      
+
       it 'should pass arguments to #new when creating an object of a specified type that mixes in a world' do
         # given
         Thing = Struct.new(:name, :age)
-        
+
         # when
         obj = World::create Thing, &quot;David&quot;, &quot;I'm not telling&quot;
-        
+
         # then
         obj.should be_an_instance_of(Thing)
         obj.name.should == &quot;David&quot;
         obj.age.should == &quot;I'm not telling&quot;
         obj.should be_kind_of(World)
       end
-      
+
       def ensure_world_executes_step(&amp;block)
         # given
         obj = World::create
         $step_ran = false
-        
+
         # when
         obj.instance_eval(&amp;block)
-        
+
         # then
         $step_ran.should be_true
       end
-      
+
       it 'should execute a Given, When or Then step' do
         ensure_world_executes_step do
           Given 'a given' do
             $step_ran = true
           end
         end
-        
+
         ensure_world_executes_step do
           When 'an event' do
             $step_ran = true
           end
         end
-        
+
         ensure_world_executes_step do
           Then 'an outcome' do
             $step_ran = true
           end
         end
       end
-      
+
       it 'should interpret Given... And... as multiple givens' do
         # given
         world = World.create
         $steps = []
-        
+
         # when
         world.instance_eval do
           Given 'step 1' do
@@ -91,18 +91,18 @@ module Spec
             $steps &lt;&lt; 2
           end
         end
-        
+
         # then
         $steps.should == [1,2]
         World.step_mother.find(:given, 'step 1').should_not be_nil
         World.step_mother.find(:given, 'step 2').should_not be_nil
       end
-      
+
       it 'should interpret When... And... as multiple events' do
         # given
         world = World.create
         $steps = []
-        
+
         # when
         world.instance_eval do
           When 'step 1' do
@@ -112,18 +112,18 @@ module Spec
             $steps &lt;&lt; 2
           end
         end
-        
+
         # then
         $steps.should == [1,2]
         World.step_mother.find(:when, 'step 1').should_not be_nil
         World.step_mother.find(:when, 'step 2').should_not be_nil
       end
-      
+
       it 'should interpret Then... And... as multiple outcomes' do
         # given
         world = World.create
         $steps = []
-        
+
         # when
         world.instance_eval do
           Then 'step 1' do
@@ -133,13 +133,13 @@ module Spec
             $steps &lt;&lt; 2
           end
         end
-        
+
         # then
         $steps.should == [1,2]
         World.step_mother.find(:then, 'step 1').should_not be_nil
         World.step_mother.find(:then, 'step 2').should_not be_nil
-      end      
-      
+      end
+
       it 'should reuse a given across scenarios' do
         # given
         $num_invoked = 0
@@ -150,16 +150,16 @@ module Spec
           end
         end
         another_world = World::create
-        
+
         # when
         another_world.instance_eval do
           Given 'a given' # without a body
         end
-        
+
         # then
         $num_invoked.should == 2
       end
-      
+
       it 'should reuse an event across scenarios' do
         # given
         $num_invoked = 0
@@ -169,18 +169,18 @@ module Spec
             $num_invoked += 1
           end
         end
-        
+
         another_world = World::create
-        
+
         # when
         another_world.instance_eval do
           When 'an event' # without a body
         end
-        
+
         # then
         $num_invoked.should == 2
       end
-      
+
       it 'should reuse an outcome across scenarios' do
         # given
         $num_invoked = 0
@@ -190,24 +190,24 @@ module Spec
             $num_invoked += 1
           end
         end
-        
+
         another_world = World::create
-        
+
         # when
         another_world.instance_eval do
           Then 'an outcome' # without a body
         end
-        
+
         # then
         $num_invoked.should == 2
       end
-      
+
       it 'should preserve instance variables between steps within a scenario' do
         # given
         world = World::create
         $first = nil
         $second = nil
-        
+
         # when
         world.instance_eval do
           Given 'given' do
@@ -221,12 +221,12 @@ module Spec
             $second = @second # from event
           end
         end
-        
+
         # then
-        ensure_that $first, is('first')
-        ensure_that $second, is('first')
+        $first.should == 'first'
+        $second.should == 'first'
       end
-      
+
       it 'should invoke a reused step in the new object instance' do
         # given
         $instances = []
@@ -238,7 +238,7 @@ module Spec
           end
         end
         world2 = World.create
-        
+
         # when
         world2.instance_eval do
           Given 'a given' # reused
@@ -250,41 +250,45 @@ module Spec
         # then
         $instances.should == [ world1.__id__, world2.__id__, world2.__id__ ]
       end
-      
-      def ensure_world_propagates_error(expected_error, &amp;block)
+
+      def ensure_world_collects_error(expected_error, &amp;block)
         # given
         world = World.create
-        $error = nil
-        
+        # $error = nil
+
         # when
-        error = exception_from do
-          world.instance_eval(&amp;block)
-        end
-        
+        world.start_collecting_errors
+        world.instance_eval(&amp;block)
+
         # then
-        error.should be_kind_of(expected_error)
+        world.should have(1).errors
+        world.errors[0].should be_kind_of(expected_error)
       end
-      
-      it 'should propagate a failure from a Given, When or Then step' do
-        ensure_world_propagates_error RuntimeError do
+
+      it 'should collect a failure from a Given step' do
+        ensure_world_collects_error RuntimeError do
           Given 'a given' do
             raise RuntimeError, &quot;oops&quot;
           end
         end
-        
-        ensure_world_propagates_error RuntimeError do
+      end
+
+      it 'should collect a failure from a When step' do
+        ensure_world_collects_error RuntimeError do
           When 'an event' do
             raise RuntimeError, &quot;oops&quot;
           end
         end
-        
-        ensure_world_propagates_error RuntimeError do
+      end
+
+      it 'should collect a failure from a Then step' do
+        ensure_world_collects_error RuntimeError do
           Then 'an outcome' do
             raise RuntimeError, &quot;oops&quot;
           end
         end
       end
-      
+
       it 'should inform listeners when it runs a Given, When or Then step' do
         # given
         world = World.create
@@ -292,27 +296,32 @@ module Spec
         mock_listener2 = mock('listener2')
         World.add_listener(mock_listener1)
         World.add_listener(mock_listener2)
-        
+
         # expect
-        mock_listener1.should_receive(:found_step).with(:given, 'a context')
-        mock_listener1.should_receive(:found_step).with(:when, 'an event')
-        mock_listener1.should_receive(:found_step).with(:then, 'an outcome')
-        
-        mock_listener2.should_receive(:found_step).with(:given, 'a context')
-        mock_listener2.should_receive(:found_step).with(:when, 'an event')
-        mock_listener2.should_receive(:found_step).with(:then, 'an outcome')
-        
+        mock_listener1.should_receive(:step_upcoming).with(:given, 'a context')
+        mock_listener1.should_receive(:step_succeeded).with(:given, 'a context')
+        mock_listener1.should_receive(:step_upcoming).with(:when, 'an event')
+        mock_listener1.should_receive(:step_succeeded).with(:when, 'an event')
+        mock_listener1.should_receive(:step_upcoming).with(:then, 'an outcome')
+        mock_listener1.should_receive(:step_succeeded).with(:then, 'an outcome')
+
+        mock_listener2.should_receive(:step_upcoming).with(:given, 'a context')
+        mock_listener2.should_receive(:step_succeeded).with(:given, 'a context')
+        mock_listener2.should_receive(:step_upcoming).with(:when, 'an event')
+        mock_listener2.should_receive(:step_succeeded).with(:when, 'an event')
+        mock_listener2.should_receive(:step_upcoming).with(:then, 'an outcome')
+        mock_listener2.should_receive(:step_succeeded).with(:then, 'an outcome')
+
         # when
         world.instance_eval do
           Given 'a context' do end
           When 'an event' do end
           Then 'an outcome' do end
         end
-        
+
         # then
-        # TODO verify_all
       end
-      
+
       it 'should tell listeners but not execute the step in dry-run mode' do
         # given
         Runner.stub!(:dry_run).and_return(true)
@@ -320,54 +329,54 @@ module Spec
         World.add_listener(mock_listener)
         $step_invoked = false
         world = World.create
-        
+
         # expect
-        mock_listener.should_receive(:found_step).with(:given, 'a context')
-        
+        mock_listener.should_receive(:step_upcoming).with(:given, 'a context')
+        mock_listener.should_receive(:step_succeeded).with(:given, 'a context')
+
         # when
         world.instance_eval do
           Given 'a context' do
             $step_invoked = true
           end
         end
-        
+
         # then
-        # TODO verify_all
         $step_invoked.should be(false)
       end
-        
+
       it 'should suppress listeners while it runs a GivenScenario' do
         # given
         $scenario_ran = false
-        
+
         scenario = ScenarioBuilder.new.name('a scenario').to_scenario do
           $scenario_ran = true
           Given 'given' do end
           When 'event' do end
           Then 'outcome' do end
         end
-        
+
         given_scenario = GivenScenario.new('a scenario')
         Runner::StoryRunner.should_receive(:scenario_from_current_story).
           with('a scenario').and_return(scenario)
-        
+
         world = World.create
         listener = mock('listener')
-        World.add_listener(listener)        
-        
+        World.add_listener(listener)
+
         # expect
-        listener.should_receive(:found_step).with(:'given scenario', 'a scenario')
-        listener.should_receive(:found_step).never.with(:given, 'given')
-        listener.should_receive(:found_step).never.with(:when, 'event')
-        listener.should_receive(:found_step).never.with(:then, 'outcome')
-        
+        listener.should_receive(:found_scenario).with(:'given scenario', 'a scenario')
+        listener.should_receive(:step_succeeded).never.with(:given, 'given')
+        listener.should_receive(:step_succeeded).never.with(:when, 'event')
+        listener.should_receive(:step_succeeded).never.with(:then, 'outcome')
+
         # when
         world.GivenScenario 'a scenario'
-        
+
         # then
-        # TODO verify_all
         $scenario_ran.should be_true
       end
+
       it 'should interpret GivenScenario... And... as multiple givens' do
         # given
         world = World.create
@@ -378,7 +387,7 @@ module Spec
         end
         Runner::StoryRunner.should_receive(:scenario_from_current_story).
           with('a scenario').and_return(scenario)
-        
+
         # when
         world.instance_eval do
           GivenScenario 'a scenario'
@@ -386,21 +395,29 @@ module Spec
             $steps &lt;&lt; 2
           end
         end
-        
+
         # then
         $steps.should == [1,2]
         World.step_mother.find(:given, 'step 2').should_not be_nil
       end
-      
+
       it 'should provide rspec matchers' do
         # given
         world = World.create
-        
+
         # then
         world.instance_eval do
           'hello'.should match(/^hello$/)
         end
       end
+
+      it &quot;should use assigned matchers&quot; do
+        world = World.create
+
+        World.should_receive(:use).with(steps = Object.new)
+
+        World.use(steps)
+      end
     end
   end
 end</diff>
      <filename>vendor/plugins/rspec/spec/spec/story/world_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 require File.dirname(__FILE__) + '/../spec_helper.rb'
+require 'spec/translator'
 
 describe &quot;Translator&quot; do
   before do</diff>
      <filename>vendor/plugins/rspec/spec/spec/translator_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,4 @@
 require 'stringio'
-require 'rbconfig'
-require 'tmpdir'
 
 dir = File.dirname(__FILE__)
 lib_path = File.expand_path(&quot;#{dir}/../lib&quot;)
@@ -9,6 +7,7 @@ $_spec_spec = true # Prevents Kernel.exit in various places
 
 require 'spec'
 require 'spec/mocks'
+require 'spec/story'
 spec_classes_path = File.expand_path(&quot;#{dir}/../spec/spec/spec_classes&quot;)
 require spec_classes_path unless $LOAD_PATH.include?(spec_classes_path)
 require File.dirname(__FILE__) + '/../lib/spec/expectations/differs/default'
@@ -41,25 +40,64 @@ module Spec
     def pass
       Pass.new
     end
+    
+    class CorrectlyOrderedMockExpectation
+      def initialize(&amp;event)
+        @event = event
+      end
+      
+      def expect(&amp;expectations)
+        expectations.call
+        @event.call
+      end
+    end
+    
+    def during(&amp;block)
+      CorrectlyOrderedMockExpectation.new(&amp;block) 
+    end
   end
 end
 
 class NonStandardError &lt; Exception; end
 
-describe &quot;Test::Unit io sink&quot;, :shared =&gt; true do
-  before do
-    @test_runner_io = StringIO.new
-  end
-
-  after do
-  end
-end
-
 module Custom
-  class BehaviourRunner
+  class ExampleGroupRunner
     attr_reader :options, :arg
     def initialize(options, arg)
       @options, @arg = options, arg
     end
+
+    def load_files(files)
+    end
+
+    def run
+    end
   end  
+end
+
+def exception_from(&amp;block)
+  exception = nil
+  begin
+    yield
+  rescue StandardError =&gt; e
+    exception = e
+  end
+  exception
+end
+
+describe &quot;sandboxed rspec_options&quot;, :shared =&gt; true do
+  attr_reader :options
+
+  before(:all) do
+    @original_rspec_options = $rspec_options
+  end
+
+  before(:each) do
+    @options = ::Spec::Runner::Options.new(StringIO.new, StringIO.new)
+    $rspec_options = options
+  end
+
+  after do
+    $rspec_options = @original_rspec_options
+  end
 end
\ No newline at end of file</diff>
      <filename>vendor/plugins/rspec/spec/spec_helper.rb</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>vendor/plugins/rspec/autotest/discover.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/autotest/rspec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/auto_spec_description_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/before_and_after_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/behave_as_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/custom_expectation_matchers.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/custom_formatter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/dynamic_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/file_accessor.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/file_accessor_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/greeter_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/helper_method_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/io_processor.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/io_processor_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/legacy_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/mocking_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/multi_threaded_behaviour_runner.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/partial_mock_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/pending_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/predicate_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/priority.txt</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/shared_behaviours_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/spec_and_test_together.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/spec_helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stack.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stack_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/story/game-of-life/.loadpath</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/story/game-of-life/README.txt</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/story/game-of-life/behaviour/everything.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/story/game-of-life/behaviour/examples/examples.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/story/game-of-life/behaviour/examples/game_behaviour.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/story/game-of-life/behaviour/examples/grid_behaviour.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/ICanCreateACell.story</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/ICanKillACell.story</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/TheGridWraps.story</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/create_a_cell.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/kill_a_cell.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/stories.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/story/game-of-life/behaviour/stories/stories.txt</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/story/game-of-life/life.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/story/game-of-life/life/game.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/story/game-of-life/life/grid.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/stubbing_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/examples/test_case_adapter_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/dsl.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/dsl/behaviour.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/dsl/behaviour_description.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/dsl/behaviour_factory.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/dsl/configuration.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/dsl/errors.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/dsl/example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/dsl/example_definition.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/dsl/example_matcher.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/dsl/example_module.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/dsl/example_runner.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/dsl/example_suite.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/dsl/shared_behaviour.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/dsl/should_raise_handler.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/dsl/supports_pending.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/extensions/object.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/failing_behaviours_formatter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/runner/formatter/rdoc_formatter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story/documenter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story/documenter/plain_text_documenter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story/reporter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story/reporter/plain_text_reporter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/story/simple_step.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/test.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/test/unit/autorunner.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/test/unit/example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/test/unit/rspectestresult.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/test/unit/ui/console/testrunner.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/test/unit/ui/testrunnermediator.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/lib/spec/test_case_adapter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/rake_tasks/examples_rdoc.rake</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec.opts</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/dsl/behaviour_description_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/dsl/configuration_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/dsl/example_class_definition_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/dsl/example_definition_class_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/dsl/example_definition_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/dsl/example_factory_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/dsl/example_instance_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/dsl/example_matcher_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/dsl/example_should_raise_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/dsl/example_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/dsl/example_suite_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/dsl/predicate_matcher_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/dsl/shared_behaviour_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/dsl/supports_pending_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/autorunner_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/extensions/bug_report_10577_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/rdoc_formatter_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/runner/object_ext_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/story/documenter/plain_text_documenter_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/story/reporter/plain_text_reporter_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/story/rspec_adapter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/story/simple_step_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec/spec/spec/test/unit/test_unit_and_rspec_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/MIT-LICENSE</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/README</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/Rakefile</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec/CHANGES</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec/rspec_generator.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec/templates/all_stories.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec/templates/previous_failures.txt</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec/templates/script/spec</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec/templates/script/spec_server</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec/templates/spec.opts</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec/templates/spec_helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec/templates/stories_helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec_controller/USAGE</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec_controller/rspec_controller_generator.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec_controller/templates/controller_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec_controller/templates/helper_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec_controller/templates/view_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec_model/USAGE</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec_model/rspec_model_generator.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec_model/templates/model_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec_scaffold/rspec_scaffold_generator.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/controller_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/edit_erb_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/helper_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/index_erb_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/new_erb_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/generators/rspec_scaffold/templates/show_erb_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/init.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/autotest/rails_rspec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/dsl.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/dsl/configuration.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/matchers.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/matchers/have.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/dsl.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/assigns_hash_proxy.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/controller_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/functional_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/helper_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/model_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/rails_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/render_observer.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/view_example.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/ivar_proxy.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/extensions.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_controller/base.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_controller/rescue.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_controller/test_response.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/action_view/base.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/active_record/base.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/active_record/oracle_adapter_patch.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/extensions/object.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/matchers.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/assert_select.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/have_text.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/redirect_to.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/render_template.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/story_adapter.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/lib/spec/rails/version.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/autotest/mappings_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/autotest/rails_rspec_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/dsl/assigns_hash_proxy_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/dsl/behaviour_factory_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/dsl/configuration_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/dsl/controller_isolation_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/dsl/controller_spec_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/dsl/helper_spec_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/dsl/ivar_proxy_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/dsl/model_spec_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/dsl/shared_behaviour_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/dsl/test_unit_assertion_accessibility_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/dsl/view_spec_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/extensions/action_controller_rescue_action_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/extensions/action_view_base_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/extensions/active_record_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/matchers/assert_select_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/matchers/description_generation_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/matchers/errors_on_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/matchers/redirect_to_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/matchers/render_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/mocks/mock_model_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/sample_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/spec_server_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails/spec_spec.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/rails_suite.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec/spec_helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/controllers/action_view_base_spec_controller.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/controllers/controller_spec_controller.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/controllers/redirect_spec_controller.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/controllers/render_spec_controller.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/controllers/rjs_spec_controller.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/helpers/explicit_helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/helpers/more_explicit_helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/helpers/plugin_application_helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/helpers/view_spec_helper.rb</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/_partial.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_setting_flash_after_session_reset.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_setting_flash_before_session_reset.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_setting_the_assigns_hash.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_with_errors_in_template.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/controller_spec/action_with_template.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/_a_partial.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/some_action.js.rjs</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/some_action.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/render_spec/some_action.rjs</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/_replacement_partial.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/hide_div.rjs</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/hide_page_element.rjs</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/insert_html.rjs</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/replace.rjs</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/replace_html.rjs</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/replace_html_with_partial.rjs</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/visual_effect.rjs</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/rjs_spec/visual_toggle_effect.rjs</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/tag_spec/no_tags.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/tag_spec/single_div_with_no_attributes.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/tag_spec/single_div_with_one_attribute.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_partial.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_partial_used_twice.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_partial_with_local_variable.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_partial_with_sub_partial.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/_spacer.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/accessor.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/entry_form.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/explicit_helper.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/foo/show.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/implicit_helper.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/multiple_helpers.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/template_with_partial.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/template_with_partial_using_collection.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/spec_resources/views/view_spec/template_with_partial_with_array.rhtml</filename>
    </removed>
    <removed>
      <filename>vendor/plugins/rspec_on_rails/tasks/rspec.rake</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>16d0139ed412d2d7d7a8b1caf102932c1d3d155d</id>
    </parent>
  </parents>
  <author>
    <name>Josh Owens</name>
    <email>joshua.owens@gmail.com</email>
  </author>
  <url>http://github.com/queso/signal-wiki/commit/c173ad3217572f98b2b28b8eabc9a7787cbe290c</url>
  <id>c173ad3217572f98b2b28b8eabc9a7787cbe290c</id>
  <committed-date>2008-04-18T11:34:34-07:00</committed-date>
  <authored-date>2008-04-18T11:34:34-07:00</authored-date>
  <message>Moving to edge rspec and getting most tests back in working order.</message>
  <tree>6e3d98c372855ef13a3757de13d524a5e9eff421</tree>
  <committer>
    <name>Josh Owens</name>
    <email>joshua.owens@gmail.com</email>
  </committer>
</commit>
