rspec 1.3.0 → 2.0.0
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 +1 -6
- data/.gitignore +7 -0
- data/Gemfile +6 -0
- data/License.txt +1 -1
- data/README.markdown +30 -0
- data/Rakefile +10 -143
- data/lib/rspec/version.rb +5 -0
- data/lib/rspec.rb +4 -0
- data/rspec.gemspec +29 -0
- metadata +69 -462
- data/History.rdoc +0 -1529
- data/Manifest.txt +0 -384
- data/README.rdoc +0 -54
- data/Ruby1.9.rdoc +0 -31
- data/TODO.txt +0 -17
- data/Upgrade.rdoc +0 -260
- data/bin/autospec +0 -4
- data/bin/spec +0 -5
- data/cucumber.yml +0 -5
- data/examples/failing/README.txt +0 -11
- data/examples/failing/diffing_spec.rb +0 -36
- data/examples/failing/failing_implicit_docstrings_example.rb +0 -17
- data/examples/failing/failure_in_after.rb +0 -10
- data/examples/failing/failure_in_before.rb +0 -10
- data/examples/failing/mocking_example.rb +0 -38
- data/examples/failing/mocking_with_flexmock.rb +0 -26
- data/examples/failing/mocking_with_mocha.rb +0 -25
- data/examples/failing/mocking_with_rr.rb +0 -27
- data/examples/failing/partial_mock_example.rb +0 -18
- data/examples/failing/pending_example.rb +0 -7
- data/examples/failing/predicate_example.rb +0 -32
- data/examples/failing/raising_example.rb +0 -47
- data/examples/failing/syntax_error_example.rb +0 -7
- data/examples/failing/team_spec.rb +0 -41
- data/examples/failing/timeout_behaviour.rb +0 -5
- data/examples/passing/custom_formatter.rb +0 -11
- data/examples/passing/custom_matchers.rb +0 -54
- data/examples/passing/dynamic_spec.rb +0 -7
- data/examples/passing/file_accessor.rb +0 -18
- data/examples/passing/file_accessor_spec.rb +0 -37
- data/examples/passing/filtered_formatter.rb +0 -17
- data/examples/passing/filtered_formatter_example.rb +0 -31
- data/examples/passing/greeter_spec.rb +0 -30
- data/examples/passing/helper_method_example.rb +0 -12
- data/examples/passing/implicit_docstrings_example.rb +0 -16
- data/examples/passing/io_processor.rb +0 -8
- data/examples/passing/io_processor_spec.rb +0 -20
- data/examples/passing/mocking_example.rb +0 -25
- data/examples/passing/multi_threaded_example_group_runner.rb +0 -26
- data/examples/passing/nested_classes_example.rb +0 -35
- data/examples/passing/options_example.rb +0 -29
- data/examples/passing/options_formatter.rb +0 -20
- data/examples/passing/partial_mock_example.rb +0 -27
- data/examples/passing/pending_example.rb +0 -18
- data/examples/passing/predicate_example.rb +0 -25
- data/examples/passing/shared_example_group_example.rb +0 -79
- data/examples/passing/shared_stack_examples.rb +0 -36
- data/examples/passing/simple_matcher_example.rb +0 -29
- data/examples/passing/stack.rb +0 -36
- data/examples/passing/stack_spec.rb +0 -63
- data/examples/passing/stack_spec_with_nested_example_groups.rb +0 -66
- data/examples/passing/stubbing_example.rb +0 -67
- data/examples/passing/yielding_example.rb +0 -31
- data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +0 -85
- data/features/before_and_after_blocks/before_and_after_blocks.feature +0 -167
- data/features/command_line/line_number_option.feature +0 -56
- data/features/command_line/line_number_option_with_example_with_no_name.feature +0 -22
- data/features/example_groups/define_example_attribute.feature +0 -41
- data/features/example_groups/example_group_with_should_methods.feature +0 -29
- data/features/example_groups/implicit_docstrings.feature +0 -59
- data/features/example_groups/nested_groups.feature +0 -32
- data/features/expectations/customized_message.feature +0 -54
- data/features/expectations/expect_change.feature +0 -65
- data/features/expectations/expect_error.feature +0 -44
- data/features/extensions/custom_example_group.feature +0 -19
- data/features/formatters/custom_formatter.feature +0 -30
- data/features/formatters/nested_formatter.feature +0 -32
- data/features/interop/cucumber_stubs_dont_leak.feature +0 -11
- data/features/interop/examples_and_tests_together.feature +0 -84
- data/features/interop/rspec_output.feature +0 -25
- data/features/interop/test_but_not_test_unit.feature +0 -26
- data/features/interop/test_case_with_should_methods.feature +0 -46
- data/features/load_paths/add_lib_to_load_path.feature +0 -20
- data/features/load_paths/add_spec_to_load_path.feature +0 -20
- data/features/matchers/define_diffable_matcher.feature +0 -26
- data/features/matchers/define_matcher.feature +0 -179
- data/features/matchers/define_matcher_outside_rspec.feature +0 -38
- data/features/matchers/define_matcher_with_fluent_interface.feature +0 -48
- data/features/matchers/define_wrapped_matcher.feature +0 -56
- data/features/matchers/match_unless_raises.feature +0 -60
- data/features/matchers/match_unless_raises_unexpected_error.feature +0 -39
- data/features/mock_framework_integration/use_flexmock.feature +0 -27
- data/features/mock_framework_integration/use_mocha.feature +0 -27
- data/features/mock_framework_integration/use_rr.feature +0 -27
- data/features/mocks/block_local_expectations.feature +0 -62
- data/features/mocks/mix_stubs_and_mocks.feature +0 -22
- data/features/mocks/stub_implementation.feature +0 -26
- data/features/pending/pending_examples.feature +0 -81
- data/features/runner/specify_line_number.feature +0 -32
- data/features/spec_helper/spec_helper.feature +0 -25
- data/features/step_definitions/running_rspec_steps.rb +0 -52
- data/features/step_definitions/stubbing_steps.rb +0 -16
- data/features/subject/explicit_subject.feature +0 -31
- data/features/subject/implicit_subject.feature +0 -43
- data/features/support/env.rb +0 -83
- data/features/support/matchers/smart_match.rb +0 -31
- data/geminstaller.yml +0 -28
- data/init.rb +0 -9
- data/lib/autotest/discover.rb +0 -3
- data/lib/autotest/rspec.rb +0 -54
- data/lib/spec/adapters/mock_frameworks/flexmock.rb +0 -24
- data/lib/spec/adapters/mock_frameworks/mocha.rb +0 -25
- data/lib/spec/adapters/mock_frameworks/rr.rb +0 -22
- data/lib/spec/adapters/mock_frameworks/rspec.rb +0 -21
- data/lib/spec/autorun.rb +0 -3
- data/lib/spec/deprecation.rb +0 -40
- data/lib/spec/dsl/main.rb +0 -92
- data/lib/spec/dsl.rb +0 -1
- data/lib/spec/example/args_and_options.rb +0 -27
- data/lib/spec/example/before_and_after_hooks.rb +0 -93
- data/lib/spec/example/errors.rb +0 -25
- data/lib/spec/example/example_group.rb +0 -10
- data/lib/spec/example/example_group_factory.rb +0 -82
- data/lib/spec/example/example_group_hierarchy.rb +0 -53
- data/lib/spec/example/example_group_methods.rb +0 -282
- data/lib/spec/example/example_group_proxy.rb +0 -61
- data/lib/spec/example/example_matcher.rb +0 -43
- data/lib/spec/example/example_methods.rb +0 -152
- data/lib/spec/example/example_proxy.rb +0 -41
- data/lib/spec/example/module_reopening_fix.rb +0 -43
- data/lib/spec/example/pending.rb +0 -18
- data/lib/spec/example/predicate_matchers.rb +0 -46
- data/lib/spec/example/shared_example_group.rb +0 -59
- data/lib/spec/example/subject.rb +0 -108
- data/lib/spec/example.rb +0 -164
- data/lib/spec/expectations/errors.rb +0 -12
- data/lib/spec/expectations/extensions/kernel.rb +0 -52
- data/lib/spec/expectations/extensions.rb +0 -1
- data/lib/spec/expectations/fail_with.rb +0 -45
- data/lib/spec/expectations/handler.rb +0 -50
- data/lib/spec/expectations.rb +0 -35
- data/lib/spec/extensions/instance_exec.rb +0 -31
- data/lib/spec/interop/test/unit/autorunner.rb +0 -6
- data/lib/spec/interop/test/unit/testcase.rb +0 -56
- data/lib/spec/interop/test/unit/testresult.rb +0 -6
- data/lib/spec/interop/test/unit/testsuite_adapter.rb +0 -34
- data/lib/spec/interop/test/unit/ui/console/testrunner.rb +0 -61
- data/lib/spec/interop/test.rb +0 -44
- data/lib/spec/matchers/be.rb +0 -249
- data/lib/spec/matchers/be_close.rb +0 -32
- data/lib/spec/matchers/be_instance_of.rb +0 -26
- data/lib/spec/matchers/be_kind_of.rb +0 -26
- data/lib/spec/matchers/change.rb +0 -151
- data/lib/spec/matchers/compatibility.rb +0 -14
- data/lib/spec/matchers/dsl.rb +0 -20
- data/lib/spec/matchers/eql.rb +0 -42
- data/lib/spec/matchers/equal.rb +0 -53
- data/lib/spec/matchers/errors.rb +0 -5
- data/lib/spec/matchers/exist.rb +0 -16
- data/lib/spec/matchers/generated_descriptions.rb +0 -36
- data/lib/spec/matchers/has.rb +0 -35
- data/lib/spec/matchers/have.rb +0 -152
- data/lib/spec/matchers/include.rb +0 -44
- data/lib/spec/matchers/match.rb +0 -21
- data/lib/spec/matchers/match_array.rb +0 -71
- data/lib/spec/matchers/matcher.rb +0 -132
- data/lib/spec/matchers/method_missing.rb +0 -9
- data/lib/spec/matchers/operator_matcher.rb +0 -78
- data/lib/spec/matchers/pretty.rb +0 -37
- data/lib/spec/matchers/raise_exception.rb +0 -131
- data/lib/spec/matchers/respond_to.rb +0 -71
- data/lib/spec/matchers/satisfy.rb +0 -47
- data/lib/spec/matchers/simple_matcher.rb +0 -133
- data/lib/spec/matchers/throw_symbol.rb +0 -100
- data/lib/spec/matchers/wrap_expectation.rb +0 -55
- data/lib/spec/matchers.rb +0 -214
- data/lib/spec/mocks/argument_expectation.rb +0 -51
- data/lib/spec/mocks/argument_matchers.rb +0 -237
- data/lib/spec/mocks/error_generator.rb +0 -92
- data/lib/spec/mocks/errors.rb +0 -10
- data/lib/spec/mocks/example_methods.rb +0 -69
- data/lib/spec/mocks/extensions/object.rb +0 -3
- data/lib/spec/mocks/extensions.rb +0 -1
- data/lib/spec/mocks/framework.rb +0 -15
- data/lib/spec/mocks/message_expectation.rb +0 -344
- data/lib/spec/mocks/methods.rb +0 -94
- data/lib/spec/mocks/mock.rb +0 -71
- data/lib/spec/mocks/order_group.rb +0 -29
- data/lib/spec/mocks/proxy.rb +0 -266
- data/lib/spec/mocks/space.rb +0 -28
- data/lib/spec/mocks.rb +0 -200
- data/lib/spec/rake/spectask.rb +0 -230
- data/lib/spec/rake/verify_rcov.rb +0 -52
- data/lib/spec/ruby.rb +0 -9
- data/lib/spec/runner/backtrace_tweaker.rb +0 -77
- data/lib/spec/runner/class_and_arguments_parser.rb +0 -14
- data/lib/spec/runner/command_line.rb +0 -15
- data/lib/spec/runner/configuration.rb +0 -194
- data/lib/spec/runner/differs/default.rb +0 -93
- data/lib/spec/runner/differs/load-diff-lcs.rb +0 -12
- data/lib/spec/runner/drb_command_line.rb +0 -32
- data/lib/spec/runner/example_group_runner.rb +0 -58
- data/lib/spec/runner/extensions/kernel.rb +0 -9
- data/lib/spec/runner/formatter/base_formatter.rb +0 -139
- data/lib/spec/runner/formatter/base_text_formatter.rb +0 -142
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +0 -25
- data/lib/spec/runner/formatter/failing_examples_formatter.rb +0 -20
- data/lib/spec/runner/formatter/html_formatter.rb +0 -338
- data/lib/spec/runner/formatter/nested_text_formatter.rb +0 -50
- data/lib/spec/runner/formatter/no_op_method_missing.rb +0 -21
- data/lib/spec/runner/formatter/profile_formatter.rb +0 -47
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +0 -33
- data/lib/spec/runner/formatter/silent_formatter.rb +0 -10
- data/lib/spec/runner/formatter/snippet_extractor.rb +0 -52
- data/lib/spec/runner/formatter/specdoc_formatter.rb +0 -33
- data/lib/spec/runner/formatter/text_mate_formatter.rb +0 -16
- data/lib/spec/runner/heckle_runner.rb +0 -72
- data/lib/spec/runner/heckle_runner_unsupported.rb +0 -10
- data/lib/spec/runner/line_number_query.rb +0 -78
- data/lib/spec/runner/option_parser.rb +0 -225
- data/lib/spec/runner/options.rb +0 -405
- data/lib/spec/runner/reporter.rb +0 -171
- data/lib/spec/runner.rb +0 -66
- data/lib/spec/stubs/cucumber.rb +0 -5
- data/lib/spec/test/unit.rb +0 -10
- data/lib/spec/version.rb +0 -14
- data/lib/spec.rb +0 -8
- data/resources/helpers/cmdline.rb +0 -8
- data/resources/rake/examples.rake +0 -7
- data/resources/rake/examples_with_rcov.rake +0 -9
- data/resources/rake/failing_examples_with_html.rake +0 -9
- data/resources/rake/verify_rcov.rake +0 -7
- data/spec/README.jruby +0 -15
- data/spec/autotest/autotest_helper.rb +0 -8
- data/spec/autotest/autotest_matchers.rb +0 -38
- data/spec/autotest/discover_spec.rb +0 -8
- data/spec/autotest/failed_results_re_spec.rb +0 -31
- data/spec/autotest/rspec_spec.rb +0 -126
- data/spec/ruby_forker.rb +0 -13
- data/spec/spec/dsl/main_spec.rb +0 -95
- data/spec/spec/example/example_group_class_definition_spec.rb +0 -51
- data/spec/spec/example/example_group_factory_spec.rb +0 -180
- data/spec/spec/example/example_group_methods_spec.rb +0 -759
- data/spec/spec/example/example_group_proxy_spec.rb +0 -107
- data/spec/spec/example/example_group_spec.rb +0 -643
- data/spec/spec/example/example_matcher_spec.rb +0 -86
- data/spec/spec/example/example_methods_spec.rb +0 -162
- data/spec/spec/example/example_proxy_spec.rb +0 -57
- data/spec/spec/example/helper_method_spec.rb +0 -24
- data/spec/spec/example/nested_example_group_spec.rb +0 -71
- data/spec/spec/example/pending_module_spec.rb +0 -58
- data/spec/spec/example/predicate_matcher_spec.rb +0 -41
- data/spec/spec/example/shared_example_group_spec.rb +0 -257
- data/spec/spec/example/subclassing_example_group_spec.rb +0 -25
- data/spec/spec/example/subject_spec.rb +0 -103
- data/spec/spec/expectations/differs/default_spec.rb +0 -194
- data/spec/spec/expectations/extensions/kernel_spec.rb +0 -45
- data/spec/spec/expectations/fail_with_spec.rb +0 -96
- data/spec/spec/expectations/handler_spec.rb +0 -206
- data/spec/spec/expectations/wrap_expectation_spec.rb +0 -30
- data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +0 -10
- data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +0 -10
- data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +0 -10
- data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +0 -13
- data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +0 -10
- data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +0 -10
- data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +0 -10
- data/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb +0 -22
- data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +0 -38
- data/spec/spec/interop/test/unit/spec_spec.rb +0 -48
- data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +0 -18
- data/spec/spec/interop/test/unit/testcase_spec.rb +0 -50
- data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +0 -9
- data/spec/spec/matchers/be_close_spec.rb +0 -50
- data/spec/spec/matchers/be_instance_of_spec.rb +0 -36
- data/spec/spec/matchers/be_kind_of_spec.rb +0 -33
- data/spec/spec/matchers/be_spec.rb +0 -460
- data/spec/spec/matchers/change_spec.rb +0 -349
- data/spec/spec/matchers/compatibility_spec.rb +0 -28
- data/spec/spec/matchers/description_generation_spec.rb +0 -160
- data/spec/spec/matchers/dsl_spec.rb +0 -34
- data/spec/spec/matchers/eql_spec.rb +0 -33
- data/spec/spec/matchers/equal_spec.rb +0 -57
- data/spec/spec/matchers/exist_spec.rb +0 -65
- data/spec/spec/matchers/has_spec.rb +0 -190
- data/spec/spec/matchers/have_spec.rb +0 -396
- data/spec/spec/matchers/include_spec.rb +0 -88
- data/spec/spec/matchers/match_array_spec.rb +0 -108
- data/spec/spec/matchers/match_spec.rb +0 -57
- data/spec/spec/matchers/matcher_spec.rb +0 -289
- data/spec/spec/matchers/matchers_spec.rb +0 -2
- data/spec/spec/matchers/operator_matcher_spec.rb +0 -191
- data/spec/spec/matchers/raise_exception_spec.rb +0 -345
- data/spec/spec/matchers/respond_to_spec.rb +0 -116
- data/spec/spec/matchers/satisfy_spec.rb +0 -36
- data/spec/spec/matchers/simple_matcher_spec.rb +0 -93
- data/spec/spec/matchers/throw_symbol_spec.rb +0 -121
- data/spec/spec/mocks/and_yield_spec.rb +0 -117
- data/spec/spec/mocks/any_number_of_times_spec.rb +0 -36
- data/spec/spec/mocks/argument_expectation_spec.rb +0 -23
- data/spec/spec/mocks/argument_matchers_spec.rb +0 -19
- data/spec/spec/mocks/at_least_spec.rb +0 -97
- data/spec/spec/mocks/at_most_spec.rb +0 -93
- data/spec/spec/mocks/bug_report_10260_spec.rb +0 -8
- data/spec/spec/mocks/bug_report_10263_spec.rb +0 -27
- data/spec/spec/mocks/bug_report_11545_spec.rb +0 -32
- data/spec/spec/mocks/bug_report_15719_spec.rb +0 -30
- data/spec/spec/mocks/bug_report_496_spec.rb +0 -19
- data/spec/spec/mocks/bug_report_600_spec.rb +0 -22
- data/spec/spec/mocks/bug_report_7611_spec.rb +0 -19
- data/spec/spec/mocks/bug_report_7805_spec.rb +0 -22
- data/spec/spec/mocks/bug_report_8165_spec.rb +0 -31
- data/spec/spec/mocks/bug_report_8302_spec.rb +0 -26
- data/spec/spec/mocks/bug_report_830_spec.rb +0 -21
- data/spec/spec/mocks/double_spec.rb +0 -12
- data/spec/spec/mocks/failing_argument_matchers_spec.rb +0 -95
- data/spec/spec/mocks/hash_including_matcher_spec.rb +0 -90
- data/spec/spec/mocks/hash_not_including_matcher_spec.rb +0 -67
- data/spec/spec/mocks/mock_ordering_spec.rb +0 -94
- data/spec/spec/mocks/mock_space_spec.rb +0 -54
- data/spec/spec/mocks/mock_spec.rb +0 -594
- data/spec/spec/mocks/multiple_return_value_spec.rb +0 -113
- data/spec/spec/mocks/nil_expectation_warning_spec.rb +0 -53
- data/spec/spec/mocks/null_object_mock_spec.rb +0 -54
- data/spec/spec/mocks/once_counts_spec.rb +0 -53
- data/spec/spec/mocks/options_hash_spec.rb +0 -35
- data/spec/spec/mocks/partial_mock_spec.rb +0 -164
- data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +0 -66
- data/spec/spec/mocks/passing_argument_matchers_spec.rb +0 -145
- data/spec/spec/mocks/precise_counts_spec.rb +0 -52
- data/spec/spec/mocks/record_messages_spec.rb +0 -26
- data/spec/spec/mocks/stub_chain_spec.rb +0 -42
- data/spec/spec/mocks/stub_implementation_spec.rb +0 -31
- data/spec/spec/mocks/stub_spec.rb +0 -203
- data/spec/spec/mocks/stubbed_message_expectations_spec.rb +0 -26
- data/spec/spec/mocks/twice_counts_spec.rb +0 -67
- data/spec/spec/mocks/unstub_spec.rb +0 -127
- data/spec/spec/package/bin_spec_spec.rb +0 -16
- data/spec/spec/rake/spectask_spec.rb +0 -150
- data/spec/spec/runner/class_and_argument_parser_spec.rb +0 -23
- data/spec/spec/runner/command_line_spec.rb +0 -162
- data/spec/spec/runner/configuration_spec.rb +0 -320
- data/spec/spec/runner/drb_command_line_spec.rb +0 -146
- data/spec/spec/runner/empty_file.txt +0 -0
- data/spec/spec/runner/example_group_runner_spec.rb +0 -26
- data/spec/spec/runner/examples.txt +0 -2
- data/spec/spec/runner/failed.txt +0 -3
- data/spec/spec/runner/formatter/base_formatter_spec.rb +0 -30
- data/spec/spec/runner/formatter/base_text_formatter_spec.rb +0 -113
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +0 -45
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +0 -33
- data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +0 -377
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +0 -377
- data/spec/spec/runner/formatter/html_formatted-1.8.7.html +0 -377
- data/spec/spec/runner/formatter/html_formatted-1.9.1.html +0 -377
- data/spec/spec/runner/formatter/html_formatter_spec.rb +0 -118
- data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +0 -329
- data/spec/spec/runner/formatter/profile_formatter_spec.rb +0 -70
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +0 -149
- data/spec/spec/runner/formatter/snippet_extractor_spec.rb +0 -18
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +0 -159
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +0 -371
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +0 -371
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +0 -371
- data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +0 -371
- data/spec/spec/runner/formatter/text_mate_formatter_spec.rb +0 -106
- data/spec/spec/runner/heckle_runner_spec.rb +0 -78
- data/spec/spec/runner/heckler_spec.rb +0 -20
- data/spec/spec/runner/line_number_query/line_number_query_fixture.rb +0 -70
- data/spec/spec/runner/line_number_query_spec.rb +0 -129
- data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +0 -51
- data/spec/spec/runner/option_parser_spec.rb +0 -551
- data/spec/spec/runner/options_spec.rb +0 -554
- data/spec/spec/runner/output_one_time_fixture.rb +0 -7
- data/spec/spec/runner/output_one_time_fixture_runner.rb +0 -7
- data/spec/spec/runner/output_one_time_spec.rb +0 -15
- data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +0 -123
- data/spec/spec/runner/reporter_spec.rb +0 -244
- 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 +0 -1
- data/spec/spec/runner/resources/custom_example_group_runner.rb +0 -14
- data/spec/spec/runner/resources/utf8_encoded.rb +0 -8
- data/spec/spec/runner/spec.opts +0 -2
- data/spec/spec/runner/spec_drb.opts +0 -2
- data/spec/spec/runner/spec_spaced.opts +0 -2
- data/spec/spec/runner_spec.rb +0 -13
- data/spec/spec.opts +0 -6
- data/spec/spec_helper.rb +0 -112
- data/spec/support/macros.rb +0 -29
- data/spec/support/spec_classes.rb +0 -133
data/lib/spec/matchers.rb
DELETED
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
require 'spec/extensions/instance_exec'
|
|
2
|
-
require 'spec/matchers/pretty'
|
|
3
|
-
require 'spec/matchers/matcher'
|
|
4
|
-
require 'spec/matchers/operator_matcher'
|
|
5
|
-
require 'spec/matchers/be'
|
|
6
|
-
require 'spec/matchers/be_close'
|
|
7
|
-
require 'spec/matchers/be_instance_of'
|
|
8
|
-
require 'spec/matchers/be_kind_of'
|
|
9
|
-
require 'spec/matchers/change'
|
|
10
|
-
require 'spec/matchers/eql'
|
|
11
|
-
require 'spec/matchers/equal'
|
|
12
|
-
require 'spec/matchers/errors'
|
|
13
|
-
require 'spec/matchers/exist'
|
|
14
|
-
require 'spec/matchers/generated_descriptions'
|
|
15
|
-
require 'spec/matchers/has'
|
|
16
|
-
require 'spec/matchers/have'
|
|
17
|
-
require 'spec/matchers/include'
|
|
18
|
-
require 'spec/matchers/match'
|
|
19
|
-
require 'spec/matchers/match_array'
|
|
20
|
-
require 'spec/matchers/method_missing'
|
|
21
|
-
require 'spec/matchers/raise_exception'
|
|
22
|
-
require 'spec/matchers/respond_to'
|
|
23
|
-
require 'spec/matchers/satisfy'
|
|
24
|
-
require 'spec/matchers/simple_matcher'
|
|
25
|
-
require 'spec/matchers/throw_symbol'
|
|
26
|
-
require 'spec/matchers/wrap_expectation'
|
|
27
|
-
require 'spec/matchers/compatibility'
|
|
28
|
-
require 'spec/matchers/dsl'
|
|
29
|
-
|
|
30
|
-
module Spec
|
|
31
|
-
|
|
32
|
-
# RSpec ships with a number of useful Expression Matchers. An Expression Matcher
|
|
33
|
-
# is any object that responds to the following methods:
|
|
34
|
-
#
|
|
35
|
-
# matches?(actual)
|
|
36
|
-
# failure_message_for_should
|
|
37
|
-
#
|
|
38
|
-
# These methods are also part of the matcher protocol, but are optional:
|
|
39
|
-
#
|
|
40
|
-
# does_not_match?(actual)
|
|
41
|
-
# failure_message_for_should_not
|
|
42
|
-
# description #optional
|
|
43
|
-
#
|
|
44
|
-
# These methods are from older versions of the protocol. They are still supported,
|
|
45
|
-
# but are not recommended:
|
|
46
|
-
#
|
|
47
|
-
# failure_message (use failure_message_for_should instead)
|
|
48
|
-
# negative_failure_message (use failure_message_for_should_not instead)
|
|
49
|
-
#
|
|
50
|
-
# See Spec::Expectations to learn how to use these as Expectation Matchers.
|
|
51
|
-
#
|
|
52
|
-
# == Predicates
|
|
53
|
-
#
|
|
54
|
-
# In addition to those Expression Matchers that are defined explicitly, RSpec will
|
|
55
|
-
# create custom Matchers on the fly for any arbitrary predicate, giving your specs
|
|
56
|
-
# a much more natural language feel.
|
|
57
|
-
#
|
|
58
|
-
# A Ruby predicate is a method that ends with a "?" and returns true or false.
|
|
59
|
-
# Common examples are +empty?+, +nil?+, and +instance_of?+.
|
|
60
|
-
#
|
|
61
|
-
# All you need to do is write +should be_+ followed by the predicate without
|
|
62
|
-
# the question mark, and RSpec will figure it out from there. For example:
|
|
63
|
-
#
|
|
64
|
-
# [].should be_empty => [].empty? #passes
|
|
65
|
-
# [].should_not be_empty => [].empty? #fails
|
|
66
|
-
#
|
|
67
|
-
# In addtion to prefixing the predicate matchers with "be_", you can also use "be_a_"
|
|
68
|
-
# and "be_an_", making your specs read much more naturally:
|
|
69
|
-
#
|
|
70
|
-
# "a string".should be_an_instance_of(String) =>"a string".instance_of?(String) #passes
|
|
71
|
-
#
|
|
72
|
-
# 3.should be_a_kind_of(Fixnum) => 3.kind_of?(Numeric) #passes
|
|
73
|
-
# 3.should be_a_kind_of(Numeric) => 3.kind_of?(Numeric) #passes
|
|
74
|
-
# 3.should be_an_instance_of(Fixnum) => 3.instance_of?(Fixnum) #passes
|
|
75
|
-
# 3.should_not be_instance_of(Numeric) => 3.instance_of?(Numeric) #fails
|
|
76
|
-
#
|
|
77
|
-
# RSpec will also create custom matchers for predicates like +has_key?+. To
|
|
78
|
-
# use this feature, just state that the object should have_key(:key) and RSpec will
|
|
79
|
-
# call has_key?(:key) on the target. For example:
|
|
80
|
-
#
|
|
81
|
-
# {:a => "A"}.should have_key(:a) => {:a => "A"}.has_key?(:a) #passes
|
|
82
|
-
# {:a => "A"}.should have_key(:b) => {:a => "A"}.has_key?(:b) #fails
|
|
83
|
-
#
|
|
84
|
-
# You can use this feature to invoke any predicate that begins with "has_", whether it is
|
|
85
|
-
# part of the Ruby libraries (like +Hash#has_key?+) or a method you wrote on your own class.
|
|
86
|
-
#
|
|
87
|
-
# == Custom Matchers
|
|
88
|
-
#
|
|
89
|
-
# When you find that none of the stock Expectation Matchers provide a natural
|
|
90
|
-
# feeling expectation, you can very easily write your own using RSpec's matcher
|
|
91
|
-
# DSL or writing one from scratch.
|
|
92
|
-
#
|
|
93
|
-
# === Matcher DSL
|
|
94
|
-
#
|
|
95
|
-
# Imagine that you are writing a game in which players can be in various
|
|
96
|
-
# zones on a virtual board. To specify that bob should be in zone 4, you
|
|
97
|
-
# could say:
|
|
98
|
-
#
|
|
99
|
-
# bob.current_zone.should eql(Zone.new("4"))
|
|
100
|
-
#
|
|
101
|
-
# But you might find it more expressive to say:
|
|
102
|
-
#
|
|
103
|
-
# bob.should be_in_zone("4")
|
|
104
|
-
#
|
|
105
|
-
# and/or
|
|
106
|
-
#
|
|
107
|
-
# bob.should_not be_in_zone("3")
|
|
108
|
-
#
|
|
109
|
-
# You can create such a matcher like so:
|
|
110
|
-
#
|
|
111
|
-
# Spec::Matchers.define :be_in_zone do |zone|
|
|
112
|
-
# match do |player|
|
|
113
|
-
# player.in_zone?(zone)
|
|
114
|
-
# end
|
|
115
|
-
# end
|
|
116
|
-
#
|
|
117
|
-
# This will generate a <tt>be_in_zone</tt> method that returns a matcher
|
|
118
|
-
# with logical default messages for failures. You can override the failure
|
|
119
|
-
# messages and the generated description as follows:
|
|
120
|
-
#
|
|
121
|
-
# Spec::Matchers.define :be_in_zone do |zone|
|
|
122
|
-
# match do |player|
|
|
123
|
-
# player.in_zone?(zone)
|
|
124
|
-
# end
|
|
125
|
-
# failure_message_for_should do |player|
|
|
126
|
-
# # generate and return the appropriate string.
|
|
127
|
-
# end
|
|
128
|
-
# failure_message_for_should_not do |player|
|
|
129
|
-
# # generate and return the appropriate string.
|
|
130
|
-
# end
|
|
131
|
-
# description do
|
|
132
|
-
# # generate and return the appropriate string.
|
|
133
|
-
# end
|
|
134
|
-
# end
|
|
135
|
-
#
|
|
136
|
-
# Each of the message-generation methods has access to the block arguments
|
|
137
|
-
# passed to the <tt>create</tt> method (in this case, <tt>zone</tt>). The
|
|
138
|
-
# failure message methods (<tt>failure_message_for_should</tt> and
|
|
139
|
-
# <tt>failure_message_for_should_not</tt>) are passed the actual value (the
|
|
140
|
-
# receiver of <tt>should</tt> or <tt>should_not</tt>).
|
|
141
|
-
#
|
|
142
|
-
# You can also create matchers that obey a fluent interface using the
|
|
143
|
-
# <tt>chain</tt> method:
|
|
144
|
-
#
|
|
145
|
-
# Spec::Matchers.define :tip do |expected_tip|
|
|
146
|
-
# chain :on do |bill|
|
|
147
|
-
# @bill = bill
|
|
148
|
-
# end
|
|
149
|
-
#
|
|
150
|
-
# match do |person|
|
|
151
|
-
# person.tip_for(bill) == expected_tip
|
|
152
|
-
# end
|
|
153
|
-
# end
|
|
154
|
-
#
|
|
155
|
-
# This matcher can be used as follows:
|
|
156
|
-
#
|
|
157
|
-
# describe Customer do
|
|
158
|
-
# it { should tip(10).on(50 }
|
|
159
|
-
# end
|
|
160
|
-
#
|
|
161
|
-
# === Custom Matcher from scratch
|
|
162
|
-
#
|
|
163
|
-
# You could also write a custom matcher from scratch, as follows:
|
|
164
|
-
#
|
|
165
|
-
# class BeInZone
|
|
166
|
-
# def initialize(expected)
|
|
167
|
-
# @expected = expected
|
|
168
|
-
# end
|
|
169
|
-
# def matches?(target)
|
|
170
|
-
# @target = target
|
|
171
|
-
# @target.current_zone.eql?(Zone.new(@expected))
|
|
172
|
-
# end
|
|
173
|
-
# def failure_message_for_should
|
|
174
|
-
# "expected #{@target.inspect} to be in Zone #{@expected}"
|
|
175
|
-
# end
|
|
176
|
-
# def failure_message_for_should_not
|
|
177
|
-
# "expected #{@target.inspect} not to be in Zone #{@expected}"
|
|
178
|
-
# end
|
|
179
|
-
# end
|
|
180
|
-
#
|
|
181
|
-
# ... and a method like this:
|
|
182
|
-
#
|
|
183
|
-
# def be_in_zone(expected)
|
|
184
|
-
# BeInZone.new(expected)
|
|
185
|
-
# end
|
|
186
|
-
#
|
|
187
|
-
# And then expose the method to your specs. This is normally done
|
|
188
|
-
# by including the method and the class in a module, which is then
|
|
189
|
-
# included in your spec:
|
|
190
|
-
#
|
|
191
|
-
# module CustomGameMatchers
|
|
192
|
-
# class BeInZone
|
|
193
|
-
# ...
|
|
194
|
-
# end
|
|
195
|
-
#
|
|
196
|
-
# def be_in_zone(expected)
|
|
197
|
-
# ...
|
|
198
|
-
# end
|
|
199
|
-
# end
|
|
200
|
-
#
|
|
201
|
-
# describe "Player behaviour" do
|
|
202
|
-
# include CustomGameMatchers
|
|
203
|
-
# ...
|
|
204
|
-
# end
|
|
205
|
-
#
|
|
206
|
-
# or you can include in globally in a spec_helper.rb file <tt>require</tt>d
|
|
207
|
-
# from your spec file(s):
|
|
208
|
-
#
|
|
209
|
-
# Spec::Runner.configure do |config|
|
|
210
|
-
# config.include(CustomGameMatchers)
|
|
211
|
-
# end
|
|
212
|
-
#
|
|
213
|
-
module Matchers; end
|
|
214
|
-
end
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module Mocks
|
|
3
|
-
|
|
4
|
-
class ArgumentExpectation
|
|
5
|
-
attr_reader :args
|
|
6
|
-
|
|
7
|
-
def initialize(args, &block)
|
|
8
|
-
@args = args
|
|
9
|
-
@matchers_block = block
|
|
10
|
-
@match_any_args = false
|
|
11
|
-
@matchers = nil
|
|
12
|
-
|
|
13
|
-
if ArgumentMatchers::AnyArgsMatcher === args.first
|
|
14
|
-
@match_any_args = true
|
|
15
|
-
elsif ArgumentMatchers::NoArgsMatcher === args.first
|
|
16
|
-
@matchers = []
|
|
17
|
-
else
|
|
18
|
-
@matchers = args.collect {|arg| matcher_for(arg)}
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def matcher_for(arg)
|
|
23
|
-
return ArgumentMatchers::MatcherMatcher.new(arg) if is_matcher?(arg)
|
|
24
|
-
return ArgumentMatchers::RegexpMatcher.new(arg) if arg.is_a?(Regexp)
|
|
25
|
-
return ArgumentMatchers::EqualityProxy.new(arg)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def is_matcher?(obj)
|
|
29
|
-
return obj.respond_to?(:matches?) & obj.respond_to?(:description)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def args_match?(given_args)
|
|
33
|
-
match_any_args? || matchers_block_matches?(given_args) || matchers_match?(given_args)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def matchers_block_matches?(given_args)
|
|
37
|
-
@matchers_block ? @matchers_block.call(*given_args) : nil
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def matchers_match?(given_args)
|
|
41
|
-
@matchers == given_args
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def match_any_args?
|
|
45
|
-
@match_any_args
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
end
|
|
51
|
-
end
|
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module Mocks
|
|
3
|
-
|
|
4
|
-
# ArgumentMatchers are messages that you can include in message
|
|
5
|
-
# expectations to match arguments against a broader check than simple
|
|
6
|
-
# equality.
|
|
7
|
-
#
|
|
8
|
-
# With the exception of any_args() and no_args(), the matchers
|
|
9
|
-
# are all positional - they match against the arg in the given position.
|
|
10
|
-
module ArgumentMatchers
|
|
11
|
-
|
|
12
|
-
class AnyArgsMatcher
|
|
13
|
-
def description
|
|
14
|
-
"any args"
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
class NoArgsMatcher
|
|
19
|
-
def description
|
|
20
|
-
"no args"
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
class AnyArgMatcher
|
|
25
|
-
def initialize(ignore)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def ==(other)
|
|
29
|
-
true
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def description
|
|
33
|
-
"anything"
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
class RegexpMatcher
|
|
38
|
-
def initialize(regexp)
|
|
39
|
-
@regexp = regexp
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def ==(value)
|
|
43
|
-
return value =~ @regexp unless value.is_a?(Regexp)
|
|
44
|
-
value == @regexp
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
class BooleanMatcher
|
|
49
|
-
def initialize(ignore)
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def ==(value)
|
|
53
|
-
TrueClass === value || FalseClass === value
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
class HashIncludingMatcher
|
|
58
|
-
def initialize(expected)
|
|
59
|
-
@expected = expected
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def ==(actual)
|
|
63
|
-
@expected.each do | key, value |
|
|
64
|
-
return false unless actual.has_key?(key) && value == actual[key]
|
|
65
|
-
end
|
|
66
|
-
true
|
|
67
|
-
rescue NoMethodError => ex
|
|
68
|
-
return false
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
def description
|
|
72
|
-
"hash_including(#{@expected.inspect.sub(/^\{/,"").sub(/\}$/,"")})"
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
class HashNotIncludingMatcher
|
|
77
|
-
def initialize(expected)
|
|
78
|
-
@expected = expected
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
def ==(actual)
|
|
82
|
-
@expected.each do | key, value |
|
|
83
|
-
return false if actual.has_key?(key) && value == actual[key]
|
|
84
|
-
end
|
|
85
|
-
true
|
|
86
|
-
rescue NoMethodError => ex
|
|
87
|
-
return false
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def description
|
|
91
|
-
"hash_not_including(#{@expected.inspect.sub(/^\{/,"").sub(/\}$/,"")})"
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
class DuckTypeMatcher
|
|
96
|
-
def initialize(*methods_to_respond_to)
|
|
97
|
-
@methods_to_respond_to = methods_to_respond_to
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
def ==(value)
|
|
101
|
-
@methods_to_respond_to.all? { |sym| value.respond_to?(sym) }
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
class MatcherMatcher
|
|
106
|
-
def initialize(matcher)
|
|
107
|
-
@matcher = matcher
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
def ==(value)
|
|
111
|
-
@matcher.matches?(value)
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
class EqualityProxy
|
|
116
|
-
def initialize(given)
|
|
117
|
-
@given = given
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
def ==(expected)
|
|
121
|
-
@given == expected
|
|
122
|
-
end
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
class InstanceOf
|
|
126
|
-
def initialize(klass)
|
|
127
|
-
@klass = klass
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
def ==(actual)
|
|
131
|
-
actual.instance_of?(@klass)
|
|
132
|
-
end
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
class KindOf
|
|
136
|
-
def initialize(klass)
|
|
137
|
-
@klass = klass
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
def ==(actual)
|
|
141
|
-
actual.kind_of?(@klass)
|
|
142
|
-
end
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
# :call-seq:
|
|
146
|
-
# object.should_receive(:message).with(no_args())
|
|
147
|
-
#
|
|
148
|
-
# Passes if no arguments are passed along with the message
|
|
149
|
-
def no_args
|
|
150
|
-
NoArgsMatcher.new
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
# :call-seq:
|
|
154
|
-
# object.should_receive(:message).with(any_args())
|
|
155
|
-
#
|
|
156
|
-
# Passes if object receives :message with any args at all. This is
|
|
157
|
-
# really a more explicit variation of object.should_receive(:message)
|
|
158
|
-
def any_args
|
|
159
|
-
AnyArgsMatcher.new
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
# :call-seq:
|
|
163
|
-
# object.should_receive(:message).with(anything())
|
|
164
|
-
#
|
|
165
|
-
# Passes as long as there is an argument.
|
|
166
|
-
def anything
|
|
167
|
-
AnyArgMatcher.new(nil)
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
# :call-seq:
|
|
171
|
-
# object.should_receive(:message).with(duck_type(:hello))
|
|
172
|
-
# object.should_receive(:message).with(duck_type(:hello, :goodbye))
|
|
173
|
-
#
|
|
174
|
-
# Passes if the argument responds to the specified messages.
|
|
175
|
-
#
|
|
176
|
-
# == Examples
|
|
177
|
-
#
|
|
178
|
-
# array = []
|
|
179
|
-
# display = mock('display')
|
|
180
|
-
# display.should_receive(:present_names).with(duck_type(:length, :each))
|
|
181
|
-
# => passes
|
|
182
|
-
def duck_type(*args)
|
|
183
|
-
DuckTypeMatcher.new(*args)
|
|
184
|
-
end
|
|
185
|
-
|
|
186
|
-
# :call-seq:
|
|
187
|
-
# object.should_receive(:message).with(boolean())
|
|
188
|
-
#
|
|
189
|
-
# Passes if the argument is boolean.
|
|
190
|
-
def boolean
|
|
191
|
-
BooleanMatcher.new(nil)
|
|
192
|
-
end
|
|
193
|
-
|
|
194
|
-
# :call-seq:
|
|
195
|
-
# object.should_receive(:message).with(hash_including(:key => val))
|
|
196
|
-
# object.should_receive(:message).with(hash_including(:key))
|
|
197
|
-
# object.should_receive(:message).with(hash_including(:key, :key2 => val2))
|
|
198
|
-
# Passes if the argument is a hash that includes the specified key(s) or key/value
|
|
199
|
-
# pairs. If the hash includes other keys, it will still pass.
|
|
200
|
-
def hash_including(*args)
|
|
201
|
-
HashIncludingMatcher.new(anythingize_lonely_keys(*args))
|
|
202
|
-
end
|
|
203
|
-
|
|
204
|
-
# :call-seq:
|
|
205
|
-
# object.should_receive(:message).with(hash_not_including(:key => val))
|
|
206
|
-
# object.should_receive(:message).with(hash_not_including(:key))
|
|
207
|
-
# object.should_receive(:message).with(hash_not_including(:key, :key2 => :val2))
|
|
208
|
-
#
|
|
209
|
-
# Passes if the argument is a hash that doesn't include the specified key(s) or key/value
|
|
210
|
-
def hash_not_including(*args)
|
|
211
|
-
HashNotIncludingMatcher.new(anythingize_lonely_keys(*args))
|
|
212
|
-
end
|
|
213
|
-
|
|
214
|
-
# Passes if arg.instance_of?(klass)
|
|
215
|
-
def instance_of(klass)
|
|
216
|
-
InstanceOf.new(klass)
|
|
217
|
-
end
|
|
218
|
-
|
|
219
|
-
alias_method :an_instance_of, :instance_of
|
|
220
|
-
|
|
221
|
-
# Passes if arg.kind_of?(klass)
|
|
222
|
-
def kind_of(klass)
|
|
223
|
-
KindOf.new(klass)
|
|
224
|
-
end
|
|
225
|
-
|
|
226
|
-
alias_method :a_kind_of, :kind_of
|
|
227
|
-
|
|
228
|
-
private
|
|
229
|
-
|
|
230
|
-
def anythingize_lonely_keys(*args)
|
|
231
|
-
hash = args.last.class == Hash ? args.delete_at(-1) : {}
|
|
232
|
-
args.each { | arg | hash[arg] = anything }
|
|
233
|
-
hash
|
|
234
|
-
end
|
|
235
|
-
end
|
|
236
|
-
end
|
|
237
|
-
end
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module Mocks
|
|
3
|
-
class ErrorGenerator
|
|
4
|
-
attr_writer :opts
|
|
5
|
-
|
|
6
|
-
def initialize(target, name, options={})
|
|
7
|
-
@declared_as = options[:__declared_as] || 'Mock'
|
|
8
|
-
@target = target
|
|
9
|
-
@name = name
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def opts
|
|
13
|
-
@opts ||= {}
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def raise_unexpected_message_error(sym, *args)
|
|
17
|
-
__raise "#{intro} received unexpected message :#{sym}#{arg_message(*args)}"
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def raise_unexpected_message_args_error(expectation, *args)
|
|
21
|
-
expected_args = format_args(*expectation.expected_args)
|
|
22
|
-
actual_args = args.empty? ? "(no args)" : format_args(*args)
|
|
23
|
-
__raise "#{intro} received #{expectation.sym.inspect} with unexpected arguments\n expected: #{expected_args}\n got: #{actual_args}"
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def raise_expectation_error(sym, expected_received_count, actual_received_count, *args)
|
|
27
|
-
__raise "#{intro} expected :#{sym}#{arg_message(*args)} #{count_message(expected_received_count)}, but received it #{count_message(actual_received_count)}"
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def raise_out_of_order_error(sym)
|
|
31
|
-
__raise "#{intro} received :#{sym} out of order"
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def raise_block_failed_error(sym, detail)
|
|
35
|
-
__raise "#{intro} received :#{sym} but passed block failed with: #{detail}"
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def raise_missing_block_error(args_to_yield)
|
|
39
|
-
__raise "#{intro} asked to yield |#{arg_list(*args_to_yield)}| but no block was passed"
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def raise_wrong_arity_error(args_to_yield, arity)
|
|
43
|
-
__raise "#{intro} yielded |#{arg_list(*args_to_yield)}| to block with arity of #{arity}"
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
private
|
|
47
|
-
|
|
48
|
-
def intro
|
|
49
|
-
if @name
|
|
50
|
-
"#{@declared_as} #{@name.inspect}"
|
|
51
|
-
elsif Mock === @target
|
|
52
|
-
@declared_as
|
|
53
|
-
elsif Class === @target
|
|
54
|
-
"<#{@target.inspect} (class)>"
|
|
55
|
-
elsif @target
|
|
56
|
-
@target
|
|
57
|
-
else
|
|
58
|
-
"nil"
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def __raise(message)
|
|
63
|
-
message = opts[:message] unless opts[:message].nil?
|
|
64
|
-
Kernel::raise(Spec::Mocks::MockExpectationError, message)
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def arg_message(*args)
|
|
68
|
-
" with " + format_args(*args)
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
def format_args(*args)
|
|
72
|
-
args.empty? ? "(no args)" : "(" + arg_list(*args) + ")"
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def arg_list(*args)
|
|
76
|
-
args.collect {|arg| arg.respond_to?(:description) ? arg.description : arg.inspect}.join(", ")
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
def count_message(count)
|
|
80
|
-
return "at least #{pretty_print(count.abs)}" if count < 0
|
|
81
|
-
return pretty_print(count)
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
def pretty_print(count)
|
|
85
|
-
return "once" if count == 1
|
|
86
|
-
return "twice" if count == 2
|
|
87
|
-
return "#{count} times"
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
end
|
data/lib/spec/mocks/errors.rb
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module Mocks
|
|
3
|
-
module ExampleMethods
|
|
4
|
-
include Spec::Mocks::ArgumentMatchers
|
|
5
|
-
|
|
6
|
-
# Shortcut for creating an instance of Spec::Mocks::Mock.
|
|
7
|
-
#
|
|
8
|
-
# +name+ is used for failure reporting, so you should use the
|
|
9
|
-
# role that the double is playing in the example.
|
|
10
|
-
#
|
|
11
|
-
# +stubs_and_options+ lets you assign options and stub values
|
|
12
|
-
# at the same time. The only option available is :null_object.
|
|
13
|
-
# Anything else is treated as a stub value.
|
|
14
|
-
#
|
|
15
|
-
# == Examples
|
|
16
|
-
#
|
|
17
|
-
# thing = double("thing", :a => "A")
|
|
18
|
-
# thing.a == "A" => true
|
|
19
|
-
#
|
|
20
|
-
# person = double("thing", :name => "Joe", :email => "joe@domain.com")
|
|
21
|
-
# person.name => "Joe"
|
|
22
|
-
# person.email => "joe@domain.com"
|
|
23
|
-
def double(*args)
|
|
24
|
-
__declare_double('Double', *args)
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
# Alias for double
|
|
28
|
-
def mock(*args)
|
|
29
|
-
__declare_double('Mock', *args)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
# Alias for double
|
|
33
|
-
def stub(*args)
|
|
34
|
-
__declare_double('Stub', *args)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def __declare_double(declared_as, *args) # :nodoc:
|
|
38
|
-
args << {} unless Hash === args.last
|
|
39
|
-
args.last[:__declared_as] = declared_as
|
|
40
|
-
Spec::Mocks::Mock.new(*args)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# DEPRECATED - use double('name').as_null_object instead
|
|
44
|
-
#
|
|
45
|
-
# Shortcut for creating a mock object that will return itself in response
|
|
46
|
-
# to any message it receives that it hasn't been explicitly instructed
|
|
47
|
-
# to respond to.
|
|
48
|
-
def stub_everything(name = 'stub')
|
|
49
|
-
Spec.warn(<<-WARNING)
|
|
50
|
-
|
|
51
|
-
DEPRECATION: stub_everything('#{name}') is deprecated and will be removed
|
|
52
|
-
from a future version of rspec. Please use double('#{name}').as_null_object
|
|
53
|
-
(or stub('#{name}').as_null_object or mock('#{name}').as_null_object instead.
|
|
54
|
-
|
|
55
|
-
WARNING
|
|
56
|
-
mock(name, :null_object => true)
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
# Disables warning messages about expectations being set on nil.
|
|
60
|
-
#
|
|
61
|
-
# By default warning messages are issued when expectations are set on nil. This is to
|
|
62
|
-
# prevent false-positives and to catch potential bugs early on.
|
|
63
|
-
def allow_message_expectations_on_nil
|
|
64
|
-
Proxy.allow_message_expectations_on_nil
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require 'spec/mocks/extensions/object'
|
data/lib/spec/mocks/framework.rb
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# Require everything except the global extensions of class and object. This
|
|
2
|
-
# supports wrapping rspec's mocking functionality without invading every
|
|
3
|
-
# object in the system.
|
|
4
|
-
|
|
5
|
-
require 'spec/mocks/methods'
|
|
6
|
-
require 'spec/mocks/argument_matchers'
|
|
7
|
-
require 'spec/mocks/example_methods'
|
|
8
|
-
require 'spec/mocks/proxy'
|
|
9
|
-
require 'spec/mocks/mock'
|
|
10
|
-
require 'spec/mocks/argument_expectation'
|
|
11
|
-
require 'spec/mocks/message_expectation'
|
|
12
|
-
require 'spec/mocks/order_group'
|
|
13
|
-
require 'spec/mocks/errors'
|
|
14
|
-
require 'spec/mocks/error_generator'
|
|
15
|
-
require 'spec/mocks/space'
|