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,50 +1,120 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
4
|
module Matchers
|
|
5
|
-
describe ThrowSymbol
|
|
6
|
-
|
|
5
|
+
describe ThrowSymbol do
|
|
6
|
+
describe "with no args" do
|
|
7
|
+
let(:matcher) { throw_symbol }
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
end
|
|
30
|
-
it "should not match no Symbol is thrown" do
|
|
31
|
-
@matcher.matches?(lambda{ }).should be_false
|
|
32
|
-
end
|
|
33
|
-
it "should not match if correct Symbol is thrown" do
|
|
34
|
-
@matcher.matches?(lambda{ throw :other_sym }).should be_false
|
|
35
|
-
@matcher.failure_message.should == "expected :sym, got :other_sym"
|
|
36
|
-
end
|
|
37
|
-
it "should provide a failure message when no Symbol is thrown" do
|
|
38
|
-
@matcher.matches?(lambda{})
|
|
39
|
-
@matcher.failure_message.should == "expected :sym but nothing was thrown"
|
|
9
|
+
it "matches if any Symbol is thrown" do
|
|
10
|
+
matcher.matches?(lambda{ throw :sym }).should be_true
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "matches if any Symbol is thrown with an arg" do
|
|
14
|
+
matcher.matches?(lambda{ throw :sym, "argument" }).should be_true
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "does not match if no Symbol is thrown" do
|
|
18
|
+
matcher.matches?(lambda{ }).should be_false
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "provides a failure message" do
|
|
22
|
+
matcher.matches?(lambda{})
|
|
23
|
+
matcher.failure_message_for_should.should == "expected a Symbol but nothing was thrown"
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "provides a negative failure message" do
|
|
27
|
+
matcher.matches?(lambda{ throw :sym})
|
|
28
|
+
matcher.failure_message_for_should_not.should == "expected no Symbol, got :sym"
|
|
29
|
+
end
|
|
40
30
|
end
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
31
|
+
|
|
32
|
+
describe "with a symbol" do
|
|
33
|
+
let(:matcher) { throw_symbol(:sym) }
|
|
34
|
+
|
|
35
|
+
it "matches if correct Symbol is thrown" do
|
|
36
|
+
matcher.matches?(lambda{ throw :sym }).should be_true
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "matches if correct Symbol is thrown with an arg" do
|
|
40
|
+
matcher.matches?(lambda{ throw :sym, "argument" }).should be_true
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "does not match if no Symbol is thrown" do
|
|
44
|
+
matcher.matches?(lambda{ }).should be_false
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "does not match if correct Symbol is thrown" do
|
|
48
|
+
matcher.matches?(lambda{ throw :other_sym }).should be_false
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it "provides a failure message when no Symbol is thrown" do
|
|
52
|
+
matcher.matches?(lambda{})
|
|
53
|
+
matcher.failure_message_for_should.should == "expected :sym but nothing was thrown"
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "provides a failure message when wrong Symbol is thrown" do
|
|
57
|
+
matcher.matches?(lambda{ throw :other_sym })
|
|
58
|
+
matcher.failure_message_for_should.should == "expected :sym, got :other_sym"
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "provides a negative failure message" do
|
|
62
|
+
matcher.matches?(lambda{ throw :sym })
|
|
63
|
+
matcher.failure_message_for_should_not.should == "expected :sym not to be thrown"
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it "should only match NameErrors raised by uncaught throws" do
|
|
67
|
+
matcher.matches?(lambda{ :sym }).should be_false
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it "bubbles up errors other than NameError" do
|
|
71
|
+
lambda do
|
|
72
|
+
matcher.matches?(lambda{ raise 'foo' })
|
|
73
|
+
end.should raise_error('foo')
|
|
74
|
+
end
|
|
44
75
|
end
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
76
|
+
|
|
77
|
+
describe "with a symbol and an arg" do
|
|
78
|
+
let(:matcher) { throw_symbol(:sym, "a") }
|
|
79
|
+
|
|
80
|
+
it "matches if correct Symbol and args are thrown" do
|
|
81
|
+
matcher.matches?(lambda{ throw :sym, "a" }).should be_true
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "does not match if nothing is thrown" do
|
|
85
|
+
matcher.matches?(lambda{ }).should be_false
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
it "does not match if other Symbol is thrown" do
|
|
89
|
+
matcher.matches?(lambda{ throw :other_sym, "a" }).should be_false
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it "does not match if no arg is thrown" do
|
|
93
|
+
matcher.matches?(lambda{ throw :sym }).should be_false
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it "does not match if wrong arg is thrown" do
|
|
97
|
+
matcher.matches?(lambda{ throw :sym, "b" }).should be_false
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
it "provides a failure message when no Symbol is thrown" do
|
|
101
|
+
matcher.matches?(lambda{})
|
|
102
|
+
matcher.failure_message_for_should.should == %q[expected :sym with "a" but nothing was thrown]
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
it "provides a failure message when wrong Symbol is thrown" do
|
|
106
|
+
matcher.matches?(lambda{ throw :other_sym })
|
|
107
|
+
matcher.failure_message_for_should.should == %q[expected :sym with "a", got :other_sym]
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
it "provides a negative failure message" do
|
|
111
|
+
matcher.matches?(lambda{ throw :sym })
|
|
112
|
+
matcher.failure_message_for_should_not.should == %q[expected :sym with "a" not to be thrown]
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
it "only matches NameErrors raised by uncaught throws" do
|
|
116
|
+
matcher.matches?(lambda{ :sym }).should be_false
|
|
117
|
+
end
|
|
48
118
|
end
|
|
49
119
|
end
|
|
50
120
|
end
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Mocks
|
|
5
|
+
describe Mock do
|
|
6
|
+
describe "#and_yield" do
|
|
7
|
+
|
|
8
|
+
context "with eval context as block argument" do
|
|
9
|
+
let(:obj) { double }
|
|
10
|
+
|
|
11
|
+
it "evaluates the supplied block as it is read" do
|
|
12
|
+
evaluated = false
|
|
13
|
+
obj.stub(:method_that_accepts_a_block).and_yield do |eval_context|
|
|
14
|
+
evaluated = true
|
|
15
|
+
end
|
|
16
|
+
evaluated.should be_true
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "passes an eval context object to the supplied block" do
|
|
20
|
+
obj.stub(:method_that_accepts_a_block).and_yield do |eval_context|
|
|
21
|
+
eval_context.should_not be_nil
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "evaluates the block passed to the stubbed method in the context of the supplied eval context" do
|
|
26
|
+
expected_eval_context = nil
|
|
27
|
+
actual_eval_context = nil
|
|
28
|
+
|
|
29
|
+
obj.stub(:method_that_accepts_a_block).and_yield do |eval_context|
|
|
30
|
+
expected_eval_context = eval_context
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
obj.method_that_accepts_a_block do
|
|
34
|
+
actual_eval_context = self
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
actual_eval_context.should equal(expected_eval_context)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
context "and no yielded arguments" do
|
|
41
|
+
|
|
42
|
+
it "passes when expectations set on the eval context are met" do
|
|
43
|
+
configured_eval_context = nil
|
|
44
|
+
obj.stub(:method_that_accepts_a_block).and_yield do |eval_context|
|
|
45
|
+
configured_eval_context = eval_context
|
|
46
|
+
configured_eval_context.should_receive(:foo)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
obj.method_that_accepts_a_block do
|
|
50
|
+
foo
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
configured_eval_context.rspec_verify
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "fails when expectations set on the eval context are not met" do
|
|
57
|
+
configured_eval_context = nil
|
|
58
|
+
obj.stub(:method_that_accepts_a_block).and_yield do |eval_context|
|
|
59
|
+
configured_eval_context = eval_context
|
|
60
|
+
configured_eval_context.should_receive(:foo)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
obj.method_that_accepts_a_block do
|
|
64
|
+
# foo is not called here
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
lambda {configured_eval_context.rspec_verify}.should raise_error(MockExpectationError)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
context "and yielded arguments" do
|
|
73
|
+
|
|
74
|
+
it "passes when expectations set on the eval context and yielded arguments are met" do
|
|
75
|
+
configured_eval_context = nil
|
|
76
|
+
yielded_arg = Object.new
|
|
77
|
+
obj.stub(:method_that_accepts_a_block).and_yield(yielded_arg) do |eval_context|
|
|
78
|
+
configured_eval_context = eval_context
|
|
79
|
+
configured_eval_context.should_receive(:foo)
|
|
80
|
+
yielded_arg.should_receive(:bar)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
obj.method_that_accepts_a_block do |obj|
|
|
84
|
+
obj.bar
|
|
85
|
+
foo
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
configured_eval_context.rspec_verify
|
|
89
|
+
yielded_arg.rspec_verify
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it "fails when expectations set on the eval context and yielded arguments are not met" do
|
|
93
|
+
configured_eval_context = nil
|
|
94
|
+
yielded_arg = Object.new
|
|
95
|
+
obj.stub(:method_that_accepts_a_block).and_yield(yielded_arg) do |eval_context|
|
|
96
|
+
configured_eval_context = eval_context
|
|
97
|
+
configured_eval_context.should_receive(:foo)
|
|
98
|
+
yielded_arg.should_receive(:bar)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
obj.method_that_accepts_a_block do |obj|
|
|
102
|
+
# obj.bar is not called here
|
|
103
|
+
# foo is not called here
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
lambda {configured_eval_context.rspec_verify}.should raise_error(MockExpectationError)
|
|
107
|
+
lambda {yielded_arg.rspec_verify}.should raise_error(MockExpectationError)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
4
|
module Mocks
|
|
@@ -23,7 +23,14 @@ module Spec
|
|
|
23
23
|
it "should pass if any number of times method is not called" do
|
|
24
24
|
@mock.should_receive(:random_call).any_number_of_times
|
|
25
25
|
end
|
|
26
|
+
|
|
27
|
+
it "should return the mocked value when called after a similar stub" do
|
|
28
|
+
@mock.stub!(:message).and_return :stub_value
|
|
29
|
+
@mock.should_receive(:message).any_number_of_times.and_return(:mock_value)
|
|
30
|
+
@mock.message.should == :mock_value
|
|
31
|
+
@mock.message.should == :mock_value
|
|
32
|
+
end
|
|
26
33
|
end
|
|
27
34
|
|
|
28
35
|
end
|
|
29
|
-
end
|
|
36
|
+
end
|
|
@@ -1,19 +1,23 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'spec_helper'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
module Spec
|
|
4
|
+
module Mocks
|
|
5
|
+
describe ArgumentExpectation do
|
|
6
|
+
it "should consider an object that responds to #matches? and #description to be a matcher" do
|
|
7
|
+
argument_expecatation = Spec::Mocks::ArgumentExpectation.new([])
|
|
8
|
+
obj = mock("matcher")
|
|
9
|
+
obj.should_receive(:respond_to?).with(:matches?).and_return(true)
|
|
10
|
+
obj.should_receive(:respond_to?).with(:description).and_return(true)
|
|
11
|
+
argument_expecatation.is_matcher?(obj).should be_true
|
|
12
|
+
end
|
|
11
13
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
it "should NOT consider an object that only responds to #matches? to be a matcher" do
|
|
15
|
+
argument_expecatation = Spec::Mocks::ArgumentExpectation.new([])
|
|
16
|
+
obj = mock("matcher")
|
|
17
|
+
obj.should_receive(:respond_to?).with(:matches?).and_return(true)
|
|
18
|
+
obj.should_receive(:respond_to?).with(:description).and_return(false)
|
|
19
|
+
argument_expecatation.is_matcher?(obj).should be_false
|
|
20
|
+
end
|
|
21
|
+
end
|
|
18
22
|
end
|
|
19
23
|
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Mocks
|
|
5
|
+
module ArgumentMatchers
|
|
6
|
+
describe AnyArgsMatcher do
|
|
7
|
+
it "represents itself nicely for failure messages" do
|
|
8
|
+
AnyArgsMatcher.new.description.should == "any args"
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
describe AnyArgMatcher do
|
|
13
|
+
it "represents itself nicely for failure messages" do
|
|
14
|
+
AnyArgMatcher.new(nil).description.should == "anything"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
4
|
module Mocks
|
|
5
|
-
describe "
|
|
5
|
+
describe "at_most" do
|
|
6
6
|
before(:each) do
|
|
7
7
|
@mock = Mock.new("test mock")
|
|
8
8
|
end
|
|
@@ -90,4 +90,4 @@ module Spec
|
|
|
90
90
|
end
|
|
91
91
|
end
|
|
92
92
|
end
|
|
93
|
-
end
|
|
93
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
describe "Mock" do
|
|
2
|
+
before do
|
|
3
|
+
@mock = mock("test mock")
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
specify "when one example has an expectation (non-mock) inside the block passed to the mock" do
|
|
7
|
+
@mock.should_receive(:msg) do |b|
|
|
8
|
+
b.should be_true #this call exposes the problem
|
|
9
|
+
end
|
|
10
|
+
begin
|
|
11
|
+
@mock.msg(false)
|
|
12
|
+
rescue Exception
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
specify "then the next example should behave as expected instead of saying" do
|
|
17
|
+
@mock.should_receive(:foobar)
|
|
18
|
+
@mock.foobar
|
|
19
|
+
@mock.rspec_verify
|
|
20
|
+
begin
|
|
21
|
+
@mock.foobar
|
|
22
|
+
rescue Exception => e
|
|
23
|
+
e.message.should == "Mock \"test mock\" received unexpected message :foobar with (no args)"
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
class LiarLiarPantsOnFire
|
|
4
|
+
def respond_to?(sym, incl_private=false)
|
|
5
|
+
true
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def self.respond_to?(sym, incl_private=false)
|
|
9
|
+
true
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe 'should_receive' do
|
|
14
|
+
before(:each) do
|
|
15
|
+
@liar = LiarLiarPantsOnFire.new
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should work when object lies about responding to a method" do
|
|
19
|
+
@liar.should_receive(:something)
|
|
20
|
+
@liar.something
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it 'should work when class lies about responding to a method' do
|
|
24
|
+
LiarLiarPantsOnFire.should_receive(:something)
|
|
25
|
+
LiarLiarPantsOnFire.something
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it 'should cleanup after itself' do
|
|
29
|
+
(class << LiarLiarPantsOnFire; self; end).instance_methods.should_not include("something")
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Mocks
|
|
5
|
+
describe "mock failure" do
|
|
6
|
+
|
|
7
|
+
it "should tell you when it receives the right message with the wrong args" do
|
|
8
|
+
m = mock("foo")
|
|
9
|
+
m.should_receive(:bar).with("message")
|
|
10
|
+
lambda {
|
|
11
|
+
m.bar("different message")
|
|
12
|
+
}.should raise_error(Spec::Mocks::MockExpectationError, %Q{Mock "foo" received :bar with unexpected arguments\n expected: ("message")\n got: ("different message")})
|
|
13
|
+
m.bar("message") # allows the spec to pass
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should tell you when it receives the right message with the wrong args if you stub the method" do
|
|
17
|
+
pending("fix bug 15719")
|
|
18
|
+
# NOTE - for whatever reason, if you use a the block style of pending here,
|
|
19
|
+
# rcov gets unhappy. Don't know why yet.
|
|
20
|
+
m = mock("foo")
|
|
21
|
+
m.stub!(:bar)
|
|
22
|
+
m.should_receive(:bar).with("message")
|
|
23
|
+
lambda {
|
|
24
|
+
m.bar("different message")
|
|
25
|
+
}.should raise_error(Spec::Mocks::MockExpectationError, %Q{Mock "foo" received :bar with unexpected arguments\n expected: ("message")\n got: ("different message")})
|
|
26
|
+
m.bar("message") # allows the spec to pass
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module BugReport496
|
|
4
|
+
class BaseClass
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
class SubClass < BaseClass
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe "a message expectation on a base class object" do
|
|
11
|
+
it "should correctly pick up message sent to it subclass" do
|
|
12
|
+
BaseClass.should_receive(:new).once
|
|
13
|
+
SubClass.new
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module BugReport600
|
|
4
|
+
class ExampleClass
|
|
5
|
+
def self.method_that_uses_define_method
|
|
6
|
+
define_method "defined_method" do |attributes|
|
|
7
|
+
load_address(address, attributes)
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
describe "stubbing a class method" do
|
|
13
|
+
it "should work" do
|
|
14
|
+
ExampleClass.should_receive(:define_method).with("defined_method")
|
|
15
|
+
ExampleClass.method_that_uses_define_method
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should restore the original method" do
|
|
19
|
+
ExampleClass.method_that_uses_define_method
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe "An object where respond_to? is true and does not have method" do
|
|
4
4
|
# When should_receive(:sym) is sent to any object, the Proxy sends
|
|
@@ -12,7 +12,7 @@ describe "An object where respond_to? is true and does not have method" do
|
|
|
12
12
|
# The fix was to keep track of whether :respond_to? had been proxied and, if
|
|
13
13
|
# so, call the munged copy of :respond_to? on the object.
|
|
14
14
|
|
|
15
|
-
it "should not raise an exception" do
|
|
15
|
+
it "should not raise an exception for Object" do
|
|
16
16
|
obj = Object.new
|
|
17
17
|
obj.should_receive(:respond_to?).with(:foobar).and_return(true)
|
|
18
18
|
obj.should_receive(:foobar).and_return(:baz)
|
|
@@ -20,7 +20,7 @@ describe "An object where respond_to? is true and does not have method" do
|
|
|
20
20
|
obj.foobar.should == :baz
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
-
it "should not raise an exception" do
|
|
23
|
+
it "should not raise an exception for mock" do
|
|
24
24
|
obj = mock("obj")
|
|
25
25
|
obj.should_receive(:respond_to?).with(:foobar).and_return(true)
|
|
26
26
|
obj.should_receive(:foobar).and_return(:baz)
|
|
@@ -28,4 +28,4 @@ describe "An object where respond_to? is true and does not have method" do
|
|
|
28
28
|
obj.foobar.should == :baz
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Mocks
|
|
5
|
+
describe 'Calling a method that catches StandardError' do
|
|
6
|
+
class Foo
|
|
7
|
+
def self.foo
|
|
8
|
+
bar
|
|
9
|
+
rescue StandardError
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it 'still reports mock failures' do
|
|
14
|
+
Foo.should_not_receive :bar
|
|
15
|
+
lambda do
|
|
16
|
+
Foo.foo
|
|
17
|
+
end.should raise_error(MockExpectationError)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "double" do
|
|
4
|
+
it "is an alias for stub and mock" do
|
|
5
|
+
double().should be_a(Spec::Mocks::Mock)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it "uses 'Double' in failure messages" do
|
|
9
|
+
double = double('name')
|
|
10
|
+
expect {double.foo}.to raise_error(/Double "name" received/)
|
|
11
|
+
end
|
|
12
|
+
end
|