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
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "should raise_exception" do
|
|
4
|
+
it "should pass if anything is raised" do
|
|
5
|
+
lambda {raise}.should raise_exception
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it "should fail if nothing is raised" do
|
|
9
|
+
lambda {
|
|
10
|
+
lambda {}.should raise_exception
|
|
11
|
+
}.should fail_with("expected Exception but nothing was raised")
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe "should raise_error" do
|
|
16
|
+
it "should pass if anything is raised" do
|
|
17
|
+
lambda {raise}.should raise_error
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should fail if nothing is raised" do
|
|
21
|
+
lambda {
|
|
22
|
+
lambda {}.should raise_error
|
|
23
|
+
}.should fail_with("expected Exception but nothing was raised")
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe "should raise_exception {|e| ... }" do
|
|
28
|
+
it "passes if there is an exception" do
|
|
29
|
+
ran = false
|
|
30
|
+
lambda { non_existent_method }.should raise_exception {|e|
|
|
31
|
+
ran = true
|
|
32
|
+
}
|
|
33
|
+
ran.should be_true
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "passes the exception to the block" do
|
|
37
|
+
exception = nil
|
|
38
|
+
lambda { non_existent_method }.should raise_exception {|e|
|
|
39
|
+
exception = e
|
|
40
|
+
}
|
|
41
|
+
exception.should be_kind_of(NameError)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
describe "should_not raise_exception" do
|
|
46
|
+
it "should pass if nothing is raised" do
|
|
47
|
+
lambda {}.should_not raise_exception
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "should fail if anything is raised" do
|
|
51
|
+
lambda {
|
|
52
|
+
lambda {raise}.should_not raise_exception
|
|
53
|
+
}.should fail_with("expected no Exception, got RuntimeError")
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
describe "should raise_exception(message)" do
|
|
58
|
+
it "should pass if RuntimeError is raised with the right message" do
|
|
59
|
+
lambda {raise 'blah'}.should raise_exception('blah')
|
|
60
|
+
end
|
|
61
|
+
it "should pass if RuntimeError is raised with a matching message" do
|
|
62
|
+
lambda {raise 'blah'}.should raise_exception(/blah/)
|
|
63
|
+
end
|
|
64
|
+
it "should pass if any other exception is raised with the right message" do
|
|
65
|
+
lambda {raise NameError.new('blah')}.should raise_exception('blah')
|
|
66
|
+
end
|
|
67
|
+
it "should fail if RuntimeError exception is raised with the wrong message" do
|
|
68
|
+
lambda do
|
|
69
|
+
lambda {raise 'blarg'}.should raise_exception('blah')
|
|
70
|
+
end.should fail_with("expected Exception with \"blah\", got #<RuntimeError: blarg>")
|
|
71
|
+
end
|
|
72
|
+
it "should fail if any other exception is raised with the wrong message" do
|
|
73
|
+
lambda do
|
|
74
|
+
lambda {raise NameError.new('blarg')}.should raise_exception('blah')
|
|
75
|
+
end.should fail_with("expected Exception with \"blah\", got #<NameError: blarg>")
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
describe "should_not raise_exception(message)" do
|
|
80
|
+
it "should pass if RuntimeError exception is raised with the different message" do
|
|
81
|
+
lambda {raise 'blarg'}.should_not raise_exception('blah')
|
|
82
|
+
end
|
|
83
|
+
it "should pass if any other exception is raised with the wrong message" do
|
|
84
|
+
lambda {raise NameError.new('blarg')}.should_not raise_exception('blah')
|
|
85
|
+
end
|
|
86
|
+
it "should fail if RuntimeError is raised with message" do
|
|
87
|
+
lambda do
|
|
88
|
+
lambda {raise 'blah'}.should_not raise_exception('blah')
|
|
89
|
+
end.should fail_with(%Q|expected no Exception with "blah", got #<RuntimeError: blah>|)
|
|
90
|
+
end
|
|
91
|
+
it "should fail if any other exception is raised with message" do
|
|
92
|
+
lambda do
|
|
93
|
+
lambda {raise NameError.new('blah')}.should_not raise_exception('blah')
|
|
94
|
+
end.should fail_with(%Q|expected no Exception with "blah", got #<NameError: blah>|)
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
describe "should raise_exception(NamedError)" do
|
|
99
|
+
it "should pass if named exception is raised" do
|
|
100
|
+
lambda { non_existent_method }.should raise_exception(NameError)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
it "should fail if nothing is raised" do
|
|
104
|
+
lambda {
|
|
105
|
+
lambda { }.should raise_exception(NameError)
|
|
106
|
+
}.should fail_with("expected NameError but nothing was raised")
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
it "should fail if another exception is raised (NameError)" do
|
|
110
|
+
lambda {
|
|
111
|
+
lambda { raise }.should raise_exception(NameError)
|
|
112
|
+
}.should fail_with("expected NameError, got RuntimeError")
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
it "should fail if another exception is raised (NameError)" do
|
|
116
|
+
lambda {
|
|
117
|
+
lambda { load "non/existent/file" }.should raise_exception(NameError)
|
|
118
|
+
}.should fail_with(/expected NameError, got #<LoadError/)
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
describe "should_not raise_exception(NamedError)" do
|
|
123
|
+
it "should pass if nothing is raised" do
|
|
124
|
+
lambda { }.should_not raise_exception(NameError)
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
it "should pass if another exception is raised" do
|
|
128
|
+
lambda { raise }.should_not raise_exception(NameError)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
it "should fail if named exception is raised" do
|
|
132
|
+
lambda {
|
|
133
|
+
lambda { 1 + 'b' }.should_not raise_exception(TypeError)
|
|
134
|
+
}.should fail_with(/expected no TypeError, got #<TypeError: String can't be/)
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
describe "should raise_exception(NamedError, exception_message) with String" do
|
|
139
|
+
it "should pass if named exception is raised with same message" do
|
|
140
|
+
lambda { raise "example message" }.should raise_exception(RuntimeError, "example message")
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
it "should fail if nothing is raised" do
|
|
144
|
+
lambda {
|
|
145
|
+
lambda {}.should raise_exception(RuntimeError, "example message")
|
|
146
|
+
}.should fail_with("expected RuntimeError with \"example message\" but nothing was raised")
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
it "should fail if incorrect exception is raised" do
|
|
150
|
+
lambda {
|
|
151
|
+
lambda { raise }.should raise_exception(NameError, "example message")
|
|
152
|
+
}.should fail_with("expected NameError with \"example message\", got RuntimeError")
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
it "should fail if correct exception is raised with incorrect message" do
|
|
156
|
+
lambda {
|
|
157
|
+
lambda { raise RuntimeError.new("not the example message") }.should raise_exception(RuntimeError, "example message")
|
|
158
|
+
}.should fail_with(/expected RuntimeError with \"example message\", got #<RuntimeError: not the example message/)
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
describe "should raise_exception(NamedError, exception_message) { |err| ... }" do
|
|
163
|
+
it "should yield exception if named exception is raised with same message" do
|
|
164
|
+
ran = false
|
|
165
|
+
|
|
166
|
+
lambda {
|
|
167
|
+
raise "example message"
|
|
168
|
+
}.should raise_exception(RuntimeError, "example message") { |err|
|
|
169
|
+
ran = true
|
|
170
|
+
err.class.should == RuntimeError
|
|
171
|
+
err.message.should == "example message"
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
ran.should == true
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
it "yielded block should be able to fail on it's own right" do
|
|
178
|
+
ran, passed = false, false
|
|
179
|
+
|
|
180
|
+
lambda {
|
|
181
|
+
lambda {
|
|
182
|
+
raise "example message"
|
|
183
|
+
}.should raise_exception(RuntimeError, "example message") { |err|
|
|
184
|
+
ran = true
|
|
185
|
+
5.should == 4
|
|
186
|
+
passed = true
|
|
187
|
+
}
|
|
188
|
+
}.should fail_with(/expected: 4/m)
|
|
189
|
+
|
|
190
|
+
ran.should == true
|
|
191
|
+
passed.should == false
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
it "should NOT yield exception if no exception was thrown" do
|
|
195
|
+
ran = false
|
|
196
|
+
|
|
197
|
+
lambda {
|
|
198
|
+
lambda {}.should raise_exception(RuntimeError, "example message") { |err|
|
|
199
|
+
ran = true
|
|
200
|
+
}
|
|
201
|
+
}.should fail_with("expected RuntimeError with \"example message\" but nothing was raised")
|
|
202
|
+
|
|
203
|
+
ran.should == false
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
it "should not yield exception if exception class is not matched" do
|
|
207
|
+
ran = false
|
|
208
|
+
|
|
209
|
+
lambda {
|
|
210
|
+
lambda {
|
|
211
|
+
raise "example message"
|
|
212
|
+
}.should raise_exception(SyntaxError, "example message") { |err|
|
|
213
|
+
ran = true
|
|
214
|
+
}
|
|
215
|
+
}.should fail_with("expected SyntaxError with \"example message\", got #<RuntimeError: example message>")
|
|
216
|
+
|
|
217
|
+
ran.should == false
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
it "should NOT yield exception if exception message is not matched" do
|
|
221
|
+
ran = false
|
|
222
|
+
|
|
223
|
+
lambda {
|
|
224
|
+
lambda {
|
|
225
|
+
raise "example message"
|
|
226
|
+
}.should raise_exception(RuntimeError, "different message") { |err|
|
|
227
|
+
ran = true
|
|
228
|
+
}
|
|
229
|
+
}.should fail_with("expected RuntimeError with \"different message\", got #<RuntimeError: example message>")
|
|
230
|
+
|
|
231
|
+
ran.should == false
|
|
232
|
+
end
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
describe "should_not raise_exception(NamedError, exception_message) { |err| ... }" do
|
|
236
|
+
it "should pass if nothing is raised" do
|
|
237
|
+
ran = false
|
|
238
|
+
|
|
239
|
+
lambda {}.should_not raise_exception(RuntimeError, "example message") { |err|
|
|
240
|
+
ran = true
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
ran.should == false
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
it "should pass if a different exception is raised" do
|
|
247
|
+
ran = false
|
|
248
|
+
|
|
249
|
+
lambda { raise }.should_not raise_exception(NameError, "example message") { |err|
|
|
250
|
+
ran = true
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
ran.should == false
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
it "should pass if same exception is raised with different message" do
|
|
257
|
+
ran = false
|
|
258
|
+
|
|
259
|
+
lambda {
|
|
260
|
+
raise RuntimeError.new("not the example message")
|
|
261
|
+
}.should_not raise_exception(RuntimeError, "example message") { |err|
|
|
262
|
+
ran = true
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
ran.should == false
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
it "should fail if named exception is raised with same message" do
|
|
269
|
+
ran = false
|
|
270
|
+
|
|
271
|
+
lambda {
|
|
272
|
+
lambda {
|
|
273
|
+
raise "example message"
|
|
274
|
+
}.should_not raise_exception(RuntimeError, "example message") { |err|
|
|
275
|
+
ran = true
|
|
276
|
+
}
|
|
277
|
+
}.should fail_with("expected no RuntimeError with \"example message\", got #<RuntimeError: example message>")
|
|
278
|
+
|
|
279
|
+
ran.should == false
|
|
280
|
+
end
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
describe "should_not raise_exception(NamedError, exception_message) with String" do
|
|
284
|
+
it "should pass if nothing is raised" do
|
|
285
|
+
lambda {}.should_not raise_exception(RuntimeError, "example message")
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
it "should pass if a different exception is raised" do
|
|
289
|
+
lambda { raise }.should_not raise_exception(NameError, "example message")
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
it "should pass if same exception is raised with different message" do
|
|
293
|
+
lambda { raise RuntimeError.new("not the example message") }.should_not raise_exception(RuntimeError, "example message")
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
it "should fail if named exception is raised with same message" do
|
|
297
|
+
lambda {
|
|
298
|
+
lambda { raise "example message" }.should_not raise_exception(RuntimeError, "example message")
|
|
299
|
+
}.should fail_with("expected no RuntimeError with \"example message\", got #<RuntimeError: example message>")
|
|
300
|
+
end
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
describe "should raise_exception(NamedError, exception_message) with Regexp" do
|
|
304
|
+
it "should pass if named exception is raised with matching message" do
|
|
305
|
+
lambda { raise "example message" }.should raise_exception(RuntimeError, /ample mess/)
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
it "should fail if nothing is raised" do
|
|
309
|
+
lambda {
|
|
310
|
+
lambda {}.should raise_exception(RuntimeError, /ample mess/)
|
|
311
|
+
}.should fail_with("expected RuntimeError with message matching /ample mess/ but nothing was raised")
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
it "should fail if incorrect exception is raised" do
|
|
315
|
+
lambda {
|
|
316
|
+
lambda { raise }.should raise_exception(NameError, /ample mess/)
|
|
317
|
+
}.should fail_with("expected NameError with message matching /ample mess/, got RuntimeError")
|
|
318
|
+
end
|
|
319
|
+
|
|
320
|
+
it "should fail if correct exception is raised with incorrect message" do
|
|
321
|
+
lambda {
|
|
322
|
+
lambda { raise RuntimeError.new("not the example message") }.should raise_exception(RuntimeError, /less than ample mess/)
|
|
323
|
+
}.should fail_with("expected RuntimeError with message matching /less than ample mess/, got #<RuntimeError: not the example message>")
|
|
324
|
+
end
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
describe "should_not raise_exception(NamedError, exception_message) with Regexp" do
|
|
328
|
+
it "should pass if nothing is raised" do
|
|
329
|
+
lambda {}.should_not raise_exception(RuntimeError, /ample mess/)
|
|
330
|
+
end
|
|
331
|
+
|
|
332
|
+
it "should pass if a different exception is raised" do
|
|
333
|
+
lambda { raise }.should_not raise_exception(NameError, /ample mess/)
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
it "should pass if same exception is raised with non-matching message" do
|
|
337
|
+
lambda { raise RuntimeError.new("non matching message") }.should_not raise_exception(RuntimeError, /ample mess/)
|
|
338
|
+
end
|
|
339
|
+
|
|
340
|
+
it "should fail if named exception is raised with matching message" do
|
|
341
|
+
lambda {
|
|
342
|
+
lambda { raise "example message" }.should_not raise_exception(RuntimeError, /ample mess/)
|
|
343
|
+
}.should fail_with("expected no RuntimeError with message matching /ample mess/, got #<RuntimeError: example message>")
|
|
344
|
+
end
|
|
345
|
+
end
|
|
@@ -1,54 +1,116 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe "should respond_to(:sym)" do
|
|
4
4
|
|
|
5
|
-
it "
|
|
5
|
+
it "passes if target responds to :sym" do
|
|
6
6
|
Object.new.should respond_to(:methods)
|
|
7
7
|
end
|
|
8
8
|
|
|
9
|
-
it "
|
|
9
|
+
it "fails if target does not respond to :sym" do
|
|
10
10
|
lambda {
|
|
11
|
-
|
|
12
|
-
}.should fail_with(
|
|
11
|
+
"this string".should respond_to(:some_method)
|
|
12
|
+
}.should fail_with(%q|expected "this string" to respond to :some_method|)
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
+
describe "should respond_to(:sym).with(1).argument" do
|
|
18
|
+
it "passes if target responds to :sym with 1 arg" do
|
|
19
|
+
obj = Object.new
|
|
20
|
+
def obj.foo(arg); end
|
|
21
|
+
obj.should respond_to(:foo).with(1).argument
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "fails if target does not respond to :sym" do
|
|
25
|
+
obj = Object.new
|
|
26
|
+
lambda {
|
|
27
|
+
obj.should respond_to(:some_method).with(1).argument
|
|
28
|
+
}.should fail_with(/expected .* to respond to :some_method/)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "fails if :sym expects 0 args" do
|
|
32
|
+
obj = Object.new
|
|
33
|
+
def obj.foo; end
|
|
34
|
+
lambda {
|
|
35
|
+
obj.should respond_to(:foo).with(1).argument
|
|
36
|
+
}.should fail_with(/expected #<Object.*> to respond to :foo with 1 argument/)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "fails if :sym expects 2 args" do
|
|
40
|
+
obj = Object.new
|
|
41
|
+
def obj.foo(arg, arg2); end
|
|
42
|
+
lambda {
|
|
43
|
+
obj.should respond_to(:foo).with(1).argument
|
|
44
|
+
}.should fail_with(/expected #<Object.*> to respond to :foo with 1 argument/)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
17
48
|
describe "should respond_to(message1, message2)" do
|
|
18
49
|
|
|
19
|
-
it "
|
|
50
|
+
it "passes if target responds to both messages" do
|
|
20
51
|
Object.new.should respond_to('methods', 'inspect')
|
|
21
52
|
end
|
|
22
53
|
|
|
23
|
-
it "
|
|
54
|
+
it "fails if target does not respond to first message" do
|
|
24
55
|
lambda {
|
|
25
56
|
Object.new.should respond_to('method_one', 'inspect')
|
|
26
|
-
}.should fail_with(
|
|
57
|
+
}.should fail_with(/expected #<Object:.*> to respond to "method_one"/)
|
|
27
58
|
end
|
|
28
59
|
|
|
29
|
-
it "
|
|
60
|
+
it "fails if target does not respond to second message" do
|
|
30
61
|
lambda {
|
|
31
62
|
Object.new.should respond_to('inspect', 'method_one')
|
|
32
|
-
}.should fail_with(
|
|
63
|
+
}.should fail_with(/expected #<Object:.*> to respond to "method_one"/)
|
|
33
64
|
end
|
|
34
65
|
|
|
35
|
-
it "
|
|
66
|
+
it "fails if target does not respond to either message" do
|
|
36
67
|
lambda {
|
|
37
68
|
Object.new.should respond_to('method_one', 'method_two')
|
|
38
|
-
}.should fail_with(
|
|
69
|
+
}.should fail_with(/expected #<Object:.*> to respond to "method_one", "method_two"/)
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
describe "should respond_to(:sym).with(2).arguments" do
|
|
74
|
+
it "passes if target responds to :sym with 2 args" do
|
|
75
|
+
obj = Object.new
|
|
76
|
+
def obj.foo(a1, a2); end
|
|
77
|
+
obj.should respond_to(:foo).with(2).arguments
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
it "fails if target does not respond to :sym" do
|
|
81
|
+
obj = Object.new
|
|
82
|
+
lambda {
|
|
83
|
+
obj.should respond_to(:some_method).with(2).arguments
|
|
84
|
+
}.should fail_with(/expected .* to respond to :some_method/)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it "fails if :sym expects 0 args" do
|
|
88
|
+
obj = Object.new
|
|
89
|
+
def obj.foo; end
|
|
90
|
+
lambda {
|
|
91
|
+
obj.should respond_to(:foo).with(2).arguments
|
|
92
|
+
}.should fail_with(/expected #<Object.*> to respond to :foo with 2 arguments/)
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
it "fails if :sym expects 2 args" do
|
|
96
|
+
obj = Object.new
|
|
97
|
+
def obj.foo(arg); end
|
|
98
|
+
lambda {
|
|
99
|
+
obj.should respond_to(:foo).with(2).arguments
|
|
100
|
+
}.should fail_with(/expected #<Object.*> to respond to :foo with 2 arguments/)
|
|
39
101
|
end
|
|
40
102
|
end
|
|
41
103
|
|
|
42
104
|
describe "should_not respond_to(:sym)" do
|
|
43
105
|
|
|
44
|
-
it "
|
|
106
|
+
it "passes if target does not respond to :sym" do
|
|
45
107
|
Object.new.should_not respond_to(:some_method)
|
|
46
108
|
end
|
|
47
109
|
|
|
48
|
-
it "
|
|
110
|
+
it "fails if target responds to :sym" do
|
|
49
111
|
lambda {
|
|
50
112
|
Object.new.should_not respond_to(:methods)
|
|
51
|
-
}.should fail_with(
|
|
113
|
+
}.should fail_with(/expected #<Object:.*> not to respond to :methods/)
|
|
52
114
|
end
|
|
53
115
|
|
|
54
|
-
end
|
|
116
|
+
end
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Matchers
|
|
5
|
+
describe SimpleMatcher do
|
|
6
|
+
before { Spec.stub(:deprecate) }
|
|
7
|
+
|
|
8
|
+
it "is deprecated" do
|
|
9
|
+
Spec.should_receive(:deprecate)
|
|
10
|
+
simple_matcher("foo") {}
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "should pass match arg to block" do
|
|
14
|
+
actual = nil
|
|
15
|
+
matcher = simple_matcher("message") do |given| actual = given end
|
|
16
|
+
matcher.matches?("foo")
|
|
17
|
+
actual.should == "foo"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should provide a stock failure message" do
|
|
21
|
+
matcher = simple_matcher("thing") do end
|
|
22
|
+
matcher.matches?("other")
|
|
23
|
+
matcher.failure_message.should =~ /expected \"thing\" but got \"other\"/
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "should provide a stock negative failure message" do
|
|
27
|
+
matcher = simple_matcher("thing") do end
|
|
28
|
+
matcher.matches?("other")
|
|
29
|
+
matcher.negative_failure_message.should =~ /expected not to get \"thing\", but got \"other\"/
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "should provide the given description" do
|
|
33
|
+
matcher = simple_matcher("thing") do end
|
|
34
|
+
matcher.description.should =="thing"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "should fail if a wrapped 'should' fails" do
|
|
38
|
+
matcher = simple_matcher("should fail") do
|
|
39
|
+
2.should == 3
|
|
40
|
+
end
|
|
41
|
+
lambda do
|
|
42
|
+
matcher.matches?("anything").should be_true
|
|
43
|
+
end.should fail_with(/expected: 3/)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
describe "with arity of 2" do
|
|
47
|
+
it "should provide the matcher so you can access its messages" do
|
|
48
|
+
provided_matcher = nil
|
|
49
|
+
matcher = simple_matcher("thing") do |given, matcher|
|
|
50
|
+
provided_matcher = matcher
|
|
51
|
+
end
|
|
52
|
+
matcher.matches?("anything")
|
|
53
|
+
provided_matcher.should equal(matcher)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "should support a custom failure message" do
|
|
57
|
+
matcher = simple_matcher("thing") do |given, matcher|
|
|
58
|
+
matcher.failure_message = "custom message"
|
|
59
|
+
end
|
|
60
|
+
matcher.matches?("other")
|
|
61
|
+
matcher.failure_message.should == "custom message"
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "should complain when asked for a failure message if you don't give it a description or a message" do
|
|
65
|
+
matcher = simple_matcher do |given, matcher| end
|
|
66
|
+
matcher.matches?("other")
|
|
67
|
+
matcher.failure_message.should =~ /No description provided/
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it "should support a custom negative failure message" do
|
|
71
|
+
matcher = simple_matcher("thing") do |given, matcher|
|
|
72
|
+
matcher.negative_failure_message = "custom message"
|
|
73
|
+
end
|
|
74
|
+
matcher.matches?("other")
|
|
75
|
+
matcher.negative_failure_message.should == "custom message"
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "should complain when asked for a negative failure message if you don't give it a description or a message" do
|
|
79
|
+
matcher = simple_matcher do |given, matcher| end
|
|
80
|
+
matcher.matches?("other")
|
|
81
|
+
matcher.negative_failure_message.should =~ /No description provided/
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "should support a custom description" do
|
|
85
|
+
matcher = simple_matcher("thing") do |given, matcher|
|
|
86
|
+
matcher.description = "custom message"
|
|
87
|
+
end
|
|
88
|
+
matcher.matches?("description")
|
|
89
|
+
matcher.description.should == "custom message"
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it "should tell you no description was provided when it doesn't receive one" do
|
|
93
|
+
matcher = simple_matcher do end
|
|
94
|
+
matcher.description.should =~ /No description provided/
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|