rspec 1.0.0 → 1.3.1
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/.document +7 -0
- data/History.rdoc +1546 -0
- data/{MIT-LICENSE → License.txt} +3 -1
- data/Manifest.txt +384 -0
- data/README.rdoc +41 -0
- data/Rakefile +94 -229
- data/Ruby1.9.rdoc +31 -0
- data/TODO.txt +17 -0
- data/Upgrade.rdoc +260 -0
- data/bin/autospec +4 -0
- data/bin/spec +5 -3
- data/cucumber.yml +5 -0
- data/examples/failing/README.txt +11 -0
- data/examples/failing/diffing_spec.rb +36 -0
- data/examples/failing/failing_implicit_docstrings_example.rb +17 -0
- data/examples/failing/failure_in_after.rb +10 -0
- data/examples/failing/failure_in_before.rb +10 -0
- data/examples/failing/mocking_example.rb +38 -0
- data/examples/failing/mocking_with_flexmock.rb +26 -0
- data/examples/failing/mocking_with_mocha.rb +25 -0
- data/examples/failing/mocking_with_rr.rb +27 -0
- data/examples/failing/partial_mock_example.rb +18 -0
- data/examples/failing/pending_example.rb +7 -0
- data/examples/failing/predicate_example.rb +32 -0
- data/examples/failing/raising_example.rb +47 -0
- data/examples/failing/syntax_error_example.rb +7 -0
- data/examples/failing/team_spec.rb +41 -0
- data/examples/failing/timeout_behaviour.rb +5 -0
- data/examples/{custom_formatter.rb → passing/custom_formatter.rb} +1 -1
- data/examples/passing/dynamic_spec.rb +7 -0
- data/examples/{file_accessor.rb → passing/file_accessor.rb} +18 -18
- data/examples/{file_accessor_spec.rb → passing/file_accessor_spec.rb} +37 -38
- data/examples/passing/filtered_formatter.rb +17 -0
- data/examples/passing/filtered_formatter_example.rb +31 -0
- data/examples/{greeter_spec.rb → passing/greeter_spec.rb} +1 -1
- data/examples/passing/helper_method_example.rb +12 -0
- data/examples/passing/implicit_docstrings_example.rb +16 -0
- data/examples/{io_processor.rb → passing/io_processor.rb} +8 -8
- data/examples/{io_processor_spec.rb → passing/io_processor_spec.rb} +2 -3
- data/examples/{mocking_example.rb → passing/mocking_example.rb} +0 -2
- data/examples/{multi_threaded_behaviour_runner.rb → passing/multi_threaded_example_group_runner.rb} +10 -9
- data/examples/passing/nested_classes_example.rb +35 -0
- data/examples/passing/options_example.rb +29 -0
- data/examples/passing/options_formatter.rb +20 -0
- data/examples/{partial_mock_example.rb → passing/partial_mock_example.rb} +2 -3
- data/examples/passing/pending_example.rb +18 -0
- data/examples/{predicate_example.rb → passing/predicate_example.rb} +1 -3
- data/examples/{shared_behaviours_example.rb → passing/shared_example_group_example.rb} +15 -11
- data/examples/passing/shared_stack_examples.rb +36 -0
- data/examples/passing/simple_matcher_example.rb +29 -0
- data/examples/{stack.rb → passing/stack.rb} +1 -1
- data/examples/{stack_spec.rb → passing/stack_spec.rb} +6 -40
- data/examples/passing/stack_spec_with_nested_example_groups.rb +66 -0
- data/examples/{stubbing_example.rb → passing/stubbing_example.rb} +1 -3
- data/examples/passing/yielding_example.rb +31 -0
- data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +85 -0
- data/features/before_and_after_blocks/before_and_after_blocks.feature +167 -0
- data/features/command_line/line_number_option.feature +56 -0
- data/features/command_line/line_number_option_with_example_with_no_name.feature +22 -0
- data/features/example_groups/define_example_attribute.feature +41 -0
- data/features/example_groups/example_group_with_should_methods.feature +29 -0
- data/features/example_groups/implicit_docstrings.feature +59 -0
- data/features/example_groups/nested_groups.feature +32 -0
- data/features/expectations/customized_message.feature +54 -0
- data/features/expectations/expect_change.feature +65 -0
- data/features/expectations/expect_error.feature +44 -0
- data/features/extensions/custom_example_group.feature +19 -0
- data/features/formatters/custom_formatter.feature +30 -0
- data/features/formatters/nested_formatter.feature +32 -0
- data/features/interop/cucumber_stubs_dont_leak.feature +11 -0
- data/features/interop/examples_and_tests_together.feature +84 -0
- data/features/interop/rspec_output.feature +25 -0
- data/features/interop/test_but_not_test_unit.feature +26 -0
- data/features/interop/test_case_with_should_methods.feature +46 -0
- data/features/load_paths/add_lib_to_load_path.feature +20 -0
- data/features/load_paths/add_spec_to_load_path.feature +20 -0
- data/features/matchers/define_diffable_matcher.feature +26 -0
- data/features/matchers/define_matcher.feature +179 -0
- data/features/matchers/define_matcher_outside_rspec.feature +38 -0
- data/features/matchers/define_matcher_with_fluent_interface.feature +48 -0
- data/features/matchers/define_wrapped_matcher.feature +56 -0
- data/features/matchers/match_unless_raises.feature +60 -0
- data/features/matchers/match_unless_raises_unexpected_error.feature +39 -0
- data/features/mock_framework_integration/use_flexmock.feature +27 -0
- data/features/mock_framework_integration/use_mocha.feature +27 -0
- data/features/mock_framework_integration/use_rr.feature +27 -0
- data/features/mocks/block_local_expectations.feature +62 -0
- data/features/mocks/mix_stubs_and_mocks.feature +22 -0
- data/features/mocks/stub_implementation.feature +26 -0
- data/features/pending/pending_examples.feature +81 -0
- data/features/runner/specify_line_number.feature +32 -0
- data/features/spec_helper/spec_helper.feature +25 -0
- data/features/step_definitions/running_rspec_steps.rb +52 -0
- data/features/step_definitions/stubbing_steps.rb +16 -0
- data/features/subject/explicit_subject.feature +31 -0
- data/features/subject/implicit_subject.feature +43 -0
- data/features/support/env.rb +83 -0
- data/features/support/matchers/smart_match.rb +31 -0
- data/geminstaller.yml +29 -0
- data/init.rb +9 -0
- data/lib/autotest/discover.rb +3 -0
- data/lib/autotest/rspec.rb +54 -0
- data/lib/spec/adapters/mock_frameworks/flexmock.rb +24 -0
- data/{plugins → lib/spec/adapters}/mock_frameworks/mocha.rb +8 -4
- data/lib/spec/adapters/mock_frameworks/rr.rb +22 -0
- data/lib/spec/adapters/mock_frameworks/rspec.rb +21 -0
- data/lib/spec/autorun.rb +3 -0
- data/lib/spec/deprecation.rb +41 -0
- data/lib/spec/dsl/main.rb +93 -0
- data/lib/spec/dsl.rb +1 -10
- data/lib/spec/example/args_and_options.rb +27 -0
- data/lib/spec/example/before_and_after_hooks.rb +93 -0
- data/lib/spec/example/errors.rb +25 -0
- data/lib/spec/example/example_group.rb +10 -0
- data/lib/spec/example/example_group_factory.rb +82 -0
- data/lib/spec/example/example_group_hierarchy.rb +53 -0
- data/lib/spec/example/example_group_methods.rb +287 -0
- data/lib/spec/example/example_group_proxy.rb +61 -0
- data/lib/spec/example/example_matcher.rb +43 -0
- data/lib/spec/example/example_methods.rb +152 -0
- data/lib/spec/example/example_proxy.rb +41 -0
- data/lib/spec/example/module_reopening_fix.rb +43 -0
- data/lib/spec/example/pending.rb +18 -0
- data/lib/spec/example/predicate_matchers.rb +46 -0
- data/lib/spec/example/shared_example_group.rb +59 -0
- data/lib/spec/example/subject.rb +114 -0
- data/lib/spec/example.rb +164 -0
- data/lib/spec/expectations/errors.rb +7 -1
- data/lib/spec/expectations/extensions/kernel.rb +52 -0
- data/lib/spec/expectations/extensions.rb +1 -2
- data/lib/spec/expectations/fail_with.rb +45 -0
- data/lib/spec/expectations/handler.rb +37 -30
- data/lib/spec/expectations.rb +2 -23
- data/lib/spec/extensions/instance_exec.rb +31 -0
- data/lib/spec/interop/test/unit/autorunner.rb +6 -0
- data/lib/spec/interop/test/unit/testcase.rb +56 -0
- data/lib/spec/interop/test/unit/testresult.rb +6 -0
- data/lib/spec/interop/test/unit/testsuite_adapter.rb +36 -0
- data/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
- data/lib/spec/interop/test.rb +44 -0
- data/lib/spec/matchers/be.rb +183 -140
- data/lib/spec/matchers/be_close.rb +18 -23
- data/lib/spec/matchers/be_instance_of.rb +26 -0
- data/lib/spec/matchers/be_kind_of.rb +26 -0
- data/lib/spec/matchers/change.rb +72 -41
- data/lib/spec/matchers/compatibility.rb +14 -0
- data/lib/spec/matchers/dsl.rb +20 -0
- data/lib/spec/matchers/eql.rb +25 -26
- data/lib/spec/matchers/equal.rb +35 -25
- data/lib/spec/matchers/errors.rb +5 -0
- data/lib/spec/matchers/exist.rb +16 -0
- data/lib/spec/matchers/generated_descriptions.rb +36 -0
- data/lib/spec/matchers/has.rb +17 -26
- data/lib/spec/matchers/have.rb +36 -24
- data/lib/spec/matchers/include.rb +22 -48
- data/lib/spec/matchers/match.rb +11 -31
- data/lib/spec/matchers/match_array.rb +71 -0
- data/lib/spec/matchers/matcher.rb +132 -0
- data/lib/spec/matchers/method_missing.rb +9 -0
- data/lib/spec/matchers/operator_matcher.rb +55 -44
- data/lib/spec/matchers/pretty.rb +37 -0
- data/lib/spec/matchers/raise_exception.rb +131 -0
- data/lib/spec/matchers/respond_to.rb +35 -9
- data/lib/spec/matchers/satisfy.rb +2 -2
- data/lib/spec/matchers/simple_matcher.rb +134 -0
- data/lib/spec/matchers/throw_symbol.rb +56 -31
- data/lib/spec/matchers/wrap_expectation.rb +55 -0
- data/lib/spec/matchers.rb +104 -48
- data/lib/spec/mocks/argument_expectation.rb +28 -112
- data/lib/spec/mocks/argument_matchers.rb +237 -0
- data/lib/spec/mocks/error_generator.rb +20 -13
- data/lib/spec/mocks/errors.rb +1 -1
- data/lib/spec/mocks/example_methods.rb +69 -0
- data/lib/spec/mocks/extensions.rb +1 -0
- data/lib/spec/mocks/framework.rb +15 -0
- data/lib/spec/mocks/message_expectation.rb +206 -93
- data/lib/spec/mocks/methods.rb +66 -7
- data/lib/spec/mocks/mock.rb +53 -11
- data/lib/spec/mocks/proxy.rb +160 -55
- data/lib/spec/mocks/space.rb +2 -2
- data/lib/spec/mocks.rb +14 -23
- data/lib/spec/rake/spectask.rb +108 -53
- data/lib/spec/rake/verify_rcov.rb +4 -4
- data/lib/spec/ruby.rb +9 -0
- data/lib/spec/runner/backtrace_tweaker.rb +45 -23
- data/lib/spec/runner/class_and_arguments_parser.rb +14 -0
- data/lib/spec/runner/command_line.rb +7 -14
- data/lib/spec/runner/configuration.rb +202 -0
- data/lib/spec/runner/differs/default.rb +93 -0
- data/lib/spec/runner/differs/load-diff-lcs.rb +12 -0
- data/lib/spec/runner/drb_command_line.rb +18 -7
- data/lib/spec/runner/example_group_runner.rb +58 -0
- data/lib/spec/runner/extensions/kernel.rb +5 -46
- data/lib/spec/runner/formatter/base_formatter.rb +97 -26
- data/lib/spec/runner/formatter/base_text_formatter.rb +79 -39
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +25 -0
- data/lib/spec/runner/formatter/failing_examples_formatter.rb +6 -8
- data/lib/spec/runner/formatter/html_formatter.rb +101 -75
- data/lib/spec/runner/formatter/nested_text_formatter.rb +50 -0
- data/lib/spec/runner/formatter/no_op_method_missing.rb +21 -0
- data/lib/spec/runner/formatter/profile_formatter.rb +47 -0
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +11 -8
- data/lib/spec/runner/formatter/silent_formatter.rb +10 -0
- data/lib/spec/runner/formatter/snippet_extractor.rb +2 -2
- data/lib/spec/runner/formatter/specdoc_formatter.rb +20 -15
- data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
- data/lib/spec/runner/heckle_runner.rb +56 -56
- data/lib/spec/runner/{heckle_runner_win.rb → heckle_runner_unsupported.rb} +10 -10
- data/lib/spec/runner/line_number_query.rb +78 -0
- data/lib/spec/runner/option_parser.rb +147 -148
- data/lib/spec/runner/options.rb +343 -95
- data/lib/spec/runner/reporter.rb +117 -60
- data/lib/spec/runner.rb +39 -138
- data/lib/spec/stubs/cucumber.rb +5 -0
- data/lib/spec/test/unit.rb +10 -0
- data/lib/spec/version.rb +14 -22
- data/lib/spec.rb +5 -10
- data/resources/helpers/cmdline.rb +8 -0
- data/resources/rake/examples.rake +7 -0
- data/resources/rake/examples_with_rcov.rake +9 -0
- data/resources/rake/failing_examples_with_html.rake +9 -0
- data/resources/rake/verify_rcov.rake +7 -0
- data/spec/README.jruby +15 -0
- data/spec/autotest/autotest_helper.rb +8 -0
- data/spec/autotest/autotest_matchers.rb +38 -0
- data/spec/autotest/discover_spec.rb +8 -0
- data/spec/autotest/failed_results_re_spec.rb +31 -0
- data/spec/autotest/rspec_spec.rb +126 -0
- data/spec/ruby_forker.rb +13 -0
- data/spec/spec/dsl/main_spec.rb +103 -0
- data/spec/spec/example/example_group_class_definition_spec.rb +51 -0
- data/spec/spec/example/example_group_factory_spec.rb +180 -0
- data/spec/spec/example/example_group_methods_spec.rb +778 -0
- data/spec/spec/example/example_group_proxy_spec.rb +107 -0
- data/spec/spec/example/example_group_spec.rb +632 -0
- data/spec/spec/example/example_matcher_spec.rb +85 -0
- data/spec/spec/example/example_methods_spec.rb +162 -0
- data/spec/spec/example/example_proxy_spec.rb +57 -0
- data/spec/spec/example/helper_method_spec.rb +24 -0
- data/spec/spec/{dsl/behaviour_eval_spec.rb → example/nested_example_group_spec.rb} +25 -3
- data/spec/spec/example/pending_module_spec.rb +58 -0
- data/spec/spec/example/predicate_matcher_spec.rb +41 -0
- data/spec/spec/example/shared_example_group_spec.rb +257 -0
- data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
- data/spec/spec/example/subject_spec.rb +110 -0
- data/spec/spec/expectations/differs/default_spec.rb +100 -13
- data/spec/spec/expectations/extensions/{object_spec.rb → kernel_spec.rb} +13 -14
- data/spec/spec/expectations/fail_with_spec.rb +42 -17
- data/spec/spec/expectations/handler_spec.rb +206 -0
- data/spec/spec/expectations/wrap_expectation_spec.rb +31 -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/test_case_with_various_names.rb +22 -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 +48 -0
- data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +18 -0
- data/spec/spec/interop/test/unit/testcase_spec.rb +50 -0
- data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
- data/spec/spec/matchers/be_close_spec.rb +32 -21
- data/spec/spec/matchers/be_instance_of_spec.rb +36 -0
- data/spec/spec/matchers/be_kind_of_spec.rb +33 -0
- data/spec/spec/matchers/be_spec.rb +261 -10
- data/spec/spec/matchers/change_spec.rb +178 -61
- data/spec/spec/matchers/compatibility_spec.rb +28 -0
- data/spec/spec/matchers/description_generation_spec.rb +47 -46
- data/spec/spec/matchers/dsl_spec.rb +34 -0
- data/spec/spec/matchers/eql_spec.rb +14 -9
- data/spec/spec/matchers/equal_spec.rb +43 -14
- data/spec/spec/matchers/exist_spec.rb +41 -24
- data/spec/spec/matchers/has_spec.rb +154 -1
- data/spec/spec/matchers/have_spec.rb +311 -189
- data/spec/spec/matchers/include_spec.rb +45 -2
- data/spec/spec/matchers/match_array_spec.rb +115 -0
- data/spec/spec/matchers/match_spec.rb +25 -5
- data/spec/spec/matchers/matcher_spec.rb +289 -0
- data/spec/spec/matchers/matchers_spec.rb +2 -0
- data/spec/spec/matchers/operator_matcher_spec.rb +48 -15
- data/spec/spec/matchers/raise_exception_spec.rb +345 -0
- data/spec/spec/matchers/respond_to_spec.rb +78 -16
- data/spec/spec/matchers/satisfy_spec.rb +1 -1
- data/spec/spec/matchers/simple_matcher_spec.rb +100 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +111 -41
- data/spec/spec/mocks/and_yield_spec.rb +117 -0
- data/spec/spec/mocks/any_number_of_times_spec.rb +9 -2
- data/spec/spec/mocks/argument_expectation_spec.rb +19 -15
- data/spec/spec/mocks/argument_matchers_spec.rb +19 -0
- data/spec/spec/mocks/at_least_spec.rb +2 -2
- data/spec/spec/mocks/at_most_spec.rb +3 -3
- data/spec/spec/mocks/bug_report_10260_spec.rb +1 -1
- data/spec/spec/mocks/bug_report_10263_spec.rb +27 -0
- data/spec/spec/mocks/bug_report_11545_spec.rb +32 -0
- data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
- data/spec/spec/mocks/bug_report_496_spec.rb +17 -0
- data/spec/spec/mocks/bug_report_600_spec.rb +22 -0
- data/spec/spec/mocks/bug_report_7611_spec.rb +2 -2
- data/spec/spec/mocks/bug_report_7805_spec.rb +2 -2
- data/spec/spec/mocks/bug_report_8165_spec.rb +4 -4
- data/spec/spec/mocks/bug_report_8302_spec.rb +2 -2
- data/spec/spec/mocks/bug_report_830_spec.rb +21 -0
- data/spec/spec/mocks/double_spec.rb +12 -0
- data/spec/spec/mocks/failing_argument_matchers_spec.rb +95 -0
- data/spec/spec/mocks/hash_including_matcher_spec.rb +90 -0
- data/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
- data/spec/spec/mocks/mock_ordering_spec.rb +15 -5
- data/spec/spec/mocks/mock_space_spec.rb +1 -1
- data/spec/spec/mocks/mock_spec.rb +346 -129
- data/spec/spec/mocks/multiple_return_value_spec.rb +9 -9
- data/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
- data/spec/spec/mocks/null_object_mock_spec.rb +15 -1
- data/spec/spec/mocks/once_counts_spec.rb +2 -2
- data/spec/spec/mocks/options_hash_spec.rb +19 -17
- data/spec/spec/mocks/partial_mock_spec.rb +124 -12
- data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +2 -2
- data/spec/spec/mocks/passing_argument_matchers_spec.rb +145 -0
- data/spec/spec/mocks/precise_counts_spec.rb +2 -2
- data/spec/spec/mocks/record_messages_spec.rb +2 -2
- data/spec/spec/mocks/stub_chain_spec.rb +42 -0
- data/spec/spec/mocks/stub_implementation_spec.rb +31 -0
- data/spec/spec/mocks/stub_spec.rb +147 -103
- data/spec/spec/mocks/stubbed_message_expectations_spec.rb +26 -0
- data/spec/spec/mocks/twice_counts_spec.rb +2 -2
- data/spec/spec/mocks/unstub_spec.rb +127 -0
- data/spec/spec/package/bin_spec_spec.rb +11 -7
- data/spec/spec/rake/spectask_spec.rb +150 -0
- data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
- data/spec/spec/runner/command_line_spec.rb +158 -29
- data/spec/spec/runner/configuration_spec.rb +320 -0
- data/spec/spec/runner/drb_command_line_spec.rb +137 -72
- data/spec/spec/runner/empty_file.txt +0 -0
- data/spec/spec/runner/example_group_runner_spec.rb +26 -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 +30 -0
- data/spec/spec/runner/formatter/base_text_formatter_spec.rb +113 -0
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +17 -12
- data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +377 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +377 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.7.html +377 -0
- data/spec/spec/runner/formatter/html_formatted-1.9.1.html +377 -0
- data/spec/spec/runner/formatter/html_formatter_spec.rb +112 -52
- data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +329 -0
- data/spec/spec/runner/formatter/profile_formatter_spec.rb +70 -0
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +87 -16
- data/spec/spec/runner/formatter/snippet_extractor_spec.rb +14 -7
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +153 -50
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +371 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +371 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +371 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +371 -0
- data/spec/spec/runner/formatter/text_mate_formatter_spec.rb +106 -0
- data/spec/spec/runner/heckle_runner_spec.rb +32 -17
- data/spec/spec/runner/heckler_spec.rb +17 -11
- data/spec/spec/runner/line_number_query/line_number_query_fixture.rb +70 -0
- data/spec/spec/runner/line_number_query_spec.rb +129 -0
- data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +27 -21
- data/spec/spec/runner/option_parser_spec.rb +367 -164
- data/spec/spec/runner/options_spec.rb +506 -94
- data/spec/spec/runner/output_one_time_fixture.rb +7 -0
- data/spec/spec/runner/output_one_time_fixture_runner.rb +7 -0
- data/spec/spec/runner/output_one_time_spec.rb +15 -0
- data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +94 -27
- data/spec/spec/runner/reporter_spec.rb +212 -121
- 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/resources/custom_example_group_runner.rb +14 -0
- data/spec/spec/runner/resources/utf8_encoded.rb +8 -0
- data/spec/spec/runner/spec.opts +2 -0
- data/spec/spec/runner/spec_drb.opts +2 -0
- data/spec/spec/runner/spec_spaced.opts +2 -0
- data/spec/spec/runner_spec.rb +13 -0
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +87 -45
- data/spec/support/macros.rb +29 -0
- data/spec/{spec → support}/spec_classes.rb +26 -4
- metadata +461 -141
- data/CHANGES +0 -748
- data/EXAMPLES.rd +0 -108
- data/README +0 -70
- data/UPGRADE +0 -31
- data/bin/spec_translator +0 -8
- data/examples/auto_spec_description_example.rb +0 -19
- data/examples/before_and_after_example.rb +0 -39
- data/examples/behave_as_example.rb +0 -45
- data/examples/dynamic_spec.rb +0 -9
- data/examples/helper_method_example.rb +0 -11
- data/examples/legacy_spec.rb +0 -10
- data/examples/not_yet_implemented_spec.rb +0 -12
- data/examples/priority.txt +0 -1
- data/examples/spec_helper.rb +0 -1
- data/examples/test_case_adapter_example.rb +0 -26
- data/examples/test_case_spec.rb +0 -65
- data/lib/spec/dsl/behaviour.rb +0 -204
- data/lib/spec/dsl/behaviour_callbacks.rb +0 -77
- data/lib/spec/dsl/behaviour_eval.rb +0 -177
- data/lib/spec/dsl/behaviour_factory.rb +0 -42
- data/lib/spec/dsl/composite_proc_builder.rb +0 -28
- data/lib/spec/dsl/configuration.rb +0 -119
- data/lib/spec/dsl/description.rb +0 -46
- data/lib/spec/dsl/example.rb +0 -127
- data/lib/spec/dsl/example_matcher.rb +0 -28
- data/lib/spec/dsl/example_should_raise_handler.rb +0 -74
- data/lib/spec/expectations/differs/default.rb +0 -61
- data/lib/spec/expectations/extensions/object.rb +0 -66
- data/lib/spec/expectations/extensions/string_and_symbol.rb +0 -17
- data/lib/spec/extensions/object.rb +0 -6
- data/lib/spec/extensions.rb +0 -1
- data/lib/spec/matchers/raise_error.rb +0 -100
- data/lib/spec/mocks/argument_constraint_matchers.rb +0 -12
- data/lib/spec/mocks/spec_methods.rb +0 -30
- data/lib/spec/runner/behaviour_runner.rb +0 -102
- data/lib/spec/runner/extensions/object.rb +0 -32
- data/lib/spec/runner/formatter/failing_behaviours_formatter.rb +0 -25
- data/lib/spec/runner/formatter/rdoc_formatter.rb +0 -24
- data/lib/spec/runner/formatter.rb +0 -9
- data/lib/spec/runner/spec_parser.rb +0 -50
- data/lib/spec/test_case_adapter.rb +0 -10
- data/lib/spec/translator.rb +0 -106
- data/plugins/mock_frameworks/flexmock.rb +0 -27
- data/plugins/mock_frameworks/rspec.rb +0 -18
- data/spec/spec/dsl/behaviour_factory_spec.rb +0 -30
- data/spec/spec/dsl/behaviour_spec.rb +0 -604
- data/spec/spec/dsl/composite_proc_builder_spec.rb +0 -57
- data/spec/spec/dsl/configuration_spec.rb +0 -50
- data/spec/spec/dsl/description_spec.rb +0 -81
- data/spec/spec/dsl/example_class_spec.rb +0 -24
- data/spec/spec/dsl/example_instance_spec.rb +0 -162
- data/spec/spec/dsl/example_should_raise_spec.rb +0 -137
- data/spec/spec/dsl/predicate_matcher_spec.rb +0 -21
- data/spec/spec/dsl/shared_behaviour_spec.rb +0 -208
- data/spec/spec/matchers/handler_spec.rb +0 -88
- data/spec/spec/matchers/matcher_methods_spec.rb +0 -78
- data/spec/spec/matchers/raise_error_spec.rb +0 -147
- data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +0 -73
- data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +0 -92
- data/spec/spec/runner/behaviour_runner_spec.rb +0 -118
- data/spec/spec/runner/context_matching_spec.rb +0 -27
- data/spec/spec/runner/execution_context_spec.rb +0 -31
- data/spec/spec/runner/extensions/kernel_spec.rb +0 -36
- data/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +0 -27
- data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +0 -21
- data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +0 -36
- data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +0 -19
- data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +0 -46
- data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +0 -21
- data/spec/spec/runner/object_ext_spec.rb +0 -11
- data/spec/spec/runner/spec_matcher_spec.rb +0 -102
- data/spec/spec/runner/spec_parser_spec.rb +0 -93
- data/spec/spec/translator_spec.rb +0 -216
- /data/examples/{custom_expectation_matchers.rb → passing/custom_matchers.rb} +0 -0
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module DSL
|
|
3
|
-
module BehaviourCallbacks
|
|
4
|
-
def prepend_before(*args, &block)
|
|
5
|
-
scope, options = scope_and_options(*args)
|
|
6
|
-
add(scope, options, :before, :unshift, &block)
|
|
7
|
-
end
|
|
8
|
-
def append_before(*args, &block)
|
|
9
|
-
scope, options = scope_and_options(*args)
|
|
10
|
-
add(scope, options, :before, :<<, &block)
|
|
11
|
-
end
|
|
12
|
-
alias_method :before, :append_before
|
|
13
|
-
|
|
14
|
-
def prepend_after(*args, &block)
|
|
15
|
-
scope, options = scope_and_options(*args)
|
|
16
|
-
add(scope, options, :after, :unshift, &block)
|
|
17
|
-
end
|
|
18
|
-
alias_method :after, :prepend_after
|
|
19
|
-
def append_after(*args, &block)
|
|
20
|
-
scope, options = scope_and_options(*args)
|
|
21
|
-
add(scope, options, :after, :<<, &block)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def scope_and_options(*args)
|
|
25
|
-
args, options = args_and_options(*args)
|
|
26
|
-
scope = (args[0] || :each), options
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def add(scope, options, where, how, &block)
|
|
30
|
-
scope ||= :each
|
|
31
|
-
options ||= {}
|
|
32
|
-
behaviour_type = options[:behaviour_type]
|
|
33
|
-
case scope
|
|
34
|
-
when :each; self.__send__("#{where}_each_parts", behaviour_type).__send__(how, block)
|
|
35
|
-
when :all; self.__send__("#{where}_all_parts", behaviour_type).__send__(how, block)
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
# Deprecated. Use before(:each)
|
|
40
|
-
def setup(&block)
|
|
41
|
-
before(:each, &block)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# Deprecated. Use after(:each)
|
|
45
|
-
def teardown(&block)
|
|
46
|
-
after(:each, &block)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def before_all_parts(behaviour_type=nil) # :nodoc:
|
|
50
|
-
@before_all_parts ||= {}
|
|
51
|
-
@before_all_parts[behaviour_type] ||= []
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def after_all_parts(behaviour_type=nil) # :nodoc:
|
|
55
|
-
@after_all_parts ||= {}
|
|
56
|
-
@after_all_parts[behaviour_type] ||= []
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def before_each_parts(behaviour_type=nil) # :nodoc:
|
|
60
|
-
@before_each_parts ||= {}
|
|
61
|
-
@before_each_parts[behaviour_type] ||= []
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
def after_each_parts(behaviour_type=nil) # :nodoc:
|
|
65
|
-
@after_each_parts ||= {}
|
|
66
|
-
@after_each_parts[behaviour_type] ||= []
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
def clear_before_and_after! # :nodoc:
|
|
70
|
-
@before_all_parts = nil
|
|
71
|
-
@after_all_parts = nil
|
|
72
|
-
@before_each_parts = nil
|
|
73
|
-
@after_each_parts = nil
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module DSL
|
|
3
|
-
module BehaviourEval
|
|
4
|
-
module ModuleMethods
|
|
5
|
-
include BehaviourCallbacks
|
|
6
|
-
|
|
7
|
-
attr_writer :behaviour
|
|
8
|
-
attr_accessor :description
|
|
9
|
-
|
|
10
|
-
def inherit(klass)
|
|
11
|
-
raise ArgumentError.new("Shared behaviours cannot inherit from classes") if @behaviour.shared?
|
|
12
|
-
@behaviour_superclass = klass
|
|
13
|
-
derive_execution_context_class_from_behaviour_superclass
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def include(*mods)
|
|
17
|
-
mods.each do |mod|
|
|
18
|
-
included_modules << mod
|
|
19
|
-
mod.send :included, self
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def it_should_behave_like(behaviour_description)
|
|
24
|
-
behaviour = @behaviour.class.find_shared_behaviour(behaviour_description)
|
|
25
|
-
if behaviour.nil?
|
|
26
|
-
raise RuntimeError.new("Shared Behaviour '#{behaviour_description}' can not be found")
|
|
27
|
-
end
|
|
28
|
-
behaviour.copy_to(self)
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def copy_to(eval_module)
|
|
32
|
-
examples.each { |e| eval_module.examples << e; }
|
|
33
|
-
before_each_parts.each { |p| eval_module.before_each_parts << p }
|
|
34
|
-
after_each_parts.each { |p| eval_module.after_each_parts << p }
|
|
35
|
-
before_all_parts.each { |p| eval_module.before_all_parts << p }
|
|
36
|
-
after_all_parts.each { |p| eval_module.after_all_parts << p }
|
|
37
|
-
included_modules.each { |m| eval_module.included_modules << m }
|
|
38
|
-
eval_module.included_modules << self
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
# :call-seq:
|
|
42
|
-
# predicate_matchers[method_on_object] = matcher_name
|
|
43
|
-
#
|
|
44
|
-
# Dynamically generates a custom matcher that will match
|
|
45
|
-
# a predicate on your class.
|
|
46
|
-
#
|
|
47
|
-
# == Example
|
|
48
|
-
#
|
|
49
|
-
# class Fish
|
|
50
|
-
# def can_swim?
|
|
51
|
-
# true
|
|
52
|
-
# end
|
|
53
|
-
# end
|
|
54
|
-
#
|
|
55
|
-
# describe Fish do
|
|
56
|
-
# predicate_matchers[:swim] = :can_swim?
|
|
57
|
-
# it "should swim" do
|
|
58
|
-
# Fish.new.should swim
|
|
59
|
-
# end
|
|
60
|
-
# end
|
|
61
|
-
def predicate_matchers
|
|
62
|
-
@predicate_matchers ||= {:exist => :exist?}
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def define_predicate_matchers(hash=nil) # :nodoc:
|
|
66
|
-
if hash.nil?
|
|
67
|
-
define_predicate_matchers(predicate_matchers)
|
|
68
|
-
define_predicate_matchers(Spec::Runner.configuration.predicate_matchers)
|
|
69
|
-
else
|
|
70
|
-
hash.each_pair do |matcher_method, method_on_object|
|
|
71
|
-
define_method matcher_method do |*args|
|
|
72
|
-
eval("be_#{method_on_object.to_s.gsub('?','')}(*args)")
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def it(description=:__generate_description, opts={}, &block)
|
|
79
|
-
examples << Example.new(description, opts, &block)
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
def specify(description, opts={}, &block)
|
|
83
|
-
it(description, opts, &block)
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
def methods
|
|
87
|
-
my_methods = super
|
|
88
|
-
my_methods |= behaviour_superclass.methods
|
|
89
|
-
my_methods
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
protected
|
|
93
|
-
|
|
94
|
-
def method_missing(method_name, *args)
|
|
95
|
-
if behaviour_superclass.respond_to?(method_name)
|
|
96
|
-
return execution_context_class.send(method_name, *args)
|
|
97
|
-
end
|
|
98
|
-
super
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
def before_all_proc(behaviour_type, &error_handler)
|
|
102
|
-
parts = []
|
|
103
|
-
parts.push(*Behaviour.before_all_parts(nil))
|
|
104
|
-
parts.push(*Behaviour.before_all_parts(behaviour_type)) unless behaviour_type.nil?
|
|
105
|
-
parts.push(*before_all_parts(nil))
|
|
106
|
-
parts.push(*before_all_parts(behaviour_type)) unless behaviour_type.nil?
|
|
107
|
-
CompositeProcBuilder.new(parts).proc(&error_handler)
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
def after_all_proc(behaviour_type, &error_handler)
|
|
111
|
-
parts = []
|
|
112
|
-
parts.push(*after_all_parts(behaviour_type)) unless behaviour_type.nil?
|
|
113
|
-
parts.push(*after_all_parts(nil))
|
|
114
|
-
parts.push(*Behaviour.after_all_parts(behaviour_type)) unless behaviour_type.nil?
|
|
115
|
-
parts.push(*Behaviour.after_all_parts(nil))
|
|
116
|
-
CompositeProcBuilder.new(parts).proc(&error_handler)
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
def before_each_proc(behaviour_type, &error_handler)
|
|
120
|
-
parts = []
|
|
121
|
-
parts.push(*Behaviour.before_each_parts(nil))
|
|
122
|
-
parts.push(*Behaviour.before_each_parts(behaviour_type)) unless behaviour_type.nil?
|
|
123
|
-
parts.push(*before_each_parts(nil))
|
|
124
|
-
parts.push(*before_each_parts(behaviour_type)) unless behaviour_type.nil?
|
|
125
|
-
CompositeProcBuilder.new(parts).proc(&error_handler)
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
def after_each_proc(behaviour_type, &error_handler)
|
|
129
|
-
parts = []
|
|
130
|
-
parts.push(*after_each_parts(behaviour_type)) unless behaviour_type.nil?
|
|
131
|
-
parts.push(*after_each_parts(nil))
|
|
132
|
-
parts.push(*Behaviour.after_each_parts(behaviour_type)) unless behaviour_type.nil?
|
|
133
|
-
parts.push(*Behaviour.after_each_parts(nil))
|
|
134
|
-
CompositeProcBuilder.new(parts).proc(&error_handler)
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
private
|
|
138
|
-
|
|
139
|
-
def execution_context_class
|
|
140
|
-
@execution_context_class ||= derive_execution_context_class_from_behaviour_superclass
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
def derive_execution_context_class_from_behaviour_superclass
|
|
144
|
-
@execution_context_class = Class.new(behaviour_superclass)
|
|
145
|
-
behaviour_superclass.spec_inherited(self) if behaviour_superclass.respond_to?(:spec_inherited)
|
|
146
|
-
@execution_context_class
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
def behaviour_superclass
|
|
150
|
-
@behaviour_superclass ||= Object
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
protected
|
|
154
|
-
def included_modules
|
|
155
|
-
@included_modules ||= [::Spec::Matchers]
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
def examples
|
|
159
|
-
@examples ||= []
|
|
160
|
-
end
|
|
161
|
-
end
|
|
162
|
-
|
|
163
|
-
module InstanceMethods
|
|
164
|
-
def initialize(*args, &block) #:nodoc:
|
|
165
|
-
# TODO - inheriting from TestUnit::TestCase fails without this
|
|
166
|
-
# - let's figure out why and move this somewhere else
|
|
167
|
-
end
|
|
168
|
-
|
|
169
|
-
def violated(message="")
|
|
170
|
-
raise Spec::Expectations::ExpectationNotMetError.new(message)
|
|
171
|
-
end
|
|
172
|
-
|
|
173
|
-
end
|
|
174
|
-
|
|
175
|
-
end
|
|
176
|
-
end
|
|
177
|
-
end
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module DSL
|
|
3
|
-
class BehaviourFactory
|
|
4
|
-
|
|
5
|
-
class << self
|
|
6
|
-
|
|
7
|
-
BEHAVIOUR_CLASSES = {:default => Spec::DSL::Behaviour}
|
|
8
|
-
|
|
9
|
-
# Registers a behaviour class +klass+ with the symbol
|
|
10
|
-
# +behaviour_type+. For example:
|
|
11
|
-
#
|
|
12
|
-
# Spec::DSL::BehaviourFactory.add_behaviour_class(:farm, Spec::Farm::DSL::FarmBehaviour)
|
|
13
|
-
#
|
|
14
|
-
# This will cause Kernel#describe from a file living in
|
|
15
|
-
# <tt>spec/farm</tt> to create behaviour instances of type
|
|
16
|
-
# Spec::Farm::DSL::FarmBehaviour.
|
|
17
|
-
def add_behaviour_class(behaviour_type, klass)
|
|
18
|
-
BEHAVIOUR_CLASSES[behaviour_type] = klass
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def remove_behaviour_class(behaviour_type)
|
|
22
|
-
BEHAVIOUR_CLASSES.delete(behaviour_type)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def create(*args, &block)
|
|
26
|
-
opts = Hash === args.last ? args.last : {}
|
|
27
|
-
if opts[:shared]
|
|
28
|
-
behaviour_type = :default
|
|
29
|
-
elsif opts[:behaviour_type]
|
|
30
|
-
behaviour_type = opts[:behaviour_type]
|
|
31
|
-
elsif opts[:spec_path] =~ /spec\/(#{BEHAVIOUR_CLASSES.keys.join('|')})/
|
|
32
|
-
behaviour_type = $1.to_sym
|
|
33
|
-
else
|
|
34
|
-
behaviour_type = :default
|
|
35
|
-
end
|
|
36
|
-
return BEHAVIOUR_CLASSES[behaviour_type].new(*args, &block)
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module DSL
|
|
3
|
-
class CompositeProcBuilder < Array
|
|
4
|
-
def initialize(callbacks=[])
|
|
5
|
-
push(*callbacks)
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def proc(&error_handler)
|
|
9
|
-
parts = self
|
|
10
|
-
Proc.new do
|
|
11
|
-
parts.collect do |part|
|
|
12
|
-
begin
|
|
13
|
-
if part.is_a?(UnboundMethod)
|
|
14
|
-
part.bind(self).call
|
|
15
|
-
else
|
|
16
|
-
instance_eval(&part)
|
|
17
|
-
end
|
|
18
|
-
rescue Exception => e
|
|
19
|
-
raise e unless error_handler
|
|
20
|
-
error_handler.call(e)
|
|
21
|
-
e
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module DSL
|
|
3
|
-
class Configuration
|
|
4
|
-
|
|
5
|
-
# Chooses what mock framework to use. Example:
|
|
6
|
-
#
|
|
7
|
-
# Spec::Runner.configure do |config|
|
|
8
|
-
# config.mock_with :rspec # or :mocha, or :flexmock
|
|
9
|
-
# end
|
|
10
|
-
#
|
|
11
|
-
# To use any other mock framework, you'll have to provide
|
|
12
|
-
# your own adapter. This is simply a module that responds to
|
|
13
|
-
# setup_mocks_for_rspec, verify_mocks_for_rspec and teardown_mocks_for_rspec.
|
|
14
|
-
# These are your hooks into the lifecycle of a given example. RSpec will
|
|
15
|
-
# call setup_mocks_for_rspec before running anything else in each Example.
|
|
16
|
-
# After executing the #after methods, RSpec will then call verify_mocks_for_rspec
|
|
17
|
-
# and teardown_mocks_for_rspec (this is guaranteed to run even if there are
|
|
18
|
-
# failures in verify_mocks_for_rspec).
|
|
19
|
-
#
|
|
20
|
-
# Once you've defined this module, you can pass that to mock_with:
|
|
21
|
-
#
|
|
22
|
-
# Spec::Runner.configure do |config|
|
|
23
|
-
# config.mock_with MyMockFrameworkAdapter
|
|
24
|
-
# end
|
|
25
|
-
#
|
|
26
|
-
def mock_with(mock_framework)
|
|
27
|
-
@mock_framework = case mock_framework
|
|
28
|
-
when Symbol
|
|
29
|
-
mock_framework_path(mock_framework.to_s)
|
|
30
|
-
else
|
|
31
|
-
mock_framework
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def mock_framework # :nodoc:
|
|
36
|
-
@mock_framework ||= mock_framework_path("rspec")
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
# Declares modules to be included in all behaviours (<tt>describe</tt> blocks).
|
|
40
|
-
#
|
|
41
|
-
# config.include(My::Bottle, My::Cup)
|
|
42
|
-
#
|
|
43
|
-
# If you want to restrict the inclusion to a subset of all the behaviours then
|
|
44
|
-
# specify this in a Hash as the last argument:
|
|
45
|
-
#
|
|
46
|
-
# config.include(My::Pony, My::Horse, :behaviour_type => :farm)
|
|
47
|
-
#
|
|
48
|
-
# Only behaviours that have that type will get the modules included:
|
|
49
|
-
#
|
|
50
|
-
# describe "Downtown", :behaviour_type => :city do
|
|
51
|
-
# # Will *not* get My::Pony and My::Horse included
|
|
52
|
-
# end
|
|
53
|
-
#
|
|
54
|
-
# describe "Old Mac Donald", :behaviour_type => :farm do
|
|
55
|
-
# # *Will* get My::Pony and My::Horse included
|
|
56
|
-
# end
|
|
57
|
-
#
|
|
58
|
-
def include(*args)
|
|
59
|
-
included_modules.push(*args)
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def included_modules # :nodoc:
|
|
63
|
-
@included_modules ||= []
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
# Defines global predicate matchers. Example:
|
|
67
|
-
#
|
|
68
|
-
# config.predicate_matchers[:swim] = :can_swim?
|
|
69
|
-
#
|
|
70
|
-
# This makes it possible to say:
|
|
71
|
-
#
|
|
72
|
-
# person.should swim # passes if person.should_swim? returns true
|
|
73
|
-
#
|
|
74
|
-
def predicate_matchers
|
|
75
|
-
@predicate_matchers ||= {}
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
# Prepends a global <tt>before</tt> block to all behaviours.
|
|
79
|
-
# See #append_before for filtering semantics.
|
|
80
|
-
def prepend_before(*args, &proc)
|
|
81
|
-
Behaviour.prepend_before(*args, &proc)
|
|
82
|
-
end
|
|
83
|
-
# Appends a global <tt>before</tt> block to all behaviours.
|
|
84
|
-
#
|
|
85
|
-
# If you want to restrict the block to a subset of all the behaviours then
|
|
86
|
-
# specify this in a Hash as the last argument:
|
|
87
|
-
#
|
|
88
|
-
# config.prepend_before(:all, :behaviour_type => :farm)
|
|
89
|
-
#
|
|
90
|
-
# or
|
|
91
|
-
#
|
|
92
|
-
# config.prepend_before(:behaviour_type => :farm)
|
|
93
|
-
#
|
|
94
|
-
def append_before(*args, &proc)
|
|
95
|
-
Behaviour.append_before(*args, &proc)
|
|
96
|
-
end
|
|
97
|
-
alias_method :before, :append_before
|
|
98
|
-
|
|
99
|
-
# Prepends a global <tt>after</tt> block to all behaviours.
|
|
100
|
-
# See #append_before for filtering semantics.
|
|
101
|
-
def prepend_after(*args, &proc)
|
|
102
|
-
Behaviour.prepend_after(*args, &proc)
|
|
103
|
-
end
|
|
104
|
-
alias_method :after, :prepend_after
|
|
105
|
-
# Appends a global <tt>after</tt> block to all behaviours.
|
|
106
|
-
# See #append_before for filtering semantics.
|
|
107
|
-
def append_after(*args, &proc)
|
|
108
|
-
Behaviour.append_after(*args, &proc)
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
private
|
|
112
|
-
|
|
113
|
-
def mock_framework_path(framework_name)
|
|
114
|
-
File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "plugins", "mock_frameworks", framework_name))
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
end
|
|
118
|
-
end
|
|
119
|
-
end
|
data/lib/spec/dsl/description.rb
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module DSL
|
|
3
|
-
class Description
|
|
4
|
-
module ClassMethods
|
|
5
|
-
def generate_description(*args)
|
|
6
|
-
description = args.shift.to_s
|
|
7
|
-
unless args.empty?
|
|
8
|
-
suffix = args.shift.to_s
|
|
9
|
-
description << " " unless suffix =~ /^\s|\.|#/
|
|
10
|
-
description << suffix
|
|
11
|
-
end
|
|
12
|
-
description
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
extend ClassMethods
|
|
16
|
-
|
|
17
|
-
attr_reader :description, :described_type
|
|
18
|
-
|
|
19
|
-
def initialize(*args)
|
|
20
|
-
args, @options = args_and_options(*args)
|
|
21
|
-
@described_type = args.first unless args.first.is_a?(String)
|
|
22
|
-
@description = self.class.generate_description(*args)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def [](key)
|
|
26
|
-
@options[key]
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def []=(key, value)
|
|
30
|
-
@options[key] = value
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def to_s; @description; end
|
|
34
|
-
|
|
35
|
-
def ==(value)
|
|
36
|
-
case value
|
|
37
|
-
when Description
|
|
38
|
-
@description == value.description
|
|
39
|
-
else
|
|
40
|
-
@description == value
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
data/lib/spec/dsl/example.rb
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
require 'timeout'
|
|
2
|
-
|
|
3
|
-
module Spec
|
|
4
|
-
module DSL
|
|
5
|
-
class Example
|
|
6
|
-
def initialize(description, options={}, &example_block)
|
|
7
|
-
@from = caller(0)[3]
|
|
8
|
-
@options = options
|
|
9
|
-
@example_block = example_block
|
|
10
|
-
@description = description
|
|
11
|
-
@description_generated_proc = lambda { |desc| @generated_description = desc }
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def run(reporter, before_each_block, after_each_block, dry_run, execution_context, timeout=nil)
|
|
15
|
-
@dry_run = dry_run
|
|
16
|
-
reporter.example_started(description)
|
|
17
|
-
return reporter.example_finished(description) if dry_run
|
|
18
|
-
|
|
19
|
-
errors = []
|
|
20
|
-
location = nil
|
|
21
|
-
Timeout.timeout(timeout) do
|
|
22
|
-
before_each_ok = setup_example(execution_context, errors, &before_each_block)
|
|
23
|
-
example_ok = run_example(execution_context, errors) if before_each_ok
|
|
24
|
-
after_each_ok = teardown_example(execution_context, errors, &after_each_block)
|
|
25
|
-
location = failure_location(before_each_ok, example_ok, after_each_ok)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
ExampleShouldRaiseHandler.new(@from, @options).handle(errors)
|
|
29
|
-
reporter.example_finished(description, errors.first, location, @example_block.nil?) if reporter
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def matches?(matcher, specified_examples)
|
|
33
|
-
matcher.example_desc = description
|
|
34
|
-
matcher.matches?(specified_examples)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
private
|
|
38
|
-
def description
|
|
39
|
-
@description == :__generate_description ? generated_description : @description
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def generated_description
|
|
43
|
-
return @generated_description if @generated_description
|
|
44
|
-
if @dry_run
|
|
45
|
-
"NO NAME (Because of --dry-run)"
|
|
46
|
-
else
|
|
47
|
-
if @failed
|
|
48
|
-
"NO NAME (Because of Error raised in matcher)"
|
|
49
|
-
else
|
|
50
|
-
"NO NAME (Because there were no expectations)"
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def setup_example(execution_context, errors, &behaviour_before_block)
|
|
56
|
-
setup_mocks(execution_context)
|
|
57
|
-
Spec::Matchers.description_generated(@description_generated_proc)
|
|
58
|
-
|
|
59
|
-
builder = CompositeProcBuilder.new
|
|
60
|
-
before_proc = builder.proc(&append_errors(errors))
|
|
61
|
-
execution_context.instance_eval(&before_proc)
|
|
62
|
-
|
|
63
|
-
execution_context.instance_eval(&behaviour_before_block) if behaviour_before_block
|
|
64
|
-
return errors.empty?
|
|
65
|
-
rescue => e
|
|
66
|
-
@failed = true
|
|
67
|
-
errors << e
|
|
68
|
-
return false
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
def run_example(execution_context, errors)
|
|
72
|
-
begin
|
|
73
|
-
execution_context.instance_eval(&@example_block) if @example_block
|
|
74
|
-
return true
|
|
75
|
-
rescue Exception => e
|
|
76
|
-
@failed = true
|
|
77
|
-
errors << e
|
|
78
|
-
return false
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
def teardown_example(execution_context, errors, &behaviour_after_each)
|
|
83
|
-
execution_context.instance_eval(&behaviour_after_each) if behaviour_after_each
|
|
84
|
-
|
|
85
|
-
begin
|
|
86
|
-
verify_mocks(execution_context)
|
|
87
|
-
ensure
|
|
88
|
-
teardown_mocks(execution_context)
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
Spec::Matchers.unregister_description_generated(@description_generated_proc)
|
|
92
|
-
|
|
93
|
-
builder = CompositeProcBuilder.new
|
|
94
|
-
after_proc = builder.proc(&append_errors(errors))
|
|
95
|
-
execution_context.instance_eval(&after_proc)
|
|
96
|
-
|
|
97
|
-
return errors.empty?
|
|
98
|
-
rescue => e
|
|
99
|
-
@failed = true
|
|
100
|
-
errors << e
|
|
101
|
-
return false
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
def setup_mocks(execution_context)
|
|
105
|
-
execution_context.setup_mocks_for_rspec if execution_context.respond_to?(:setup_mocks_for_rspec)
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
def verify_mocks(execution_context)
|
|
109
|
-
execution_context.verify_mocks_for_rspec if execution_context.respond_to?(:verify_mocks_for_rspec)
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
def teardown_mocks(execution_context)
|
|
113
|
-
execution_context.teardown_mocks_for_rspec if execution_context.respond_to?(:teardown_mocks_for_rspec)
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
def append_errors(errors)
|
|
117
|
-
proc {|error| errors << error}
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
def failure_location(before_each_ok, example_ok, after_each_ok)
|
|
121
|
-
return 'before(:each)' unless before_each_ok
|
|
122
|
-
return description unless example_ok
|
|
123
|
-
return 'after(:each)' unless after_each_ok
|
|
124
|
-
end
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
end
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module DSL
|
|
3
|
-
class ExampleMatcher
|
|
4
|
-
|
|
5
|
-
attr_writer :example_desc
|
|
6
|
-
def initialize(context_desc, example_desc=nil)
|
|
7
|
-
@context_desc = context_desc
|
|
8
|
-
@example_desc = example_desc
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def matches?(specified_examples)
|
|
12
|
-
specified_examples.each do |specified_example|
|
|
13
|
-
return true if specified_example =~ /(^#{context_regexp} #{example_regexp}$|^#{context_regexp}$|^#{example_regexp}$)/
|
|
14
|
-
end
|
|
15
|
-
false
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
private
|
|
19
|
-
def context_regexp
|
|
20
|
-
Regexp.escape(@context_desc.split('::').last)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def example_regexp
|
|
24
|
-
Regexp.escape(@example_desc)
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|