dchelimsky-rspec 1.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +1192 -0
- data/License.txt +22 -0
- data/Manifest.txt +403 -0
- data/README.txt +39 -0
- data/Rakefile +90 -0
- data/TODO.txt +10 -0
- data/bin/autospec +4 -0
- data/bin/spec +4 -0
- data/examples/pure/autogenerated_docstrings_example.rb +19 -0
- data/examples/pure/before_and_after_example.rb +40 -0
- data/examples/pure/behave_as_example.rb +45 -0
- data/examples/pure/custom_expectation_matchers.rb +54 -0
- data/examples/pure/custom_formatter.rb +12 -0
- data/examples/pure/dynamic_spec.rb +9 -0
- data/examples/pure/file_accessor.rb +19 -0
- data/examples/pure/file_accessor_spec.rb +38 -0
- data/examples/pure/greeter_spec.rb +31 -0
- data/examples/pure/helper_method_example.rb +14 -0
- data/examples/pure/io_processor.rb +8 -0
- data/examples/pure/io_processor_spec.rb +21 -0
- data/examples/pure/legacy_spec.rb +11 -0
- data/examples/pure/mocking_example.rb +27 -0
- data/examples/pure/multi_threaded_behaviour_runner.rb +28 -0
- data/examples/pure/nested_classes_example.rb +36 -0
- data/examples/pure/partial_mock_example.rb +29 -0
- data/examples/pure/pending_example.rb +20 -0
- data/examples/pure/predicate_example.rb +27 -0
- data/examples/pure/priority.txt +1 -0
- data/examples/pure/shared_example_group_example.rb +81 -0
- data/examples/pure/shared_stack_examples.rb +38 -0
- data/examples/pure/spec_helper.rb +3 -0
- data/examples/pure/stack.rb +36 -0
- data/examples/pure/stack_spec.rb +63 -0
- data/examples/pure/stack_spec_with_nested_example_groups.rb +67 -0
- data/examples/pure/stubbing_example.rb +69 -0
- data/examples/pure/yielding_example.rb +33 -0
- data/examples/stories/adder.rb +13 -0
- data/examples/stories/addition +34 -0
- data/examples/stories/addition.rb +9 -0
- data/examples/stories/calculator.rb +65 -0
- data/examples/stories/game-of-life/.loadpath +5 -0
- data/examples/stories/game-of-life/README.txt +21 -0
- data/examples/stories/game-of-life/behaviour/everything.rb +6 -0
- data/examples/stories/game-of-life/behaviour/examples/examples.rb +3 -0
- data/examples/stories/game-of-life/behaviour/examples/game_behaviour.rb +35 -0
- data/examples/stories/game-of-life/behaviour/examples/grid_behaviour.rb +66 -0
- data/examples/stories/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story +21 -0
- data/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story +21 -0
- data/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story +42 -0
- data/examples/stories/game-of-life/behaviour/stories/ICanCreateACell.story +42 -0
- data/examples/stories/game-of-life/behaviour/stories/ICanKillACell.story +17 -0
- data/examples/stories/game-of-life/behaviour/stories/TheGridWraps.story +53 -0
- data/examples/stories/game-of-life/behaviour/stories/create_a_cell.rb +52 -0
- data/examples/stories/game-of-life/behaviour/stories/helper.rb +6 -0
- data/examples/stories/game-of-life/behaviour/stories/kill_a_cell.rb +26 -0
- data/examples/stories/game-of-life/behaviour/stories/steps.rb +5 -0
- data/examples/stories/game-of-life/behaviour/stories/stories.rb +3 -0
- data/examples/stories/game-of-life/behaviour/stories/stories.txt +22 -0
- data/examples/stories/game-of-life/life/game.rb +23 -0
- data/examples/stories/game-of-life/life/grid.rb +43 -0
- data/examples/stories/game-of-life/life.rb +3 -0
- data/examples/stories/helper.rb +9 -0
- data/examples/stories/steps/addition_steps.rb +18 -0
- data/failing_examples/README.txt +7 -0
- data/failing_examples/diffing_spec.rb +36 -0
- data/failing_examples/failing_autogenerated_docstrings_example.rb +19 -0
- data/failing_examples/failure_in_setup.rb +10 -0
- data/failing_examples/failure_in_teardown.rb +10 -0
- data/failing_examples/mocking_example.rb +40 -0
- data/failing_examples/mocking_with_flexmock.rb +26 -0
- data/failing_examples/mocking_with_mocha.rb +25 -0
- data/failing_examples/mocking_with_rr.rb +27 -0
- data/failing_examples/partial_mock_example.rb +20 -0
- data/failing_examples/predicate_example.rb +29 -0
- data/failing_examples/raising_example.rb +47 -0
- data/failing_examples/spec_helper.rb +3 -0
- data/failing_examples/syntax_error_example.rb +7 -0
- data/failing_examples/team_spec.rb +44 -0
- data/failing_examples/timeout_behaviour.rb +7 -0
- data/init.rb +9 -0
- data/lib/autotest/discover.rb +3 -0
- data/lib/autotest/rspec.rb +46 -0
- data/lib/spec/adapters/ruby_engine/mri.rb +8 -0
- data/lib/spec/adapters/ruby_engine/rubinius.rb +8 -0
- data/lib/spec/adapters/ruby_engine.rb +26 -0
- data/lib/spec/adapters.rb +1 -0
- data/lib/spec/example/before_and_after_hooks.rb +93 -0
- data/lib/spec/example/configuration.rb +167 -0
- data/lib/spec/example/errors.rb +30 -0
- data/lib/spec/example/example_group.rb +25 -0
- data/lib/spec/example/example_group_factory.rb +81 -0
- data/lib/spec/example/example_group_methods.rb +368 -0
- data/lib/spec/example/example_matcher.rb +44 -0
- data/lib/spec/example/example_methods.rb +105 -0
- data/lib/spec/example/module_reopening_fix.rb +21 -0
- data/lib/spec/example/pending.rb +18 -0
- data/lib/spec/example/shared_example_group.rb +52 -0
- data/lib/spec/example.rb +12 -0
- data/lib/spec/expectations/differs/default.rb +66 -0
- data/lib/spec/expectations/errors.rb +12 -0
- data/lib/spec/expectations/extensions/object.rb +63 -0
- data/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
- data/lib/spec/expectations/extensions.rb +2 -0
- data/lib/spec/expectations/handler.rb +52 -0
- data/lib/spec/expectations.rb +56 -0
- data/lib/spec/extensions/class.rb +24 -0
- data/lib/spec/extensions/main.rb +87 -0
- data/lib/spec/extensions/metaclass.rb +7 -0
- data/lib/spec/extensions/object.rb +6 -0
- data/lib/spec/extensions.rb +4 -0
- data/lib/spec/interop/test/unit/autorunner.rb +6 -0
- data/lib/spec/interop/test/unit/testcase.rb +71 -0
- data/lib/spec/interop/test/unit/testresult.rb +6 -0
- data/lib/spec/interop/test/unit/testsuite_adapter.rb +34 -0
- data/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
- data/lib/spec/interop/test.rb +12 -0
- data/lib/spec/matchers/be.rb +221 -0
- data/lib/spec/matchers/be_close.rb +37 -0
- data/lib/spec/matchers/change.rb +148 -0
- data/lib/spec/matchers/eql.rb +43 -0
- data/lib/spec/matchers/equal.rb +43 -0
- data/lib/spec/matchers/exist.rb +22 -0
- data/lib/spec/matchers/has.rb +34 -0
- data/lib/spec/matchers/have.rb +150 -0
- data/lib/spec/matchers/include.rb +77 -0
- data/lib/spec/matchers/match.rb +41 -0
- data/lib/spec/matchers/operator_matcher.rb +79 -0
- data/lib/spec/matchers/raise_error.rb +132 -0
- data/lib/spec/matchers/respond_to.rb +46 -0
- data/lib/spec/matchers/satisfy.rb +47 -0
- data/lib/spec/matchers/simple_matcher.rb +132 -0
- data/lib/spec/matchers/throw_symbol.rb +74 -0
- data/lib/spec/matchers.rb +162 -0
- data/lib/spec/mocks/argument_constraints.rb +165 -0
- data/lib/spec/mocks/argument_expectation.rb +49 -0
- data/lib/spec/mocks/error_generator.rb +84 -0
- data/lib/spec/mocks/errors.rb +10 -0
- data/lib/spec/mocks/extensions/object.rb +3 -0
- data/lib/spec/mocks/extensions.rb +1 -0
- data/lib/spec/mocks/framework.rb +15 -0
- data/lib/spec/mocks/message_expectation.rb +331 -0
- data/lib/spec/mocks/methods.rb +51 -0
- data/lib/spec/mocks/mock.rb +56 -0
- data/lib/spec/mocks/order_group.rb +29 -0
- data/lib/spec/mocks/proxy.rb +224 -0
- data/lib/spec/mocks/space.rb +28 -0
- data/lib/spec/mocks/spec_methods.rb +46 -0
- data/lib/spec/mocks.rb +200 -0
- data/lib/spec/rake/spectask.rb +227 -0
- data/lib/spec/rake/verify_rcov.rb +52 -0
- data/lib/spec/runner/backtrace_tweaker.rb +56 -0
- data/lib/spec/runner/class_and_arguments_parser.rb +16 -0
- data/lib/spec/runner/command_line.rb +17 -0
- data/lib/spec/runner/drb_command_line.rb +20 -0
- data/lib/spec/runner/example_group_runner.rb +59 -0
- data/lib/spec/runner/formatter/base_formatter.rb +79 -0
- data/lib/spec/runner/formatter/base_text_formatter.rb +126 -0
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +27 -0
- data/lib/spec/runner/formatter/failing_examples_formatter.rb +20 -0
- data/lib/spec/runner/formatter/html_formatter.rb +337 -0
- data/lib/spec/runner/formatter/nested_text_formatter.rb +65 -0
- data/lib/spec/runner/formatter/profile_formatter.rb +51 -0
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +34 -0
- data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
- data/lib/spec/runner/formatter/specdoc_formatter.rb +39 -0
- data/lib/spec/runner/formatter/story/html_formatter.rb +174 -0
- data/lib/spec/runner/formatter/story/plain_text_formatter.rb +194 -0
- data/lib/spec/runner/formatter/story/progress_bar_formatter.rb +42 -0
- data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
- data/lib/spec/runner/heckle_runner.rb +72 -0
- data/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
- data/lib/spec/runner/option_parser.rb +205 -0
- data/lib/spec/runner/options.rb +320 -0
- data/lib/spec/runner/reporter.rb +167 -0
- data/lib/spec/runner/spec_parser.rb +71 -0
- data/lib/spec/runner.rb +213 -0
- data/lib/spec/story/extensions/main.rb +86 -0
- data/lib/spec/story/extensions/regexp.rb +9 -0
- data/lib/spec/story/extensions/string.rb +9 -0
- data/lib/spec/story/extensions.rb +3 -0
- data/lib/spec/story/given_scenario.rb +14 -0
- data/lib/spec/story/runner/plain_text_story_runner.rb +48 -0
- data/lib/spec/story/runner/scenario_collector.rb +18 -0
- data/lib/spec/story/runner/scenario_runner.rb +54 -0
- data/lib/spec/story/runner/story_mediator.rb +137 -0
- data/lib/spec/story/runner/story_parser.rb +247 -0
- data/lib/spec/story/runner/story_runner.rb +70 -0
- data/lib/spec/story/runner.rb +59 -0
- data/lib/spec/story/scenario.rb +14 -0
- data/lib/spec/story/step.rb +70 -0
- data/lib/spec/story/step_group.rb +89 -0
- data/lib/spec/story/step_mother.rb +38 -0
- data/lib/spec/story/story.rb +39 -0
- data/lib/spec/story/world.rb +128 -0
- data/lib/spec/story.rb +10 -0
- data/lib/spec/version.rb +13 -0
- data/lib/spec.rb +32 -0
- data/plugins/mock_frameworks/flexmock.rb +23 -0
- data/plugins/mock_frameworks/mocha.rb +19 -0
- data/plugins/mock_frameworks/rr.rb +21 -0
- data/plugins/mock_frameworks/rspec.rb +20 -0
- data/rake_tasks/examples.rake +7 -0
- data/rake_tasks/examples_with_rcov.rake +9 -0
- data/rake_tasks/failing_examples_with_html.rake +9 -0
- data/rake_tasks/verify_rcov.rake +7 -0
- data/rspec.gemspec +42 -0
- data/spec/README.jruby +15 -0
- data/spec/autotest/autotest_helper.rb +6 -0
- data/spec/autotest/autotest_matchers.rb +47 -0
- data/spec/autotest/discover_spec.rb +19 -0
- data/spec/autotest/rspec_spec.rb +150 -0
- data/spec/rspec_suite.rb +6 -0
- data/spec/ruby_forker.rb +13 -0
- data/spec/spec/adapters/ruby_engine_spec.rb +16 -0
- data/spec/spec/example/configuration_spec.rb +296 -0
- data/spec/spec/example/example_group_class_definition_spec.rb +48 -0
- data/spec/spec/example/example_group_factory_spec.rb +165 -0
- data/spec/spec/example/example_group_methods_spec.rb +584 -0
- data/spec/spec/example/example_group_spec.rb +683 -0
- data/spec/spec/example/example_matcher_spec.rb +96 -0
- data/spec/spec/example/example_methods_spec.rb +169 -0
- data/spec/spec/example/example_runner_spec.rb +194 -0
- data/spec/spec/example/nested_example_group_spec.rb +71 -0
- data/spec/spec/example/pending_module_spec.rb +145 -0
- data/spec/spec/example/predicate_matcher_spec.rb +21 -0
- data/spec/spec/example/shared_example_group_spec.rb +281 -0
- data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
- data/spec/spec/expectations/differs/default_spec.rb +127 -0
- data/spec/spec/expectations/extensions/object_spec.rb +95 -0
- data/spec/spec/expectations/fail_with_spec.rb +71 -0
- data/spec/spec/extensions/main_spec.rb +71 -0
- data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
- data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
- data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
- data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
- data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
- data/spec/spec/interop/test/unit/spec_spec.rb +52 -0
- data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +14 -0
- data/spec/spec/interop/test/unit/testcase_spec.rb +49 -0
- data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
- data/spec/spec/matchers/be_close_spec.rb +39 -0
- data/spec/spec/matchers/be_spec.rb +248 -0
- data/spec/spec/matchers/change_spec.rb +329 -0
- data/spec/spec/matchers/description_generation_spec.rb +153 -0
- data/spec/spec/matchers/eql_spec.rb +28 -0
- data/spec/spec/matchers/equal_spec.rb +28 -0
- data/spec/spec/matchers/exist_spec.rb +57 -0
- data/spec/spec/matchers/handler_spec.rb +150 -0
- data/spec/spec/matchers/has_spec.rb +63 -0
- data/spec/spec/matchers/have_spec.rb +394 -0
- data/spec/spec/matchers/include_spec.rb +64 -0
- data/spec/spec/matchers/match_spec.rb +37 -0
- data/spec/spec/matchers/matcher_methods_spec.rb +78 -0
- data/spec/spec/matchers/mock_constraint_matchers_spec.rb +24 -0
- data/spec/spec/matchers/operator_matcher_spec.rb +191 -0
- data/spec/spec/matchers/raise_error_spec.rb +315 -0
- data/spec/spec/matchers/respond_to_spec.rb +54 -0
- data/spec/spec/matchers/satisfy_spec.rb +36 -0
- data/spec/spec/matchers/simple_matcher_spec.rb +93 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +54 -0
- data/spec/spec/mocks/any_number_of_times_spec.rb +36 -0
- data/spec/spec/mocks/argument_expectation_spec.rb +23 -0
- data/spec/spec/mocks/at_least_spec.rb +97 -0
- data/spec/spec/mocks/at_most_spec.rb +93 -0
- data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
- data/spec/spec/mocks/bug_report_10263_spec.rb +24 -0
- data/spec/spec/mocks/bug_report_11545_spec.rb +33 -0
- data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
- data/spec/spec/mocks/bug_report_496.rb +17 -0
- data/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
- data/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
- data/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
- data/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
- data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +95 -0
- data/spec/spec/mocks/hash_including_matcher_spec.rb +53 -0
- data/spec/spec/mocks/mock_ordering_spec.rb +84 -0
- data/spec/spec/mocks/mock_space_spec.rb +54 -0
- data/spec/spec/mocks/mock_spec.rb +555 -0
- data/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
- data/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
- data/spec/spec/mocks/null_object_mock_spec.rb +54 -0
- data/spec/spec/mocks/once_counts_spec.rb +53 -0
- data/spec/spec/mocks/options_hash_spec.rb +35 -0
- data/spec/spec/mocks/partial_mock_spec.rb +149 -0
- data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
- data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +130 -0
- data/spec/spec/mocks/precise_counts_spec.rb +52 -0
- data/spec/spec/mocks/record_messages_spec.rb +26 -0
- data/spec/spec/mocks/stub_spec.rb +188 -0
- data/spec/spec/mocks/twice_counts_spec.rb +67 -0
- data/spec/spec/package/bin_spec_spec.rb +22 -0
- data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
- data/spec/spec/runner/command_line_spec.rb +141 -0
- data/spec/spec/runner/drb_command_line_spec.rb +97 -0
- data/spec/spec/runner/empty_file.txt +0 -0
- data/spec/spec/runner/examples.txt +2 -0
- data/spec/spec/runner/failed.txt +3 -0
- data/spec/spec/runner/formatter/base_formatter_spec.rb +112 -0
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +33 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.4.html +365 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +387 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.5.html +371 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +381 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +370 -0
- data/spec/spec/runner/formatter/html_formatter_spec.rb +61 -0
- data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +318 -0
- data/spec/spec/runner/formatter/profile_formatter_spec.rb +65 -0
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +155 -0
- data/spec/spec/runner/formatter/snippet_extractor_spec.rb +18 -0
- data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +103 -0
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +159 -0
- data/spec/spec/runner/formatter/story/html_formatter_spec.rb +135 -0
- data/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +600 -0
- data/spec/spec/runner/formatter/story/progress_bar_formatter_spec.rb +82 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +365 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +370 -0
- data/spec/spec/runner/heckle_runner_spec.rb +78 -0
- data/spec/spec/runner/heckler_spec.rb +13 -0
- data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +45 -0
- data/spec/spec/runner/option_parser_spec.rb +421 -0
- data/spec/spec/runner/options_spec.rb +450 -0
- data/spec/spec/runner/output_one_time_fixture.rb +7 -0
- data/spec/spec/runner/output_one_time_fixture_runner.rb +8 -0
- data/spec/spec/runner/output_one_time_spec.rb +16 -0
- data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +62 -0
- data/spec/spec/runner/reporter_spec.rb +238 -0
- data/spec/spec/runner/resources/a_bar.rb +0 -0
- data/spec/spec/runner/resources/a_foo.rb +0 -0
- data/spec/spec/runner/resources/a_spec.rb +1 -0
- data/spec/spec/runner/spec.opts +2 -0
- data/spec/spec/runner/spec_drb.opts +1 -0
- data/spec/spec/runner/spec_parser/spec_parser_fixture.rb +70 -0
- data/spec/spec/runner/spec_parser_spec.rb +85 -0
- data/spec/spec/runner/spec_spaced.opts +2 -0
- data/spec/spec/runner_spec.rb +11 -0
- data/spec/spec/spec_classes.rb +133 -0
- data/spec/spec/story/builders.rb +46 -0
- data/spec/spec/story/extensions/main_spec.rb +161 -0
- data/spec/spec/story/extensions_spec.rb +14 -0
- data/spec/spec/story/given_scenario_spec.rb +27 -0
- data/spec/spec/story/runner/plain_text_story_runner_spec.rb +90 -0
- data/spec/spec/story/runner/scenario_collector_spec.rb +27 -0
- data/spec/spec/story/runner/scenario_runner_spec.rb +214 -0
- data/spec/spec/story/runner/story_mediator_spec.rb +143 -0
- data/spec/spec/story/runner/story_parser_spec.rb +401 -0
- data/spec/spec/story/runner/story_runner_spec.rb +294 -0
- data/spec/spec/story/runner_spec.rb +93 -0
- data/spec/spec/story/scenario_spec.rb +18 -0
- data/spec/spec/story/step_group_spec.rb +157 -0
- data/spec/spec/story/step_mother_spec.rb +84 -0
- data/spec/spec/story/step_spec.rb +272 -0
- data/spec/spec/story/story_helper.rb +2 -0
- data/spec/spec/story/story_spec.rb +84 -0
- data/spec/spec/story/world_spec.rb +423 -0
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +77 -0
- data/stories/all.rb +5 -0
- data/stories/configuration/before_blocks.story +21 -0
- data/stories/configuration/stories.rb +7 -0
- data/stories/example_groups/autogenerated_docstrings +45 -0
- data/stories/example_groups/example_group_with_should_methods +17 -0
- data/stories/example_groups/nested_groups +17 -0
- data/stories/example_groups/output +25 -0
- data/stories/example_groups/stories.rb +7 -0
- data/stories/helper.rb +6 -0
- data/stories/interop/examples_and_tests_together +30 -0
- data/stories/interop/stories.rb +7 -0
- data/stories/interop/test_case_with_should_methods +17 -0
- data/stories/mock_framework_integration/stories.rb +7 -0
- data/stories/mock_framework_integration/use_flexmock.story +9 -0
- data/stories/pending_stories/README +3 -0
- data/stories/resources/helpers/cmdline.rb +9 -0
- data/stories/resources/helpers/story_helper.rb +16 -0
- data/stories/resources/matchers/smart_match.rb +37 -0
- data/stories/resources/spec/before_blocks_example.rb +32 -0
- data/stories/resources/spec/example_group_with_should_methods.rb +12 -0
- data/stories/resources/spec/simple_spec.rb +8 -0
- data/stories/resources/spec/spec_with_flexmock.rb +18 -0
- data/stories/resources/steps/running_rspec.rb +50 -0
- data/stories/resources/stories/failing_story.rb +15 -0
- data/stories/resources/test/spec_and_test_together.rb +57 -0
- data/stories/resources/test/test_case_with_should_methods.rb +30 -0
- data/stories/stories/multiline_steps.story +23 -0
- data/stories/stories/steps/multiline_steps.rb +13 -0
- data/stories/stories/stories.rb +6 -0
- data/story_server/prototype/javascripts/builder.js +136 -0
- data/story_server/prototype/javascripts/controls.js +972 -0
- data/story_server/prototype/javascripts/dragdrop.js +976 -0
- data/story_server/prototype/javascripts/effects.js +1117 -0
- data/story_server/prototype/javascripts/prototype.js +4140 -0
- data/story_server/prototype/javascripts/rspec.js +149 -0
- data/story_server/prototype/javascripts/scriptaculous.js +58 -0
- data/story_server/prototype/javascripts/slider.js +276 -0
- data/story_server/prototype/javascripts/sound.js +55 -0
- data/story_server/prototype/javascripts/unittest.js +568 -0
- data/story_server/prototype/lib/server.rb +24 -0
- data/story_server/prototype/stories.html +176 -0
- data/story_server/prototype/stylesheets/rspec.css +136 -0
- data/story_server/prototype/stylesheets/test.css +90 -0
- metadata +495 -0
@@ -0,0 +1,167 @@
|
|
1
|
+
module Spec
|
2
|
+
module Runner
|
3
|
+
class Reporter
|
4
|
+
attr_reader :options, :example_groups
|
5
|
+
|
6
|
+
def initialize(options)
|
7
|
+
@options = options
|
8
|
+
@options.reporter = self
|
9
|
+
clear
|
10
|
+
end
|
11
|
+
|
12
|
+
def add_example_group(example_group)
|
13
|
+
formatters.each do |f|
|
14
|
+
f.add_example_group(example_group)
|
15
|
+
end
|
16
|
+
example_groups << example_group
|
17
|
+
end
|
18
|
+
|
19
|
+
def example_started(example)
|
20
|
+
formatters.each{|f| f.example_started(example)}
|
21
|
+
end
|
22
|
+
|
23
|
+
def example_finished(example, error=nil)
|
24
|
+
@examples << example
|
25
|
+
|
26
|
+
if error.nil?
|
27
|
+
example_passed(example)
|
28
|
+
elsif Spec::Example::ExamplePendingError === error
|
29
|
+
example_pending(example, error.pending_caller, error.message)
|
30
|
+
else
|
31
|
+
example_failed(example, error)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def failure(example, error)
|
36
|
+
backtrace_tweaker.tweak_backtrace(error)
|
37
|
+
failure = Failure.new(example, error)
|
38
|
+
@failures << failure
|
39
|
+
formatters.each do |f|
|
40
|
+
f.example_failed(example, @failures.length, failure)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
alias_method :example_failed, :failure
|
44
|
+
|
45
|
+
def start(number_of_examples)
|
46
|
+
clear
|
47
|
+
@start_time = Time.new
|
48
|
+
formatters.each{|f| f.start(number_of_examples)}
|
49
|
+
end
|
50
|
+
|
51
|
+
def end
|
52
|
+
@end_time = Time.new
|
53
|
+
end
|
54
|
+
|
55
|
+
# Dumps the summary and returns the total number of failures
|
56
|
+
def dump
|
57
|
+
formatters.each{|f| f.start_dump}
|
58
|
+
dump_pending
|
59
|
+
dump_failures
|
60
|
+
formatters.each do |f|
|
61
|
+
f.dump_summary(duration, @examples.length, @failures.length, @pending_count)
|
62
|
+
f.close
|
63
|
+
end
|
64
|
+
@failures.length
|
65
|
+
end
|
66
|
+
|
67
|
+
private
|
68
|
+
|
69
|
+
def formatters
|
70
|
+
@options.formatters
|
71
|
+
end
|
72
|
+
|
73
|
+
def backtrace_tweaker
|
74
|
+
@options.backtrace_tweaker
|
75
|
+
end
|
76
|
+
|
77
|
+
def clear
|
78
|
+
@example_groups = []
|
79
|
+
@failures = []
|
80
|
+
@pending_count = 0
|
81
|
+
@examples = []
|
82
|
+
@start_time = nil
|
83
|
+
@end_time = nil
|
84
|
+
end
|
85
|
+
|
86
|
+
def dump_failures
|
87
|
+
return if @failures.empty?
|
88
|
+
@failures.inject(1) do |index, failure|
|
89
|
+
formatters.each{|f| f.dump_failure(index, failure)}
|
90
|
+
index + 1
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def dump_pending
|
95
|
+
formatters.each{|f| f.dump_pending}
|
96
|
+
end
|
97
|
+
|
98
|
+
def duration
|
99
|
+
return @end_time - @start_time unless (@end_time.nil? or @start_time.nil?)
|
100
|
+
return "0.0"
|
101
|
+
end
|
102
|
+
|
103
|
+
def example_passed(example)
|
104
|
+
formatters.each{|f| f.example_passed(example)}
|
105
|
+
end
|
106
|
+
|
107
|
+
EXAMPLE_PENDING_DEPRECATION_WARNING = <<-WARNING
|
108
|
+
DEPRECATION NOTICE: RSpec's formatters have changed example_pending
|
109
|
+
to accept three arguments instead of just two. Please see the rdoc
|
110
|
+
for Spec::Runner::Formatter::BaseFormatter#example_pending
|
111
|
+
for more information.
|
112
|
+
|
113
|
+
Please update any custom formatters to accept the third argument
|
114
|
+
to example_pending. Support for example_pending with two arguments
|
115
|
+
and this warning message will be removed after the RSpec 1.1.5 release.
|
116
|
+
WARNING
|
117
|
+
|
118
|
+
def example_pending(example, pending_caller, message="Not Yet Implemented")
|
119
|
+
@pending_count += 1
|
120
|
+
formatters.each do |formatter|
|
121
|
+
if formatter_uses_deprecated_example_pending_method?(formatter)
|
122
|
+
Kernel.warn EXAMPLE_PENDING_DEPRECATION_WARNING
|
123
|
+
formatter.example_pending(example, message)
|
124
|
+
else
|
125
|
+
formatter.example_pending(example, message, pending_caller)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
def formatter_uses_deprecated_example_pending_method?(formatter)
|
131
|
+
formatter.method(:example_pending).arity == 2
|
132
|
+
end
|
133
|
+
|
134
|
+
class Failure
|
135
|
+
attr_reader :example, :exception
|
136
|
+
|
137
|
+
def initialize(example, exception)
|
138
|
+
@example = example
|
139
|
+
@exception = exception
|
140
|
+
end
|
141
|
+
|
142
|
+
def header
|
143
|
+
if expectation_not_met?
|
144
|
+
"'#{example_name}' FAILED"
|
145
|
+
elsif pending_fixed?
|
146
|
+
"'#{example_name}' FIXED"
|
147
|
+
else
|
148
|
+
"#{@exception.class.name} in '#{example_name}'"
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
def pending_fixed?
|
153
|
+
@exception.is_a?(Spec::Example::PendingExampleFixedError)
|
154
|
+
end
|
155
|
+
|
156
|
+
def expectation_not_met?
|
157
|
+
@exception.is_a?(Spec::Expectations::ExpectationNotMetError)
|
158
|
+
end
|
159
|
+
|
160
|
+
protected
|
161
|
+
def example_name
|
162
|
+
@example.__full_description
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
module Spec
|
2
|
+
module Runner
|
3
|
+
# Parses a spec file and finds the nearest example for a given line number.
|
4
|
+
class SpecParser
|
5
|
+
attr_reader :best_match
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@best_match = {}
|
9
|
+
end
|
10
|
+
|
11
|
+
def spec_name_for(file, line_number)
|
12
|
+
best_match.clear
|
13
|
+
file = File.expand_path(file)
|
14
|
+
Spec::Runner.options.example_groups.each do |example_group|
|
15
|
+
consider_example_groups_for_best_match example_group, file, line_number
|
16
|
+
|
17
|
+
example_group.examples.each do |example|
|
18
|
+
consider_example_for_best_match example, example_group, file, line_number
|
19
|
+
end
|
20
|
+
end
|
21
|
+
if best_match[:example_group]
|
22
|
+
if best_match[:example]
|
23
|
+
"#{best_match[:example_group].description} #{best_match[:example].description}"
|
24
|
+
else
|
25
|
+
best_match[:example_group].description
|
26
|
+
end
|
27
|
+
else
|
28
|
+
nil
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
protected
|
33
|
+
|
34
|
+
def consider_example_groups_for_best_match(example_group, file, line_number)
|
35
|
+
parsed_backtrace = parse_backtrace(example_group.registration_backtrace)
|
36
|
+
parsed_backtrace.each do |example_file, example_line|
|
37
|
+
if is_best_match?(file, line_number, example_file, example_line)
|
38
|
+
best_match.clear
|
39
|
+
best_match[:example_group] = example_group
|
40
|
+
best_match[:line] = example_line
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def consider_example_for_best_match(example, example_group, file, line_number)
|
46
|
+
parsed_backtrace = parse_backtrace(example.implementation_backtrace)
|
47
|
+
parsed_backtrace.each do |example_file, example_line|
|
48
|
+
if is_best_match?(file, line_number, example_file, example_line)
|
49
|
+
best_match.clear
|
50
|
+
best_match[:example_group] = example_group
|
51
|
+
best_match[:example] = example
|
52
|
+
best_match[:line] = example_line
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def is_best_match?(file, line_number, example_file, example_line)
|
58
|
+
file == File.expand_path(example_file) &&
|
59
|
+
example_line <= line_number &&
|
60
|
+
example_line > best_match[:line].to_i
|
61
|
+
end
|
62
|
+
|
63
|
+
def parse_backtrace(backtrace)
|
64
|
+
backtrace.collect do |trace_line|
|
65
|
+
split_line = trace_line.split(':')
|
66
|
+
[split_line[0], Integer(split_line[1])]
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
data/lib/spec/runner.rb
ADDED
@@ -0,0 +1,213 @@
|
|
1
|
+
require 'spec/runner/options'
|
2
|
+
require 'spec/runner/option_parser'
|
3
|
+
require 'spec/runner/example_group_runner'
|
4
|
+
require 'spec/runner/command_line'
|
5
|
+
require 'spec/runner/drb_command_line'
|
6
|
+
require 'spec/runner/backtrace_tweaker'
|
7
|
+
require 'spec/runner/reporter'
|
8
|
+
require 'spec/runner/spec_parser'
|
9
|
+
require 'spec/runner/class_and_arguments_parser'
|
10
|
+
|
11
|
+
module Spec
|
12
|
+
# == ExampleGroups and Examples
|
13
|
+
#
|
14
|
+
# Rather than expressing examples in classes, RSpec uses a custom DSLL (DSL light) to
|
15
|
+
# describe groups of examples.
|
16
|
+
#
|
17
|
+
# A ExampleGroup is the equivalent of a fixture in xUnit-speak. It is a metaphor for the context
|
18
|
+
# in which you will run your executable example - a set of known objects in a known starting state.
|
19
|
+
# We begin be describing
|
20
|
+
#
|
21
|
+
# describe Account do
|
22
|
+
#
|
23
|
+
# before do
|
24
|
+
# @account = Account.new
|
25
|
+
# end
|
26
|
+
#
|
27
|
+
# it "should have a balance of $0" do
|
28
|
+
# @account.balance.should == Money.new(0, :dollars)
|
29
|
+
# end
|
30
|
+
#
|
31
|
+
# end
|
32
|
+
#
|
33
|
+
# We use the before block to set up the Example (given), and then the #it method to
|
34
|
+
# hold the example code that expresses the event (when) and the expected outcome (then).
|
35
|
+
#
|
36
|
+
# == Helper Methods
|
37
|
+
#
|
38
|
+
# A primary goal of RSpec is to keep the examples clear. We therefore prefer
|
39
|
+
# less indirection than you might see in xUnit examples and in well factored, DRY production code. We feel
|
40
|
+
# that duplication is OK if removing it makes it harder to understand an example without
|
41
|
+
# having to look elsewhere to understand its context.
|
42
|
+
#
|
43
|
+
# That said, RSpec does support some level of encapsulating common code in helper
|
44
|
+
# methods that can exist within a context or within an included module.
|
45
|
+
#
|
46
|
+
# == Setup and Teardown
|
47
|
+
#
|
48
|
+
# You can use before and after within a Example. Both methods take an optional
|
49
|
+
# scope argument so you can run the block before :each example or before :all examples
|
50
|
+
#
|
51
|
+
# describe "..." do
|
52
|
+
# before :all do
|
53
|
+
# ...
|
54
|
+
# end
|
55
|
+
#
|
56
|
+
# before :each do
|
57
|
+
# ...
|
58
|
+
# end
|
59
|
+
#
|
60
|
+
# it "should do something" do
|
61
|
+
# ...
|
62
|
+
# end
|
63
|
+
#
|
64
|
+
# it "should do something else" do
|
65
|
+
# ...
|
66
|
+
# end
|
67
|
+
#
|
68
|
+
# after :each do
|
69
|
+
# ...
|
70
|
+
# end
|
71
|
+
#
|
72
|
+
# after :all do
|
73
|
+
# ...
|
74
|
+
# end
|
75
|
+
#
|
76
|
+
# end
|
77
|
+
#
|
78
|
+
# The <tt>before :each</tt> block will run before each of the examples, once for each example. Likewise,
|
79
|
+
# the <tt>after :each</tt> block will run after each of the examples.
|
80
|
+
#
|
81
|
+
# It is also possible to specify a <tt>before :all</tt> and <tt>after :all</tt>
|
82
|
+
# block that will run only once for each behaviour, respectively before the first <code>before :each</code>
|
83
|
+
# and after the last <code>after :each</code>. The use of these is generally discouraged, because it
|
84
|
+
# introduces dependencies between the examples. Still, it might prove useful for very expensive operations
|
85
|
+
# if you know what you are doing.
|
86
|
+
#
|
87
|
+
# == Local helper methods
|
88
|
+
#
|
89
|
+
# You can include local helper methods by simply expressing them within a context:
|
90
|
+
#
|
91
|
+
# describe "..." do
|
92
|
+
#
|
93
|
+
# it "..." do
|
94
|
+
# helper_method
|
95
|
+
# end
|
96
|
+
#
|
97
|
+
# def helper_method
|
98
|
+
# ...
|
99
|
+
# end
|
100
|
+
#
|
101
|
+
# end
|
102
|
+
#
|
103
|
+
# == Included helper methods
|
104
|
+
#
|
105
|
+
# You can include helper methods in multiple contexts by expressing them within
|
106
|
+
# a module, and then including that module in your context:
|
107
|
+
#
|
108
|
+
# module AccountExampleHelperMethods
|
109
|
+
# def helper_method
|
110
|
+
# ...
|
111
|
+
# end
|
112
|
+
# end
|
113
|
+
#
|
114
|
+
# describe "A new account" do
|
115
|
+
# include AccountExampleHelperMethods
|
116
|
+
# before do
|
117
|
+
# @account = Account.new
|
118
|
+
# end
|
119
|
+
#
|
120
|
+
# it "should have a balance of $0" do
|
121
|
+
# helper_method
|
122
|
+
# @account.balance.should eql(Money.new(0, :dollars))
|
123
|
+
# end
|
124
|
+
# end
|
125
|
+
#
|
126
|
+
# == Shared Example Groups
|
127
|
+
#
|
128
|
+
# You can define a shared Example Group, that may be used on other groups
|
129
|
+
#
|
130
|
+
# share_examples_for "All Editions" do
|
131
|
+
# it "all editions behaviour" ...
|
132
|
+
# end
|
133
|
+
#
|
134
|
+
# describe SmallEdition do
|
135
|
+
# it_should_behave_like "All Editions"
|
136
|
+
#
|
137
|
+
# it "should do small edition stuff" do
|
138
|
+
# ...
|
139
|
+
# end
|
140
|
+
# end
|
141
|
+
#
|
142
|
+
# You can also assign the shared group to a module and include that
|
143
|
+
#
|
144
|
+
# share_as :AllEditions do
|
145
|
+
# it "should do all editions stuff" ...
|
146
|
+
# end
|
147
|
+
#
|
148
|
+
# describe SmallEdition do
|
149
|
+
# it_should_behave_like AllEditions
|
150
|
+
#
|
151
|
+
# it "should do small edition stuff" do
|
152
|
+
# ...
|
153
|
+
# end
|
154
|
+
# end
|
155
|
+
#
|
156
|
+
# And, for those of you who prefer to use something more like Ruby, you
|
157
|
+
# can just include the module directly
|
158
|
+
#
|
159
|
+
# describe SmallEdition do
|
160
|
+
# include AllEditions
|
161
|
+
#
|
162
|
+
# it "should do small edition stuff" do
|
163
|
+
# ...
|
164
|
+
# end
|
165
|
+
# end
|
166
|
+
module Runner
|
167
|
+
class << self
|
168
|
+
def configuration # :nodoc:
|
169
|
+
@configuration ||= Spec::Example::Configuration.new
|
170
|
+
end
|
171
|
+
|
172
|
+
# Use this to configure various configurable aspects of
|
173
|
+
# RSpec:
|
174
|
+
#
|
175
|
+
# Spec::Runner.configure do |configuration|
|
176
|
+
# # Configure RSpec here
|
177
|
+
# end
|
178
|
+
#
|
179
|
+
# The yielded <tt>configuration</tt> object is a
|
180
|
+
# Spec::Example::Configuration instance. See its RDoc
|
181
|
+
# for details about what you can do with it.
|
182
|
+
#
|
183
|
+
def configure
|
184
|
+
yield configuration
|
185
|
+
end
|
186
|
+
|
187
|
+
def register_at_exit_hook # :nodoc:
|
188
|
+
unless @already_registered_at_exit_hook
|
189
|
+
at_exit do
|
190
|
+
unless $! || Spec.run? || Spec::Example::ExampleGroupFactory.all_registered?(options.example_groups)
|
191
|
+
success = Spec.run
|
192
|
+
exit success if Spec.exit?
|
193
|
+
end
|
194
|
+
end
|
195
|
+
@already_registered_at_exit_hook = true
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
def options # :nodoc:
|
200
|
+
@options ||= begin
|
201
|
+
parser = ::Spec::Runner::OptionParser.new($stderr, $stdout)
|
202
|
+
parser.order!(ARGV)
|
203
|
+
parser.options
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
207
|
+
def use options
|
208
|
+
@options = options
|
209
|
+
end
|
210
|
+
|
211
|
+
end
|
212
|
+
end
|
213
|
+
end
|