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,227 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# Define a task library for running RSpec contexts.
|
4
|
+
|
5
|
+
require 'rake'
|
6
|
+
require 'rake/tasklib'
|
7
|
+
|
8
|
+
module Spec
|
9
|
+
module Rake
|
10
|
+
|
11
|
+
# A Rake task that runs a set of specs.
|
12
|
+
#
|
13
|
+
# Example:
|
14
|
+
#
|
15
|
+
# Spec::Rake::SpecTask.new do |t|
|
16
|
+
# t.warning = true
|
17
|
+
# t.rcov = true
|
18
|
+
# end
|
19
|
+
#
|
20
|
+
# This will create a task that can be run with:
|
21
|
+
#
|
22
|
+
# rake spec
|
23
|
+
#
|
24
|
+
# If rake is invoked with a "SPEC=filename" command line option,
|
25
|
+
# then the list of spec files will be overridden to include only the
|
26
|
+
# filename specified on the command line. This provides an easy way
|
27
|
+
# to run just one spec.
|
28
|
+
#
|
29
|
+
# If rake is invoked with a "SPEC_OPTS=options" command line option,
|
30
|
+
# then the given options will override the value of the +spec_opts+
|
31
|
+
# attribute.
|
32
|
+
#
|
33
|
+
# If rake is invoked with a "RCOV_OPTS=options" command line option,
|
34
|
+
# then the given options will override the value of the +rcov_opts+
|
35
|
+
# attribute.
|
36
|
+
#
|
37
|
+
# Examples:
|
38
|
+
#
|
39
|
+
# rake spec # run specs normally
|
40
|
+
# rake spec SPEC=just_one_file.rb # run just one spec file.
|
41
|
+
# rake spec SPEC_OPTS="--diff" # enable diffing
|
42
|
+
# rake spec RCOV_OPTS="--aggregate myfile.txt" # see rcov --help for details
|
43
|
+
#
|
44
|
+
# Each attribute of this task may be a proc. This allows for lazy evaluation,
|
45
|
+
# which is sometimes handy if you want to defer the evaluation of an attribute value
|
46
|
+
# until the task is run (as opposed to when it is defined).
|
47
|
+
#
|
48
|
+
# This task can also be used to run existing Test::Unit tests and get RSpec
|
49
|
+
# output, for example like this:
|
50
|
+
#
|
51
|
+
# require 'rubygems'
|
52
|
+
# require 'spec/rake/spectask'
|
53
|
+
# Spec::Rake::SpecTask.new do |t|
|
54
|
+
# t.ruby_opts = ['-rtest/unit']
|
55
|
+
# t.spec_files = FileList['test/**/*_test.rb']
|
56
|
+
# end
|
57
|
+
#
|
58
|
+
class SpecTask < ::Rake::TaskLib
|
59
|
+
class << self
|
60
|
+
def attr_accessor(*names)
|
61
|
+
super(*names)
|
62
|
+
names.each do |name|
|
63
|
+
module_eval "def #{name}() evaluate(@#{name}) end" # Allows use of procs
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
# Name of spec task. (default is :spec)
|
69
|
+
attr_accessor :name
|
70
|
+
|
71
|
+
# Array of directories to be added to $LOAD_PATH before running the
|
72
|
+
# specs. Defaults to ['<the absolute path to RSpec's lib directory>']
|
73
|
+
attr_accessor :libs
|
74
|
+
|
75
|
+
# If true, requests that the specs be run with the warning flag set.
|
76
|
+
# E.g. warning=true implies "ruby -w" used to run the specs. Defaults to false.
|
77
|
+
attr_accessor :warning
|
78
|
+
|
79
|
+
# Glob pattern to match spec files. (default is 'spec/**/*_spec.rb')
|
80
|
+
# Setting the SPEC environment variable overrides this.
|
81
|
+
attr_accessor :pattern
|
82
|
+
|
83
|
+
# Array of commandline options to pass to RSpec. Defaults to [].
|
84
|
+
# Setting the SPEC_OPTS environment variable overrides this.
|
85
|
+
attr_accessor :spec_opts
|
86
|
+
|
87
|
+
# Whether or not to use RCov (default is false)
|
88
|
+
# See http://eigenclass.org/hiki.rb?rcov
|
89
|
+
attr_accessor :rcov
|
90
|
+
|
91
|
+
# Array of commandline options to pass to RCov. Defaults to ['--exclude', 'lib\/spec,bin\/spec'].
|
92
|
+
# Ignored if rcov=false
|
93
|
+
# Setting the RCOV_OPTS environment variable overrides this.
|
94
|
+
attr_accessor :rcov_opts
|
95
|
+
|
96
|
+
# Directory where the RCov report is written. Defaults to "coverage"
|
97
|
+
# Ignored if rcov=false
|
98
|
+
attr_accessor :rcov_dir
|
99
|
+
|
100
|
+
# Array of commandline options to pass to ruby. Defaults to [].
|
101
|
+
attr_accessor :ruby_opts
|
102
|
+
|
103
|
+
# Whether or not to fail Rake when an error occurs (typically when specs fail).
|
104
|
+
# Defaults to true.
|
105
|
+
attr_accessor :fail_on_error
|
106
|
+
|
107
|
+
# A message to print to stderr when there are failures.
|
108
|
+
attr_accessor :failure_message
|
109
|
+
|
110
|
+
# Where RSpec's output is written. Defaults to $stdout.
|
111
|
+
# DEPRECATED. Use --format FORMAT:WHERE in spec_opts.
|
112
|
+
attr_accessor :out
|
113
|
+
|
114
|
+
# Explicitly define the list of spec files to be included in a
|
115
|
+
# spec. +spec_files+ is expected to be an array of file names (a
|
116
|
+
# FileList is acceptable). If both +pattern+ and +spec_files+ are
|
117
|
+
# used, then the list of spec files is the union of the two.
|
118
|
+
# Setting the SPEC environment variable overrides this.
|
119
|
+
attr_accessor :spec_files
|
120
|
+
|
121
|
+
# Use verbose output. If this is set to true, the task will print
|
122
|
+
# the executed spec command to stdout. Defaults to false.
|
123
|
+
attr_accessor :verbose
|
124
|
+
|
125
|
+
# Defines a new task, using the name +name+.
|
126
|
+
def initialize(name=:spec)
|
127
|
+
@name = name
|
128
|
+
@libs = [File.expand_path(File.dirname(__FILE__) + '/../../../lib')]
|
129
|
+
@pattern = nil
|
130
|
+
@spec_files = nil
|
131
|
+
@spec_opts = []
|
132
|
+
@warning = false
|
133
|
+
@ruby_opts = []
|
134
|
+
@fail_on_error = true
|
135
|
+
@rcov = false
|
136
|
+
@rcov_opts = ['--exclude', 'lib\/spec,bin\/spec,config\/boot.rb']
|
137
|
+
@rcov_dir = "coverage"
|
138
|
+
|
139
|
+
yield self if block_given?
|
140
|
+
@pattern = 'spec/**/*_spec.rb' if pattern.nil? && spec_files.nil?
|
141
|
+
define
|
142
|
+
end
|
143
|
+
|
144
|
+
def define # :nodoc:
|
145
|
+
spec_script = File.expand_path(File.dirname(__FILE__) + '/../../../bin/spec')
|
146
|
+
|
147
|
+
lib_path = libs.join(File::PATH_SEPARATOR)
|
148
|
+
actual_name = Hash === name ? name.keys.first : name
|
149
|
+
unless ::Rake.application.last_comment
|
150
|
+
desc "Run specs" + (rcov ? " using RCov" : "")
|
151
|
+
end
|
152
|
+
task name do
|
153
|
+
RakeFileUtils.verbose(verbose) do
|
154
|
+
unless spec_file_list.empty?
|
155
|
+
# ruby [ruby_opts] -Ilib -S rcov [rcov_opts] bin/spec -- examples [spec_opts]
|
156
|
+
# or
|
157
|
+
# ruby [ruby_opts] -Ilib bin/spec examples [spec_opts]
|
158
|
+
cmd_parts = [RUBY]
|
159
|
+
cmd_parts += ruby_opts
|
160
|
+
cmd_parts << %[-I"#{lib_path}"]
|
161
|
+
cmd_parts << "-S rcov" if rcov
|
162
|
+
cmd_parts << "-w" if warning
|
163
|
+
cmd_parts << rcov_option_list
|
164
|
+
cmd_parts << %[-o "#{rcov_dir}"] if rcov
|
165
|
+
cmd_parts << %["#{spec_script}"]
|
166
|
+
cmd_parts << "--" if rcov
|
167
|
+
cmd_parts += spec_file_list.collect { |fn| %["#{fn}"] }
|
168
|
+
cmd_parts << spec_option_list
|
169
|
+
if out
|
170
|
+
cmd_parts << %[> "#{out}"]
|
171
|
+
STDERR.puts "The Spec::Rake::SpecTask#out attribute is DEPRECATED and will be removed in a future version. Use --format FORMAT:WHERE instead."
|
172
|
+
end
|
173
|
+
cmd = cmd_parts.join(" ")
|
174
|
+
puts cmd if verbose
|
175
|
+
unless system(cmd)
|
176
|
+
STDERR.puts failure_message if failure_message
|
177
|
+
raise("Command #{cmd} failed") if fail_on_error
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
if rcov
|
184
|
+
desc "Remove rcov products for #{actual_name}"
|
185
|
+
task paste("clobber_", actual_name) do
|
186
|
+
rm_r rcov_dir rescue nil
|
187
|
+
end
|
188
|
+
|
189
|
+
clobber_task = paste("clobber_", actual_name)
|
190
|
+
task :clobber => [clobber_task]
|
191
|
+
|
192
|
+
task actual_name => clobber_task
|
193
|
+
end
|
194
|
+
self
|
195
|
+
end
|
196
|
+
|
197
|
+
def rcov_option_list # :nodoc:
|
198
|
+
return "" unless rcov
|
199
|
+
ENV['RCOV_OPTS'] || rcov_opts.join(" ") || ""
|
200
|
+
end
|
201
|
+
|
202
|
+
def spec_option_list # :nodoc:
|
203
|
+
STDERR.puts "RSPECOPTS is DEPRECATED and will be removed in a future version. Use SPEC_OPTS instead." if ENV['RSPECOPTS']
|
204
|
+
ENV['SPEC_OPTS'] || ENV['RSPECOPTS'] || spec_opts.join(" ") || ""
|
205
|
+
end
|
206
|
+
|
207
|
+
def evaluate(o) # :nodoc:
|
208
|
+
case o
|
209
|
+
when Proc then o.call
|
210
|
+
else o
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
def spec_file_list # :nodoc:
|
215
|
+
if ENV['SPEC']
|
216
|
+
FileList[ ENV['SPEC'] ]
|
217
|
+
else
|
218
|
+
result = []
|
219
|
+
result += spec_files.to_a if spec_files
|
220
|
+
result += FileList[ pattern ].to_a if pattern
|
221
|
+
FileList[result]
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module RCov
|
2
|
+
# A task that can verify that the RCov coverage doesn't
|
3
|
+
# drop below a certain threshold. It should be run after
|
4
|
+
# running Spec::Rake::SpecTask.
|
5
|
+
class VerifyTask < Rake::TaskLib
|
6
|
+
# Name of the task. Defaults to :verify_rcov
|
7
|
+
attr_accessor :name
|
8
|
+
|
9
|
+
# Path to the index.html file generated by RCov, which
|
10
|
+
# is the file containing the total coverage.
|
11
|
+
# Defaults to 'coverage/index.html'
|
12
|
+
attr_accessor :index_html
|
13
|
+
|
14
|
+
# Whether or not to output details. Defaults to true.
|
15
|
+
attr_accessor :verbose
|
16
|
+
|
17
|
+
# The threshold value (in percent) for coverage. If the
|
18
|
+
# actual coverage is not equal to this value, the task will raise an
|
19
|
+
# exception.
|
20
|
+
attr_accessor :threshold
|
21
|
+
|
22
|
+
# Require the threshold value be met exactly. This is the default.
|
23
|
+
attr_accessor :require_exact_threshold
|
24
|
+
|
25
|
+
def initialize(name=:verify_rcov)
|
26
|
+
@name = name
|
27
|
+
@index_html = 'coverage/index.html'
|
28
|
+
@verbose = true
|
29
|
+
@require_exact_threshold = true
|
30
|
+
yield self if block_given?
|
31
|
+
raise "Threshold must be set" if @threshold.nil?
|
32
|
+
define
|
33
|
+
end
|
34
|
+
|
35
|
+
def define
|
36
|
+
desc "Verify that rcov coverage is at least #{threshold}%"
|
37
|
+
task @name do
|
38
|
+
total_coverage = 0
|
39
|
+
|
40
|
+
File.open(index_html).each_line do |line|
|
41
|
+
if line =~ /<tt class='coverage_total'>\s*(\d+\.\d+)%\s*<\/tt>/
|
42
|
+
total_coverage = $1.to_f
|
43
|
+
break
|
44
|
+
end
|
45
|
+
end
|
46
|
+
puts "Coverage: #{total_coverage}% (threshold: #{threshold}%)" if verbose
|
47
|
+
raise "Coverage must be at least #{threshold}% but was #{total_coverage}%" if total_coverage < threshold
|
48
|
+
raise "Coverage has increased above the threshold of #{threshold}% to #{total_coverage}%. You should update your threshold value." if (total_coverage > threshold) and require_exact_threshold
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Spec
|
2
|
+
module Runner
|
3
|
+
class BacktraceTweaker
|
4
|
+
def clean_up_double_slashes(line)
|
5
|
+
line.gsub!('//','/')
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
class NoisyBacktraceTweaker < BacktraceTweaker
|
10
|
+
def tweak_backtrace(error)
|
11
|
+
return if error.backtrace.nil?
|
12
|
+
error.backtrace.each do |line|
|
13
|
+
clean_up_double_slashes(line)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# Tweaks raised Exceptions to mask noisy (unneeded) parts of the backtrace
|
19
|
+
class QuietBacktraceTweaker < BacktraceTweaker
|
20
|
+
unless defined?(IGNORE_PATTERNS)
|
21
|
+
root_dir = File.expand_path(File.join(__FILE__, '..', '..', '..', '..'))
|
22
|
+
spec_files = Dir["#{root_dir}/lib/*"].map do |path|
|
23
|
+
subpath = path[root_dir.length..-1]
|
24
|
+
/#{subpath}/
|
25
|
+
end
|
26
|
+
IGNORE_PATTERNS = spec_files + [
|
27
|
+
/\/lib\/ruby\//,
|
28
|
+
/bin\/spec:/,
|
29
|
+
/bin\/rcov:/,
|
30
|
+
/lib\/rspec-rails/,
|
31
|
+
/vendor\/rails/,
|
32
|
+
# TextMate's Ruby and RSpec plugins
|
33
|
+
/Ruby\.tmbundle\/Support\/tmruby.rb:/,
|
34
|
+
/RSpec\.tmbundle\/Support\/lib/,
|
35
|
+
/temp_textmate\./,
|
36
|
+
/mock_frameworks\/rspec/,
|
37
|
+
/spec_server/
|
38
|
+
]
|
39
|
+
end
|
40
|
+
|
41
|
+
def tweak_backtrace(error)
|
42
|
+
return if error.backtrace.nil?
|
43
|
+
error.backtrace.collect! do |message|
|
44
|
+
clean_up_double_slashes(message)
|
45
|
+
kept_lines = message.split("\n").select do |line|
|
46
|
+
IGNORE_PATTERNS.each do |ignore|
|
47
|
+
break if line =~ ignore
|
48
|
+
end
|
49
|
+
end
|
50
|
+
kept_lines.empty?? nil : kept_lines.join("\n")
|
51
|
+
end
|
52
|
+
error.backtrace.compact!
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Spec
|
2
|
+
module Runner
|
3
|
+
class ClassAndArgumentsParser
|
4
|
+
class << self
|
5
|
+
def parse(s)
|
6
|
+
if s =~ /([a-zA-Z_]+(?:::[a-zA-Z_]+)*):?(.*)/
|
7
|
+
arg = $2 == "" ? nil : $2
|
8
|
+
[$1, arg]
|
9
|
+
else
|
10
|
+
raise "Couldn't parse #{s.inspect}"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec/runner/option_parser'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Runner
|
5
|
+
class CommandLine
|
6
|
+
class << self
|
7
|
+
def run(tmp_options=Spec::Runner.options)
|
8
|
+
orig_options = Spec::Runner.options
|
9
|
+
Spec::Runner.use tmp_options
|
10
|
+
tmp_options.run_examples
|
11
|
+
ensure
|
12
|
+
Spec::Runner.use orig_options
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "drb/drb"
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Runner
|
5
|
+
# Facade to run specs by connecting to a DRB server
|
6
|
+
class DrbCommandLine
|
7
|
+
# Runs specs on a DRB server. Note that this API is similar to that of
|
8
|
+
# CommandLine - making it possible for clients to use both interchangeably.
|
9
|
+
def self.run(options)
|
10
|
+
begin
|
11
|
+
DRb.start_service
|
12
|
+
spec_server = DRbObject.new_with_uri("druby://127.0.0.1:8989")
|
13
|
+
spec_server.run(options.argv, options.error_stream, options.output_stream)
|
14
|
+
rescue DRb::DRbConnError => e
|
15
|
+
options.error_stream.puts "No server is running"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module Spec
|
2
|
+
module Runner
|
3
|
+
class ExampleGroupRunner
|
4
|
+
def initialize(options)
|
5
|
+
@options = options
|
6
|
+
end
|
7
|
+
|
8
|
+
def load_files(files)
|
9
|
+
# It's important that loading files (or choosing not to) stays the
|
10
|
+
# responsibility of the ExampleGroupRunner. Some implementations (like)
|
11
|
+
# the one using DRb may choose *not* to load files, but instead tell
|
12
|
+
# someone else to do it over the wire.
|
13
|
+
files.each do |file|
|
14
|
+
load file
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def run
|
19
|
+
prepare
|
20
|
+
success = true
|
21
|
+
example_groups.each do |example_group|
|
22
|
+
success = success & example_group.run
|
23
|
+
end
|
24
|
+
return success
|
25
|
+
ensure
|
26
|
+
finish
|
27
|
+
end
|
28
|
+
|
29
|
+
protected
|
30
|
+
def prepare
|
31
|
+
reporter.start(number_of_examples)
|
32
|
+
example_groups.reverse! if reverse
|
33
|
+
end
|
34
|
+
|
35
|
+
def finish
|
36
|
+
reporter.end
|
37
|
+
reporter.dump
|
38
|
+
end
|
39
|
+
|
40
|
+
def reporter
|
41
|
+
@options.reporter
|
42
|
+
end
|
43
|
+
|
44
|
+
def reverse
|
45
|
+
@options.reverse
|
46
|
+
end
|
47
|
+
|
48
|
+
def example_groups
|
49
|
+
@options.example_groups
|
50
|
+
end
|
51
|
+
|
52
|
+
def number_of_examples
|
53
|
+
@options.number_of_examples
|
54
|
+
end
|
55
|
+
end
|
56
|
+
# TODO: BT - Deprecate BehaviourRunner?
|
57
|
+
BehaviourRunner = ExampleGroupRunner
|
58
|
+
end
|
59
|
+
end
|