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,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
4
|
module Mocks
|
|
@@ -20,7 +20,7 @@ module Spec
|
|
|
20
20
|
third = Object.new
|
|
21
21
|
@mock.message.should == @return_values[0]
|
|
22
22
|
@mock.message.should == @return_values[1]
|
|
23
|
-
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock
|
|
23
|
+
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock \"mock\" expected :message with (any args) 3 times, but received it twice")
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
it "should complain when there are too many calls" do
|
|
@@ -29,7 +29,7 @@ module Spec
|
|
|
29
29
|
@mock.message.should == @return_values[1]
|
|
30
30
|
@mock.message.should == @return_values[2]
|
|
31
31
|
@mock.message.should == @return_values[2]
|
|
32
|
-
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock
|
|
32
|
+
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock \"mock\" expected :message with (any args) 3 times, but received it 4 times")
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
|
|
@@ -51,7 +51,7 @@ module Spec
|
|
|
51
51
|
third = Object.new
|
|
52
52
|
@mock.message.should == @return_values[0]
|
|
53
53
|
@mock.message.should == @return_values[1]
|
|
54
|
-
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock
|
|
54
|
+
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock \"mock\" expected :message with (any args) 3 times, but received it twice")
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
it "should complain when there are too many calls" do
|
|
@@ -60,14 +60,14 @@ module Spec
|
|
|
60
60
|
@mock.message.should == @return_values[1]
|
|
61
61
|
@mock.message.should == @return_values[2]
|
|
62
62
|
@mock.message.should == @return_values[2]
|
|
63
|
-
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock
|
|
63
|
+
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock \"mock\" expected :message with (any args) 3 times, but received it 4 times")
|
|
64
64
|
end
|
|
65
65
|
end
|
|
66
66
|
|
|
67
67
|
describe "a Mock expectation with multiple return values specifying at_least less than the number of values" do
|
|
68
68
|
before(:each) do
|
|
69
69
|
@mock = Mock.new("mock")
|
|
70
|
-
@mock.should_receive(:message).at_least(:twice).with(
|
|
70
|
+
@mock.should_receive(:message).at_least(:twice).with(no_args).and_return(11, 22)
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
it "should use last return value for subsequent calls" do
|
|
@@ -79,7 +79,7 @@ module Spec
|
|
|
79
79
|
|
|
80
80
|
it "should fail when called less than the specified number" do
|
|
81
81
|
@mock.message.should equal(11)
|
|
82
|
-
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock
|
|
82
|
+
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock \"mock\" expected :message with (no args) twice, but received it once")
|
|
83
83
|
end
|
|
84
84
|
end
|
|
85
85
|
describe "a Mock expectation with multiple return values with a specified count larger than the number of values" do
|
|
@@ -97,7 +97,7 @@ module Spec
|
|
|
97
97
|
|
|
98
98
|
it "should fail when called less than the specified number" do
|
|
99
99
|
@mock.message.should equal(11)
|
|
100
|
-
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock
|
|
100
|
+
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock \"mock\" expected :message with (any args) 3 times, but received it once")
|
|
101
101
|
end
|
|
102
102
|
|
|
103
103
|
it "should fail when called greater than the specified number" do
|
|
@@ -105,7 +105,7 @@ module Spec
|
|
|
105
105
|
@mock.message.should equal(22)
|
|
106
106
|
@mock.message.should equal(22)
|
|
107
107
|
@mock.message.should equal(22)
|
|
108
|
-
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock
|
|
108
|
+
lambda { @mock.rspec_verify }.should raise_error(MockExpectationError, "Mock \"mock\" expected :message with (any args) 3 times, but received it 4 times")
|
|
109
109
|
end
|
|
110
110
|
end
|
|
111
111
|
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Mocks
|
|
5
|
+
|
|
6
|
+
describe "an expectation set on nil" do
|
|
7
|
+
|
|
8
|
+
it "should issue a warning with file and line number information" do
|
|
9
|
+
expected_warning = %r%An expectation of :foo was set on nil. Called from #{__FILE__}:#{__LINE__+3}(:in `block \(2 levels\) in <module:Mocks>')?. Use allow_message_expectations_on_nil to disable warnings.%
|
|
10
|
+
Kernel.should_receive(:warn).with(expected_warning)
|
|
11
|
+
|
|
12
|
+
nil.should_receive(:foo)
|
|
13
|
+
nil.foo
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should issue a warning when the expectation is negative" do
|
|
17
|
+
Kernel.should_receive(:warn)
|
|
18
|
+
|
|
19
|
+
nil.should_not_receive(:foo)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "should not issue a warning when expectations are set to be allowed" do
|
|
23
|
+
allow_message_expectations_on_nil
|
|
24
|
+
Kernel.should_not_receive(:warn)
|
|
25
|
+
|
|
26
|
+
nil.should_receive(:foo)
|
|
27
|
+
nil.should_not_receive(:bar)
|
|
28
|
+
nil.foo
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe "#allow_message_expectations_on_nil" do
|
|
34
|
+
|
|
35
|
+
it "should not effect subsequent examples" do
|
|
36
|
+
example_group = Class.new(::Spec::Example::ExampleGroupDouble)
|
|
37
|
+
example_group.it("when called in one example that doesn't end up setting an expectation on nil") do
|
|
38
|
+
allow_message_expectations_on_nil
|
|
39
|
+
end
|
|
40
|
+
example_group.it("should not effect the next exapmle ran") do
|
|
41
|
+
Kernel.should_receive(:warn)
|
|
42
|
+
nil.should_receive(:foo)
|
|
43
|
+
nil.foo
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
example_group.run(Spec::Runner.options).should be_true
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
4
|
module Mocks
|
|
@@ -36,5 +36,19 @@ module Spec
|
|
|
36
36
|
@mock.message(:unexpected_arg)
|
|
37
37
|
end
|
|
38
38
|
end
|
|
39
|
+
|
|
40
|
+
describe "#null_object?" do
|
|
41
|
+
it "should default to false" do
|
|
42
|
+
obj = mock('anything')
|
|
43
|
+
obj.should_not be_null_object
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
describe "#as_null_object" do
|
|
48
|
+
it "should set the object to null_object" do
|
|
49
|
+
obj = mock('anything').as_null_object
|
|
50
|
+
obj.should be_null_object
|
|
51
|
+
end
|
|
52
|
+
end
|
|
39
53
|
end
|
|
40
54
|
end
|
|
@@ -1,32 +1,34 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
4
|
module Mocks
|
|
5
5
|
describe "calling :should_receive with an options hash" do
|
|
6
6
|
it "should report the file and line submitted with :expected_from" do
|
|
7
|
-
|
|
7
|
+
begin
|
|
8
8
|
mock = Spec::Mocks::Mock.new("a mock")
|
|
9
9
|
mock.should_receive(:message, :expected_from => "/path/to/blah.ext:37")
|
|
10
10
|
mock.rspec_verify
|
|
11
|
+
rescue Exception => e
|
|
12
|
+
ensure
|
|
13
|
+
e.backtrace.to_s.should =~ /\/path\/to\/blah.ext:37/m
|
|
11
14
|
end
|
|
12
|
-
reporter = mock("reporter", :null_object => true)
|
|
13
|
-
reporter.should_receive(:example_finished) do |spec, error|
|
|
14
|
-
error.backtrace.detect {|line| line =~ /\/path\/to\/blah.ext:37/}.should_not be_nil
|
|
15
|
-
end
|
|
16
|
-
spec.run(reporter, nil, nil, nil, Object.new)
|
|
17
15
|
end
|
|
18
16
|
|
|
19
17
|
it "should use the message supplied with :message" do
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
18
|
+
lambda {
|
|
19
|
+
m = Spec::Mocks::Mock.new("a mock")
|
|
20
|
+
m.should_receive(:message, :message => "recebi nada")
|
|
21
|
+
m.rspec_verify
|
|
22
|
+
}.should raise_error("recebi nada")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "should use the message supplied with :message after a similar stub" do
|
|
26
|
+
lambda {
|
|
27
|
+
m = Spec::Mocks::Mock.new("a mock")
|
|
28
|
+
m.stub!(:message)
|
|
29
|
+
m.should_receive(:message, :message => "from mock")
|
|
30
|
+
m.rspec_verify
|
|
31
|
+
}.should raise_error("from mock")
|
|
30
32
|
end
|
|
31
33
|
end
|
|
32
34
|
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
4
|
module Mocks
|
|
@@ -6,47 +6,159 @@ module Spec
|
|
|
6
6
|
before(:each) do
|
|
7
7
|
@object = Object.new
|
|
8
8
|
end
|
|
9
|
-
|
|
9
|
+
|
|
10
|
+
it "should name the class in the failure message" do
|
|
11
|
+
@object.should_receive(:foo)
|
|
12
|
+
lambda do
|
|
13
|
+
@object.rspec_verify
|
|
14
|
+
end.should raise_error(Spec::Mocks::MockExpectationError, /<Object:.*> expected/)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should name the class in the failure message when expectation is on class" do
|
|
18
|
+
Object.should_receive(:foo)
|
|
19
|
+
lambda do
|
|
20
|
+
Object.rspec_verify
|
|
21
|
+
end.should raise_error(Spec::Mocks::MockExpectationError, /<Object \(class\)>/)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should not conflict with @options in the object" do
|
|
25
|
+
@object.instance_eval { @options = Object.new }
|
|
26
|
+
@object.should_receive(:blah)
|
|
27
|
+
@object.blah
|
|
28
|
+
end
|
|
29
|
+
|
|
10
30
|
it "should_not_receive should mock out the method" do
|
|
11
31
|
@object.should_not_receive(:fuhbar)
|
|
12
|
-
@object.fuhbar
|
|
13
32
|
lambda do
|
|
14
|
-
@object.
|
|
15
|
-
end.should raise_error(
|
|
33
|
+
@object.fuhbar
|
|
34
|
+
end.should raise_error(MockExpectationError, /<Object:.*> expected :fuhbar with \(no args\) 0 times/)
|
|
16
35
|
end
|
|
17
|
-
|
|
36
|
+
|
|
18
37
|
it "should_not_receive should return a negative message expectation" do
|
|
19
38
|
@object.should_not_receive(:foobar).should be_kind_of(NegativeMessageExpectation)
|
|
20
39
|
end
|
|
21
|
-
|
|
40
|
+
|
|
22
41
|
it "should_receive should mock out the method" do
|
|
23
42
|
@object.should_receive(:foobar).with(:test_param).and_return(1)
|
|
24
43
|
@object.foobar(:test_param).should equal(1)
|
|
25
44
|
end
|
|
26
|
-
|
|
45
|
+
|
|
27
46
|
it "should_receive should handle a hash" do
|
|
28
47
|
@object.should_receive(:foobar).with(:key => "value").and_return(1)
|
|
29
48
|
@object.foobar(:key => "value").should equal(1)
|
|
30
49
|
end
|
|
31
|
-
|
|
50
|
+
|
|
32
51
|
it "should_receive should handle an inner hash" do
|
|
33
52
|
hash = {:a => {:key => "value"}}
|
|
34
53
|
@object.should_receive(:foobar).with(:key => "value").and_return(1)
|
|
35
54
|
@object.foobar(hash[:a]).should equal(1)
|
|
36
55
|
end
|
|
37
|
-
|
|
56
|
+
|
|
38
57
|
it "should_receive should return a message expectation" do
|
|
39
58
|
@object.should_receive(:foobar).should be_kind_of(MessageExpectation)
|
|
40
59
|
@object.foobar
|
|
41
60
|
end
|
|
42
|
-
|
|
61
|
+
|
|
43
62
|
it "should_receive should verify method was called" do
|
|
44
63
|
@object.should_receive(:foobar).with(:test_param).and_return(1)
|
|
45
64
|
lambda do
|
|
46
65
|
@object.rspec_verify
|
|
47
66
|
end.should raise_error(Spec::Mocks::MockExpectationError)
|
|
48
67
|
end
|
|
68
|
+
|
|
69
|
+
it "should_receive should also take a String argument" do
|
|
70
|
+
@object.should_receive('foobar')
|
|
71
|
+
@object.foobar
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it "should_not_receive should also take a String argument" do
|
|
75
|
+
@object.should_not_receive('foobar')
|
|
76
|
+
lambda do
|
|
77
|
+
@object.foobar
|
|
78
|
+
end.should raise_error(Spec::Mocks::MockExpectationError)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it "should use report nil in the error message" do
|
|
82
|
+
allow_message_expectations_on_nil
|
|
83
|
+
|
|
84
|
+
@this_will_resolve_to_nil.should_receive(:foobar)
|
|
85
|
+
lambda do
|
|
86
|
+
@this_will_resolve_to_nil.rspec_verify
|
|
87
|
+
end.should raise_error(Spec::Mocks::MockExpectationError, /nil expected :foobar with/)
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
describe "Partially mocking an object that defines ==, after another mock has been defined" do
|
|
92
|
+
before(:each) do
|
|
93
|
+
stub("existing mock", :foo => :foo)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
class PartiallyMockedEquals
|
|
97
|
+
attr_reader :val
|
|
98
|
+
def initialize(val)
|
|
99
|
+
@val = val
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def ==(other)
|
|
103
|
+
@val == other.val
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it "should not raise an error when stubbing the object" do
|
|
108
|
+
o = PartiallyMockedEquals.new :foo
|
|
109
|
+
lambda { o.stub!(:bar) }.should_not raise_error(NoMethodError)
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
describe "Method visibility when using partial mocks" do
|
|
114
|
+
class MockableClass
|
|
115
|
+
def public_method
|
|
116
|
+
private_method
|
|
117
|
+
protected_method
|
|
118
|
+
end
|
|
119
|
+
protected
|
|
120
|
+
def protected_method; end
|
|
121
|
+
private
|
|
122
|
+
def private_method; end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
before(:each) do
|
|
126
|
+
@object = MockableClass.new
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
it 'should keep public methods public' do
|
|
130
|
+
@object.should_receive(:public_method)
|
|
131
|
+
with_ruby('1.9') do
|
|
132
|
+
@object.public_methods.should include(:public_method)
|
|
133
|
+
end
|
|
134
|
+
with_ruby('1.8') do
|
|
135
|
+
@object.public_methods.should include('public_method')
|
|
136
|
+
end
|
|
137
|
+
@object.public_method
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
it 'should keep private methods private' do
|
|
141
|
+
@object.should_receive(:private_method)
|
|
142
|
+
with_ruby('1.9') do
|
|
143
|
+
@object.private_methods.should include(:private_method)
|
|
144
|
+
end
|
|
145
|
+
with_ruby('1.8') do
|
|
146
|
+
@object.private_methods.should include('private_method')
|
|
147
|
+
end
|
|
148
|
+
@object.public_method
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
it 'should keep protected methods protected' do
|
|
152
|
+
@object.should_receive(:protected_method)
|
|
153
|
+
with_ruby('1.9') do
|
|
154
|
+
@object.protected_methods.should include(:protected_method)
|
|
155
|
+
end
|
|
156
|
+
with_ruby('1.8') do
|
|
157
|
+
@object.protected_methods.should include('protected_method')
|
|
158
|
+
end
|
|
159
|
+
@object.public_method
|
|
160
|
+
end
|
|
49
161
|
|
|
50
162
|
end
|
|
51
163
|
end
|
|
52
|
-
end
|
|
164
|
+
end
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Mocks
|
|
5
|
+
describe "mock argument matchers", :shared => true do
|
|
6
|
+
before(:each) do
|
|
7
|
+
@mock = Mock.new("test mock")
|
|
8
|
+
Kernel.stub!(:warn)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
after(:each) do
|
|
12
|
+
@mock.rspec_verify
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe Methods, "handling argument matchers" do
|
|
17
|
+
it_should_behave_like "mock argument matchers"
|
|
18
|
+
|
|
19
|
+
it "should accept true as boolean()" do
|
|
20
|
+
@mock.should_receive(:random_call).with(boolean())
|
|
21
|
+
@mock.random_call(true)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should accept false as boolean()" do
|
|
25
|
+
@mock.should_receive(:random_call).with(boolean())
|
|
26
|
+
@mock.random_call(false)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "should accept fixnum as kind_of(Numeric)" do
|
|
30
|
+
@mock.should_receive(:random_call).with(kind_of(Numeric))
|
|
31
|
+
@mock.random_call(1)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "should accept float as an_instance_of(Numeric)" do
|
|
35
|
+
@mock.should_receive(:random_call).with(kind_of(Numeric))
|
|
36
|
+
@mock.random_call(1.5)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "accepts fixnum as instance_of(Fixnum)" do
|
|
40
|
+
@mock.should_receive(:random_call).with(instance_of(Fixnum))
|
|
41
|
+
@mock.random_call(1)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "should NOT accept fixnum as instance_of(Numeric)" do
|
|
45
|
+
@mock.should_not_receive(:random_call).with(instance_of(Numeric))
|
|
46
|
+
@mock.random_call(1)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "should NOT accept float as instance_of(Numeric)" do
|
|
50
|
+
@mock.should_not_receive(:random_call).with(instance_of(Numeric))
|
|
51
|
+
@mock.random_call(1.5)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "should accept string as anything()" do
|
|
55
|
+
@mock.should_receive(:random_call).with("a", anything(), "c")
|
|
56
|
+
@mock.random_call("a", "whatever", "c")
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it "should match duck type with one method" do
|
|
60
|
+
@mock.should_receive(:random_call).with(duck_type(:length))
|
|
61
|
+
@mock.random_call([])
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "should match duck type with two methods" do
|
|
65
|
+
@mock.should_receive(:random_call).with(duck_type(:abs, :div))
|
|
66
|
+
@mock.random_call(1)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "should match no args against any_args()" do
|
|
70
|
+
@mock.should_receive(:random_call).with(any_args)
|
|
71
|
+
@mock.random_call()
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it "should match one arg against any_args()" do
|
|
75
|
+
@mock.should_receive(:random_call).with(any_args)
|
|
76
|
+
@mock.random_call("a string")
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it "should match no args against no_args()" do
|
|
80
|
+
@mock.should_receive(:random_call).with(no_args)
|
|
81
|
+
@mock.random_call()
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "should match hash with hash_including same hash" do
|
|
85
|
+
@mock.should_receive(:random_call).with(hash_including(:a => 1))
|
|
86
|
+
@mock.random_call(:a => 1)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
describe Methods, "handling block matchers" do
|
|
92
|
+
it_should_behave_like "mock argument matchers"
|
|
93
|
+
|
|
94
|
+
it "should match arguments against RSpec expectations" do
|
|
95
|
+
@mock.should_receive(:random_call).with {|arg1, arg2, arr, *rest|
|
|
96
|
+
arg1.should == 5
|
|
97
|
+
arg2.should have_at_least(3).characters
|
|
98
|
+
arg2.should have_at_most(10).characters
|
|
99
|
+
arr.map {|i| i * 2}.should == [2,4,6]
|
|
100
|
+
rest.should == [:fee, "fi", 4]
|
|
101
|
+
}
|
|
102
|
+
@mock.random_call 5, "hello", [1,2,3], :fee, "fi", 4
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
describe Methods, "handling non-matcher arguments" do
|
|
107
|
+
|
|
108
|
+
before(:each) do
|
|
109
|
+
@mock = Mock.new("test mock")
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it "should match non special symbol (can be removed when deprecated symbols are removed)" do
|
|
113
|
+
@mock.should_receive(:random_call).with(:some_symbol)
|
|
114
|
+
@mock.random_call(:some_symbol)
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
it "should match string against regexp" do
|
|
118
|
+
@mock.should_receive(:random_call).with(/bcd/)
|
|
119
|
+
@mock.random_call("abcde")
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
it "should match regexp against regexp" do
|
|
123
|
+
@mock.should_receive(:random_call).with(/bcd/)
|
|
124
|
+
@mock.random_call(/bcd/)
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
it "should match against a hash submitted and received by value" do
|
|
128
|
+
@mock.should_receive(:random_call).with(:a => "a", :b => "b")
|
|
129
|
+
@mock.random_call(:a => "a", :b => "b")
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
it "should match against a hash submitted by reference and received by value" do
|
|
133
|
+
opts = {:a => "a", :b => "b"}
|
|
134
|
+
@mock.should_receive(:random_call).with(opts)
|
|
135
|
+
@mock.random_call(:a => "a", :b => "b")
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
it "should match against a hash submitted by value and received by reference" do
|
|
139
|
+
opts = {:a => "a", :b => "b"}
|
|
140
|
+
@mock.should_receive(:random_call).with(:a => "a", :b => "b")
|
|
141
|
+
@mock.random_call(opts)
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Mocks
|
|
5
|
+
describe "A chained method stub" do
|
|
6
|
+
before(:each) do
|
|
7
|
+
@subject = Object.new
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "returns expected value from chaining only one method call" do
|
|
11
|
+
@subject.stub_chain(:msg1).and_return(:return_value)
|
|
12
|
+
@subject.msg1.should equal(:return_value)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "returns expected value from chaining two method calls" do
|
|
16
|
+
@subject.stub_chain(:msg1, :msg2).and_return(:return_value)
|
|
17
|
+
@subject.msg1.msg2.should equal(:return_value)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "returns expected value from chaining four method calls" do
|
|
21
|
+
@subject.stub_chain(:msg1, :msg2, :msg3, :msg4).and_return(:return_value)
|
|
22
|
+
@subject.msg1.msg2.msg3.msg4.should equal(:return_value)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "returns expected value from two chains with shared messages at the end" do
|
|
26
|
+
@subject.stub_chain(:msg1, :msg2, :msg3, :msg4).and_return(:first)
|
|
27
|
+
@subject.stub_chain(:msg5, :msg2, :msg3, :msg4).and_return(:second)
|
|
28
|
+
|
|
29
|
+
@subject.msg1.msg2.msg3.msg4.should equal(:first)
|
|
30
|
+
@subject.msg5.msg2.msg3.msg4.should equal(:second)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "returns expected value from two chains with shared messages at the beginning" do
|
|
34
|
+
@subject.stub_chain(:msg1, :msg2, :msg3, :msg4).and_return(:first)
|
|
35
|
+
@subject.stub_chain(:msg1, :msg2, :msg3, :msg5).and_return(:second)
|
|
36
|
+
|
|
37
|
+
@subject.msg1.msg2.msg3.msg4.should equal(:first)
|
|
38
|
+
@subject.msg1.msg2.msg3.msg5.should equal(:second)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Mocks
|
|
5
|
+
describe "stub implementation" do
|
|
6
|
+
context "with no args" do
|
|
7
|
+
it "execs the block when called" do
|
|
8
|
+
obj = stub()
|
|
9
|
+
obj.stub(:foo) { :bar }
|
|
10
|
+
obj.foo.should == :bar
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
context "with one arg" do
|
|
15
|
+
it "execs the block with that arg when called" do
|
|
16
|
+
obj = stub()
|
|
17
|
+
obj.stub(:foo) {|given| given}
|
|
18
|
+
obj.foo(:bar).should == :bar
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
context "with variable args" do
|
|
23
|
+
it "execs the block when called" do
|
|
24
|
+
obj = stub()
|
|
25
|
+
obj.stub(:foo) {|*given| given.first}
|
|
26
|
+
obj.foo(:bar).should == :bar
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|