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,115 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
class UnsortableObject
|
|
4
|
+
def initialize(id)
|
|
5
|
+
@id = id
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def inspect
|
|
9
|
+
@id.to_s
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def ==(other)
|
|
13
|
+
false
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe "array.should =~ other_array" do
|
|
18
|
+
it "should pass if target contains all items" do
|
|
19
|
+
[1,2,3].should =~ [1,2,3]
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "should pass if target contains all items out of order" do
|
|
23
|
+
[1,3,2].should =~ [1,2,3]
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "should fail if target includes extra items" do
|
|
27
|
+
lambda {
|
|
28
|
+
[1,2,3,4].should =~ [1,2,3]
|
|
29
|
+
}.should fail_with(<<-MESSAGE)
|
|
30
|
+
expected collection contained: [1, 2, 3]
|
|
31
|
+
actual collection contained: [1, 2, 3, 4]
|
|
32
|
+
the extra elements were: [4]
|
|
33
|
+
MESSAGE
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "should fail if target is missing items" do
|
|
37
|
+
lambda {
|
|
38
|
+
[1,2].should =~ [1,2,3]
|
|
39
|
+
}.should fail_with(<<-MESSAGE)
|
|
40
|
+
expected collection contained: [1, 2, 3]
|
|
41
|
+
actual collection contained: [1, 2]
|
|
42
|
+
the missing elements were: [3]
|
|
43
|
+
MESSAGE
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "should fail if target is missing items and has extra items" do
|
|
47
|
+
|
|
48
|
+
lambda {
|
|
49
|
+
[1,2,4].should =~ [1,2,3]
|
|
50
|
+
}.should fail_with(<<-MESSAGE)
|
|
51
|
+
expected collection contained: [1, 2, 3]
|
|
52
|
+
actual collection contained: [1, 2, 4]
|
|
53
|
+
the missing elements were: [3]
|
|
54
|
+
the extra elements were: [4]
|
|
55
|
+
MESSAGE
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "should sort items in the error message if they all respond to <=>" do
|
|
59
|
+
lambda {
|
|
60
|
+
[6,2,1,5].should =~ [4,1,2,3]
|
|
61
|
+
}.should fail_with(<<-MESSAGE)
|
|
62
|
+
expected collection contained: [1, 2, 3, 4]
|
|
63
|
+
actual collection contained: [1, 2, 5, 6]
|
|
64
|
+
the missing elements were: [3, 4]
|
|
65
|
+
the extra elements were: [5, 6]
|
|
66
|
+
MESSAGE
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "should not sort items in the error message if they don't all respond to <=>" do
|
|
70
|
+
with_ruby 1.8 do
|
|
71
|
+
lambda {
|
|
72
|
+
[UnsortableObject.new(2), UnsortableObject.new(1)].should =~ [UnsortableObject.new(4), UnsortableObject.new(3)]
|
|
73
|
+
}.should fail_with(<<-MESSAGE)
|
|
74
|
+
expected collection contained: [4, 3]
|
|
75
|
+
actual collection contained: [2, 1]
|
|
76
|
+
the missing elements were: [4, 3]
|
|
77
|
+
the extra elements were: [2, 1]
|
|
78
|
+
MESSAGE
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it "should accurately report extra elements when there are duplicates" do
|
|
83
|
+
lambda {
|
|
84
|
+
[1,1,1,5].should =~ [1,5]
|
|
85
|
+
}.should fail_with(<<-MESSAGE)
|
|
86
|
+
expected collection contained: [1, 5]
|
|
87
|
+
actual collection contained: [1, 1, 1, 5]
|
|
88
|
+
the extra elements were: [1, 1]
|
|
89
|
+
MESSAGE
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it "should accurately report missing elements when there are duplicates" do
|
|
93
|
+
lambda {
|
|
94
|
+
[1,5].should =~ [1,1,5]
|
|
95
|
+
}.should fail_with(<<-MESSAGE)
|
|
96
|
+
expected collection contained: [1, 1, 5]
|
|
97
|
+
actual collection contained: [1, 5]
|
|
98
|
+
the missing elements were: [1]
|
|
99
|
+
MESSAGE
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
it "should work with subclasses of Array" do
|
|
103
|
+
class SuperArray < Array; end
|
|
104
|
+
SuperArray.new([1,2,3]).should =~ SuperArray.new([3,2,1])
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
describe "should_not =~ [:with, :multiple, :args]" do
|
|
110
|
+
it "should not be supported" do
|
|
111
|
+
lambda {
|
|
112
|
+
[1,2,3].should_not =~ [1,2,3]
|
|
113
|
+
}.should fail_with(/Matcher does not support should_not/)
|
|
114
|
+
end
|
|
115
|
+
end
|
|
@@ -1,37 +1,57 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe "should match(expected)" do
|
|
4
4
|
it "should pass when target (String) matches expected (Regexp)" do
|
|
5
5
|
"string".should match(/tri/)
|
|
6
6
|
end
|
|
7
7
|
|
|
8
|
-
it "should
|
|
8
|
+
it "should pass when target (String) matches expected (String)" do
|
|
9
|
+
"string".should match("tri")
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should fail when target (String) does not match expected (Regexp)" do
|
|
9
13
|
lambda {
|
|
10
14
|
"string".should match(/rings/)
|
|
11
15
|
}.should fail
|
|
12
16
|
end
|
|
13
17
|
|
|
18
|
+
it "should fail when target (String) does not match expected (String)" do
|
|
19
|
+
lambda {
|
|
20
|
+
"string".should match("rings")
|
|
21
|
+
}.should fail
|
|
22
|
+
end
|
|
23
|
+
|
|
14
24
|
it "should provide message, expected and actual on failure" do
|
|
15
25
|
matcher = match(/rings/)
|
|
16
26
|
matcher.matches?("string")
|
|
17
|
-
matcher.
|
|
27
|
+
matcher.failure_message_for_should.should == "expected \"string\" to match /rings/"
|
|
18
28
|
end
|
|
19
29
|
end
|
|
20
30
|
|
|
21
31
|
describe "should_not match(expected)" do
|
|
22
|
-
it "should pass when target (String) matches
|
|
32
|
+
it "should pass when target (String) matches does not match (Regexp)" do
|
|
23
33
|
"string".should_not match(/rings/)
|
|
24
34
|
end
|
|
25
35
|
|
|
36
|
+
it "should pass when target (String) matches does not match (String)" do
|
|
37
|
+
"string".should_not match("rings")
|
|
38
|
+
end
|
|
39
|
+
|
|
26
40
|
it "should fail when target (String) matches expected (Regexp)" do
|
|
27
41
|
lambda {
|
|
28
42
|
"string".should_not match(/tri/)
|
|
29
43
|
}.should fail
|
|
30
44
|
end
|
|
31
45
|
|
|
46
|
+
it "should fail when target (String) matches expected (String)" do
|
|
47
|
+
lambda {
|
|
48
|
+
"string".should_not match("tri")
|
|
49
|
+
}.should fail
|
|
50
|
+
end
|
|
51
|
+
|
|
32
52
|
it "should provide message, expected and actual on failure" do
|
|
33
53
|
matcher = match(/tri/)
|
|
34
54
|
matcher.matches?("string")
|
|
35
|
-
matcher.
|
|
55
|
+
matcher.failure_message_for_should_not.should == "expected \"string\" not to match /tri/"
|
|
36
56
|
end
|
|
37
57
|
end
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
class UnexpectedError < StandardError; end
|
|
4
|
+
|
|
5
|
+
module Spec
|
|
6
|
+
module Matchers
|
|
7
|
+
describe Matcher do
|
|
8
|
+
context "without overrides" do
|
|
9
|
+
before(:each) do
|
|
10
|
+
@matcher = Spec::Matchers::Matcher.new(:be_a_multiple_of, 3) do |multiple|
|
|
11
|
+
match do |actual|
|
|
12
|
+
actual % multiple == 0
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "provides a default description" do
|
|
18
|
+
@matcher.description.should == "be a multiple of 3"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "provides a default failure message for #should" do
|
|
22
|
+
@matcher.matches?(8)
|
|
23
|
+
@matcher.failure_message_for_should.should == "expected 8 to be a multiple of 3"
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "provides a default failure message for #should_not" do
|
|
27
|
+
@matcher.matches?(9)
|
|
28
|
+
@matcher.failure_message_for_should_not.should == "expected 9 not to be a multiple of 3"
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "is not diffable by default" do
|
|
33
|
+
matcher = Spec::Matchers::Matcher.new(:name) {}
|
|
34
|
+
matcher.should_not be_diffable
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "is diffable when told to be" do
|
|
38
|
+
matcher = Spec::Matchers::Matcher.new(:name) { diffable }
|
|
39
|
+
matcher.should be_diffable
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "provides expected" do
|
|
43
|
+
matcher = Spec::Matchers::Matcher.new(:name, 'expected string') {}
|
|
44
|
+
matcher.expected.should == ['expected string']
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "provides actual" do
|
|
48
|
+
matcher = Spec::Matchers::Matcher.new(:name, 'expected string') do
|
|
49
|
+
match {|actual|}
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
matcher.matches?('actual string')
|
|
53
|
+
|
|
54
|
+
matcher.actual.should == 'actual string'
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
context "wrapping another expectation (should == ...)" do
|
|
58
|
+
it "returns true if the wrapped expectation passes" do
|
|
59
|
+
matcher = Spec::Matchers::Matcher.new(:name, 'value') do |expected|
|
|
60
|
+
match do |actual|
|
|
61
|
+
actual.should == expected
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
matcher.matches?('value').should be_true
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it "returns false if the wrapped expectation fails" do
|
|
68
|
+
matcher = Spec::Matchers::Matcher.new(:name, 'value') do |expected|
|
|
69
|
+
match do |actual|
|
|
70
|
+
actual.should == expected
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
matcher.matches?('other value').should be_false
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
context "with overrides" do
|
|
78
|
+
before(:each) do
|
|
79
|
+
@matcher = Spec::Matchers::Matcher.new(:be_boolean, true) do |boolean|
|
|
80
|
+
match do |actual|
|
|
81
|
+
actual
|
|
82
|
+
end
|
|
83
|
+
description do
|
|
84
|
+
"be the boolean #{boolean}"
|
|
85
|
+
end
|
|
86
|
+
failure_message_for_should do |actual|
|
|
87
|
+
"expected #{actual} to be the boolean #{boolean}"
|
|
88
|
+
end
|
|
89
|
+
failure_message_for_should_not do |actual|
|
|
90
|
+
"expected #{actual} not to be the boolean #{boolean}"
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
it "does not hide result of match block when true" do
|
|
96
|
+
@matcher.matches?(true).should be_true
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
it "does not hide result of match block when false" do
|
|
100
|
+
@matcher.matches?(false).should be_false
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
it "overrides the description" do
|
|
104
|
+
@matcher.description.should == "be the boolean true"
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it "overrides the failure message for #should" do
|
|
108
|
+
@matcher.matches?(false)
|
|
109
|
+
@matcher.failure_message_for_should.should == "expected false to be the boolean true"
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it "overrides the failure message for #should_not" do
|
|
113
|
+
@matcher.matches?(true)
|
|
114
|
+
@matcher.failure_message_for_should_not.should == "expected true not to be the boolean true"
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
context "#new" do
|
|
119
|
+
it "passes matches? arg to match block" do
|
|
120
|
+
matcher = Spec::Matchers::Matcher.new(:ignore) do
|
|
121
|
+
match do |actual|
|
|
122
|
+
actual == 5
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
matcher.matches?(5).should be_true
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
it "exposes arg submitted through #new to matcher block" do
|
|
129
|
+
matcher = Spec::Matchers::Matcher.new(:ignore, 4) do |expected|
|
|
130
|
+
match do |actual|
|
|
131
|
+
actual > expected
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
matcher.matches?(5).should be_true
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
context "with no args" do
|
|
139
|
+
before(:each) do
|
|
140
|
+
@matcher = Spec::Matchers::Matcher.new(:matcher_name) do
|
|
141
|
+
match do |actual|
|
|
142
|
+
actual == 5
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
it "matches" do
|
|
148
|
+
@matcher.matches?(5).should be_true
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
it "describes" do
|
|
152
|
+
@matcher.description.should == "matcher name"
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
context "with 1 arg" do
|
|
157
|
+
before(:each) do
|
|
158
|
+
@matcher = Spec::Matchers::Matcher.new(:matcher_name, 1) do |expected|
|
|
159
|
+
match do |actual|
|
|
160
|
+
actual == 5 && expected == 1
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
it "matches" do
|
|
166
|
+
@matcher.matches?(5).should be_true
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
it "describes" do
|
|
170
|
+
@matcher.description.should == "matcher name 1"
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
context "with multiple args" do
|
|
175
|
+
before(:each) do
|
|
176
|
+
@matcher = Spec::Matchers::Matcher.new(:matcher_name, 1, 2, 3, 4) do |a,b,c,d|
|
|
177
|
+
match do |sum|
|
|
178
|
+
a + b + c + d == sum
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
it "matches" do
|
|
184
|
+
@matcher.matches?(10).should be_true
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
it "describes" do
|
|
188
|
+
@matcher.description.should == "matcher name 1, 2, 3, and 4"
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
it "supports helper methods" do
|
|
193
|
+
matcher = Spec::Matchers::Matcher.new(:be_similar_to, [1,2,3]) do |sample|
|
|
194
|
+
match do |actual|
|
|
195
|
+
similar?(sample, actual)
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
def similar?(a, b)
|
|
199
|
+
a.sort == b.sort
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
matcher.matches?([2,3,1]).should be_true
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
it "supports fluent interface" do
|
|
207
|
+
matcher = Spec::Matchers::Matcher.new(:first_word) do
|
|
208
|
+
def second_word
|
|
209
|
+
self
|
|
210
|
+
end
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
matcher.second_word.should == matcher
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
it "treats method missing normally for undeclared methods" do
|
|
217
|
+
matcher = Spec::Matchers::Matcher.new(:ignore) { }
|
|
218
|
+
expect { matcher.non_existent_method }.to raise_error(NoMethodError)
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
it "has access to other matchers" do
|
|
222
|
+
matcher = Spec::Matchers::Matcher.new(:ignore, 3) do |expected|
|
|
223
|
+
match do |actual|
|
|
224
|
+
extend Spec::Matchers
|
|
225
|
+
actual.should eql(5 + expected)
|
|
226
|
+
end
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
matcher.matches?(8).should be_true
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
describe "#match_unless_raises" do
|
|
233
|
+
context "with a passing assertion" do
|
|
234
|
+
let(:mod) do
|
|
235
|
+
Module.new do
|
|
236
|
+
def assert_equal(a,b)
|
|
237
|
+
a == b ? nil : (raise UnexpectedError.new("#{a} does not equal #{b}"))
|
|
238
|
+
end
|
|
239
|
+
end
|
|
240
|
+
end
|
|
241
|
+
let(:matcher) do
|
|
242
|
+
m = mod
|
|
243
|
+
Spec::Matchers::Matcher.new :equal, 4 do |expected|
|
|
244
|
+
extend m
|
|
245
|
+
match_unless_raises UnexpectedError do
|
|
246
|
+
assert_equal expected, actual
|
|
247
|
+
end
|
|
248
|
+
end
|
|
249
|
+
end
|
|
250
|
+
it "passes as you would expect" do
|
|
251
|
+
matcher.matches?(4).should be_true
|
|
252
|
+
end
|
|
253
|
+
it "fails as you would expect" do
|
|
254
|
+
matcher.matches?(5).should be_false
|
|
255
|
+
end
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
context "with an unexpected error" do
|
|
259
|
+
let(:matcher) do
|
|
260
|
+
Spec::Matchers::Matcher.new :foo, :bar do |expected|
|
|
261
|
+
match_unless_raises SyntaxError do |actual|
|
|
262
|
+
raise "unexpected exception"
|
|
263
|
+
end
|
|
264
|
+
end
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
it "raises the error" do
|
|
268
|
+
expect do
|
|
269
|
+
matcher.matches?(:bar)
|
|
270
|
+
end.to raise_error("unexpected exception")
|
|
271
|
+
end
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
it "can define chainable methods" do
|
|
277
|
+
matcher = Spec::Matchers::Matcher.new(:name) do
|
|
278
|
+
chain(:expecting) do |expected_value|
|
|
279
|
+
@expected_value = expected_value
|
|
280
|
+
end
|
|
281
|
+
match { |actual| actual == @expected_value }
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
matcher.expecting('value').matches?('value').should be_true
|
|
285
|
+
matcher.expecting('value').matches?('other value').should be_false
|
|
286
|
+
end
|
|
287
|
+
end
|
|
288
|
+
end
|
|
289
|
+
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'spec_helper'
|
|
2
2
|
|
|
3
|
-
require 'spec/
|
|
3
|
+
require 'spec/runner/differs/default'
|
|
4
4
|
|
|
5
5
|
describe "should ==" do
|
|
6
6
|
|
|
@@ -10,12 +10,17 @@ describe "should ==" do
|
|
|
10
10
|
subject.should == "apple"
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
+
it "should return true on success" do
|
|
14
|
+
subject = "apple"
|
|
15
|
+
(subject.should == "apple").should be_true
|
|
16
|
+
end
|
|
17
|
+
|
|
13
18
|
it "should fail when target.==(actual) returns false" do
|
|
14
19
|
subject = "apple"
|
|
15
|
-
Spec::Expectations.should_receive(:fail_with).with(%[expected "orange"
|
|
20
|
+
Spec::Expectations.should_receive(:fail_with).with(%[expected: "orange",\n got: "apple" (using ==)], "orange", "apple")
|
|
16
21
|
subject.should == "orange"
|
|
17
22
|
end
|
|
18
|
-
|
|
23
|
+
|
|
19
24
|
end
|
|
20
25
|
|
|
21
26
|
describe "should_not ==" do
|
|
@@ -26,12 +31,17 @@ describe "should_not ==" do
|
|
|
26
31
|
subject.should_not == "apple"
|
|
27
32
|
end
|
|
28
33
|
|
|
34
|
+
it "should return true on success" do
|
|
35
|
+
subject = "apple"
|
|
36
|
+
(subject.should_not == "orange").should be_false
|
|
37
|
+
end
|
|
38
|
+
|
|
29
39
|
it "should fail when target.==(actual) returns false" do
|
|
30
40
|
subject = "apple"
|
|
31
|
-
Spec::Expectations.should_receive(:fail_with).with(%[expected not == "apple"
|
|
41
|
+
Spec::Expectations.should_receive(:fail_with).with(%[expected not: == "apple",\n got: "apple"], "apple", "apple")
|
|
32
42
|
subject.should_not == "apple"
|
|
33
43
|
end
|
|
34
|
-
|
|
44
|
+
|
|
35
45
|
end
|
|
36
46
|
|
|
37
47
|
describe "should ===" do
|
|
@@ -45,10 +55,10 @@ describe "should ===" do
|
|
|
45
55
|
it "should fail when target.===(actual) returns false" do
|
|
46
56
|
subject = "apple"
|
|
47
57
|
subject.should_receive(:===).with("orange").and_return(false)
|
|
48
|
-
Spec::Expectations.should_receive(:fail_with).with(%[expected "orange"
|
|
58
|
+
Spec::Expectations.should_receive(:fail_with).with(%[expected: "orange",\n got: "apple" (using ===)], "orange", "apple")
|
|
49
59
|
subject.should === "orange"
|
|
50
60
|
end
|
|
51
|
-
|
|
61
|
+
|
|
52
62
|
end
|
|
53
63
|
|
|
54
64
|
describe "should_not ===" do
|
|
@@ -62,7 +72,7 @@ describe "should_not ===" do
|
|
|
62
72
|
it "should fail when target.===(actual) returns false" do
|
|
63
73
|
subject = "apple"
|
|
64
74
|
subject.should_receive(:===).with("apple").and_return(true)
|
|
65
|
-
Spec::Expectations.should_receive(:fail_with).with(%[expected not === "apple"
|
|
75
|
+
Spec::Expectations.should_receive(:fail_with).with(%[expected not: === "apple",\n got: "apple"], "apple", "apple")
|
|
66
76
|
subject.should_not === "apple"
|
|
67
77
|
end
|
|
68
78
|
|
|
@@ -79,7 +89,7 @@ describe "should =~" do
|
|
|
79
89
|
it "should fail when target.=~(actual) returns false" do
|
|
80
90
|
subject = "fu"
|
|
81
91
|
subject.should_receive(:=~).with(/oo/).and_return(false)
|
|
82
|
-
Spec::Expectations.should_receive(:fail_with).with(%[expected
|
|
92
|
+
Spec::Expectations.should_receive(:fail_with).with(%[expected: /oo/,\n got: "fu" (using =~)], /oo/, "fu")
|
|
83
93
|
subject.should =~ /oo/
|
|
84
94
|
end
|
|
85
95
|
|
|
@@ -96,7 +106,7 @@ describe "should_not =~" do
|
|
|
96
106
|
it "should fail when target.=~(actual) returns false" do
|
|
97
107
|
subject = "foo"
|
|
98
108
|
subject.should_receive(:=~).with(/oo/).and_return(true)
|
|
99
|
-
Spec::Expectations.should_receive(:fail_with).with(%[expected not =~ /oo
|
|
109
|
+
Spec::Expectations.should_receive(:fail_with).with(%[expected not: =~ /oo/,\n got: "foo"], /oo/, "foo")
|
|
100
110
|
subject.should_not =~ /oo/
|
|
101
111
|
end
|
|
102
112
|
|
|
@@ -109,7 +119,7 @@ describe "should >" do
|
|
|
109
119
|
end
|
|
110
120
|
|
|
111
121
|
it "should fail if > fails" do
|
|
112
|
-
Spec::Expectations.should_receive(:fail_with).with(%[expected > 5
|
|
122
|
+
Spec::Expectations.should_receive(:fail_with).with(%[expected: > 5,\n got: 4], 5, 4)
|
|
113
123
|
4.should > 5
|
|
114
124
|
end
|
|
115
125
|
|
|
@@ -123,7 +133,7 @@ describe "should >=" do
|
|
|
123
133
|
end
|
|
124
134
|
|
|
125
135
|
it "should fail if > fails" do
|
|
126
|
-
Spec::Expectations.should_receive(:fail_with).with(%[expected >= 5
|
|
136
|
+
Spec::Expectations.should_receive(:fail_with).with(%[expected: >= 5,\n got: 4], 5, 4)
|
|
127
137
|
4.should >= 5
|
|
128
138
|
end
|
|
129
139
|
|
|
@@ -136,7 +146,7 @@ describe "should <" do
|
|
|
136
146
|
end
|
|
137
147
|
|
|
138
148
|
it "should fail if > fails" do
|
|
139
|
-
Spec::Expectations.should_receive(:fail_with).with(%[expected < 3
|
|
149
|
+
Spec::Expectations.should_receive(:fail_with).with(%[expected: < 3,\n got: 4], 3, 4)
|
|
140
150
|
4.should < 3
|
|
141
151
|
end
|
|
142
152
|
|
|
@@ -150,9 +160,32 @@ describe "should <=" do
|
|
|
150
160
|
end
|
|
151
161
|
|
|
152
162
|
it "should fail if > fails" do
|
|
153
|
-
Spec::Expectations.should_receive(:fail_with).with(%[expected <= 3
|
|
163
|
+
Spec::Expectations.should_receive(:fail_with).with(%[expected: <= 3,\n got: 4], 3, 4)
|
|
154
164
|
4.should <= 3
|
|
155
165
|
end
|
|
156
166
|
|
|
157
167
|
end
|
|
158
168
|
|
|
169
|
+
describe Spec::Matchers::PositiveOperatorMatcher do
|
|
170
|
+
|
|
171
|
+
it "should work when the target has implemented #send" do
|
|
172
|
+
o = Object.new
|
|
173
|
+
def o.send(*args); raise "DOH! Library developers shouldn't use #send!" end
|
|
174
|
+
lambda {
|
|
175
|
+
o.should == o
|
|
176
|
+
}.should_not raise_error
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
describe Spec::Matchers::NegativeOperatorMatcher do
|
|
182
|
+
|
|
183
|
+
it "should work when the target has implemented #send" do
|
|
184
|
+
o = Object.new
|
|
185
|
+
def o.send(*args); raise "DOH! Library developers shouldn't use #send!" end
|
|
186
|
+
lambda {
|
|
187
|
+
o.should_not == :foo
|
|
188
|
+
}.should_not raise_error
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
end
|