rspec 1.0.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +7 -0
- data/History.rdoc +1546 -0
- data/{MIT-LICENSE → License.txt} +3 -1
- data/Manifest.txt +384 -0
- data/README.rdoc +41 -0
- data/Rakefile +94 -229
- data/Ruby1.9.rdoc +31 -0
- data/TODO.txt +17 -0
- data/Upgrade.rdoc +260 -0
- data/bin/autospec +4 -0
- data/bin/spec +5 -3
- data/cucumber.yml +5 -0
- data/examples/failing/README.txt +11 -0
- data/examples/failing/diffing_spec.rb +36 -0
- data/examples/failing/failing_implicit_docstrings_example.rb +17 -0
- data/examples/failing/failure_in_after.rb +10 -0
- data/examples/failing/failure_in_before.rb +10 -0
- data/examples/failing/mocking_example.rb +38 -0
- data/examples/failing/mocking_with_flexmock.rb +26 -0
- data/examples/failing/mocking_with_mocha.rb +25 -0
- data/examples/failing/mocking_with_rr.rb +27 -0
- data/examples/failing/partial_mock_example.rb +18 -0
- data/examples/failing/pending_example.rb +7 -0
- data/examples/failing/predicate_example.rb +32 -0
- data/examples/failing/raising_example.rb +47 -0
- data/examples/failing/syntax_error_example.rb +7 -0
- data/examples/failing/team_spec.rb +41 -0
- data/examples/failing/timeout_behaviour.rb +5 -0
- data/examples/{custom_formatter.rb → passing/custom_formatter.rb} +1 -1
- data/examples/passing/dynamic_spec.rb +7 -0
- data/examples/{file_accessor.rb → passing/file_accessor.rb} +18 -18
- data/examples/{file_accessor_spec.rb → passing/file_accessor_spec.rb} +37 -38
- data/examples/passing/filtered_formatter.rb +17 -0
- data/examples/passing/filtered_formatter_example.rb +31 -0
- data/examples/{greeter_spec.rb → passing/greeter_spec.rb} +1 -1
- data/examples/passing/helper_method_example.rb +12 -0
- data/examples/passing/implicit_docstrings_example.rb +16 -0
- data/examples/{io_processor.rb → passing/io_processor.rb} +8 -8
- data/examples/{io_processor_spec.rb → passing/io_processor_spec.rb} +2 -3
- data/examples/{mocking_example.rb → passing/mocking_example.rb} +0 -2
- data/examples/{multi_threaded_behaviour_runner.rb → passing/multi_threaded_example_group_runner.rb} +10 -9
- data/examples/passing/nested_classes_example.rb +35 -0
- data/examples/passing/options_example.rb +29 -0
- data/examples/passing/options_formatter.rb +20 -0
- data/examples/{partial_mock_example.rb → passing/partial_mock_example.rb} +2 -3
- data/examples/passing/pending_example.rb +18 -0
- data/examples/{predicate_example.rb → passing/predicate_example.rb} +1 -3
- data/examples/{shared_behaviours_example.rb → passing/shared_example_group_example.rb} +15 -11
- data/examples/passing/shared_stack_examples.rb +36 -0
- data/examples/passing/simple_matcher_example.rb +29 -0
- data/examples/{stack.rb → passing/stack.rb} +1 -1
- data/examples/{stack_spec.rb → passing/stack_spec.rb} +6 -40
- data/examples/passing/stack_spec_with_nested_example_groups.rb +66 -0
- data/examples/{stubbing_example.rb → passing/stubbing_example.rb} +1 -3
- data/examples/passing/yielding_example.rb +31 -0
- data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +85 -0
- data/features/before_and_after_blocks/before_and_after_blocks.feature +167 -0
- data/features/command_line/line_number_option.feature +56 -0
- data/features/command_line/line_number_option_with_example_with_no_name.feature +22 -0
- data/features/example_groups/define_example_attribute.feature +41 -0
- data/features/example_groups/example_group_with_should_methods.feature +29 -0
- data/features/example_groups/implicit_docstrings.feature +59 -0
- data/features/example_groups/nested_groups.feature +32 -0
- data/features/expectations/customized_message.feature +54 -0
- data/features/expectations/expect_change.feature +65 -0
- data/features/expectations/expect_error.feature +44 -0
- data/features/extensions/custom_example_group.feature +19 -0
- data/features/formatters/custom_formatter.feature +30 -0
- data/features/formatters/nested_formatter.feature +32 -0
- data/features/interop/cucumber_stubs_dont_leak.feature +11 -0
- data/features/interop/examples_and_tests_together.feature +84 -0
- data/features/interop/rspec_output.feature +25 -0
- data/features/interop/test_but_not_test_unit.feature +26 -0
- data/features/interop/test_case_with_should_methods.feature +46 -0
- data/features/load_paths/add_lib_to_load_path.feature +20 -0
- data/features/load_paths/add_spec_to_load_path.feature +20 -0
- data/features/matchers/define_diffable_matcher.feature +26 -0
- data/features/matchers/define_matcher.feature +179 -0
- data/features/matchers/define_matcher_outside_rspec.feature +38 -0
- data/features/matchers/define_matcher_with_fluent_interface.feature +48 -0
- data/features/matchers/define_wrapped_matcher.feature +56 -0
- data/features/matchers/match_unless_raises.feature +60 -0
- data/features/matchers/match_unless_raises_unexpected_error.feature +39 -0
- data/features/mock_framework_integration/use_flexmock.feature +27 -0
- data/features/mock_framework_integration/use_mocha.feature +27 -0
- data/features/mock_framework_integration/use_rr.feature +27 -0
- data/features/mocks/block_local_expectations.feature +62 -0
- data/features/mocks/mix_stubs_and_mocks.feature +22 -0
- data/features/mocks/stub_implementation.feature +26 -0
- data/features/pending/pending_examples.feature +81 -0
- data/features/runner/specify_line_number.feature +32 -0
- data/features/spec_helper/spec_helper.feature +25 -0
- data/features/step_definitions/running_rspec_steps.rb +52 -0
- data/features/step_definitions/stubbing_steps.rb +16 -0
- data/features/subject/explicit_subject.feature +31 -0
- data/features/subject/implicit_subject.feature +43 -0
- data/features/support/env.rb +83 -0
- data/features/support/matchers/smart_match.rb +31 -0
- data/geminstaller.yml +29 -0
- data/init.rb +9 -0
- data/lib/autotest/discover.rb +3 -0
- data/lib/autotest/rspec.rb +54 -0
- data/lib/spec/adapters/mock_frameworks/flexmock.rb +24 -0
- data/{plugins → lib/spec/adapters}/mock_frameworks/mocha.rb +8 -4
- data/lib/spec/adapters/mock_frameworks/rr.rb +22 -0
- data/lib/spec/adapters/mock_frameworks/rspec.rb +21 -0
- data/lib/spec/autorun.rb +3 -0
- data/lib/spec/deprecation.rb +41 -0
- data/lib/spec/dsl/main.rb +93 -0
- data/lib/spec/dsl.rb +1 -10
- data/lib/spec/example/args_and_options.rb +27 -0
- data/lib/spec/example/before_and_after_hooks.rb +93 -0
- data/lib/spec/example/errors.rb +25 -0
- data/lib/spec/example/example_group.rb +10 -0
- data/lib/spec/example/example_group_factory.rb +82 -0
- data/lib/spec/example/example_group_hierarchy.rb +53 -0
- data/lib/spec/example/example_group_methods.rb +287 -0
- data/lib/spec/example/example_group_proxy.rb +61 -0
- data/lib/spec/example/example_matcher.rb +43 -0
- data/lib/spec/example/example_methods.rb +152 -0
- data/lib/spec/example/example_proxy.rb +41 -0
- data/lib/spec/example/module_reopening_fix.rb +43 -0
- data/lib/spec/example/pending.rb +18 -0
- data/lib/spec/example/predicate_matchers.rb +46 -0
- data/lib/spec/example/shared_example_group.rb +59 -0
- data/lib/spec/example/subject.rb +114 -0
- data/lib/spec/example.rb +164 -0
- data/lib/spec/expectations/errors.rb +7 -1
- data/lib/spec/expectations/extensions/kernel.rb +52 -0
- data/lib/spec/expectations/extensions.rb +1 -2
- data/lib/spec/expectations/fail_with.rb +45 -0
- data/lib/spec/expectations/handler.rb +37 -30
- data/lib/spec/expectations.rb +2 -23
- data/lib/spec/extensions/instance_exec.rb +31 -0
- data/lib/spec/interop/test/unit/autorunner.rb +6 -0
- data/lib/spec/interop/test/unit/testcase.rb +56 -0
- data/lib/spec/interop/test/unit/testresult.rb +6 -0
- data/lib/spec/interop/test/unit/testsuite_adapter.rb +36 -0
- data/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
- data/lib/spec/interop/test.rb +44 -0
- data/lib/spec/matchers/be.rb +183 -140
- data/lib/spec/matchers/be_close.rb +18 -23
- data/lib/spec/matchers/be_instance_of.rb +26 -0
- data/lib/spec/matchers/be_kind_of.rb +26 -0
- data/lib/spec/matchers/change.rb +72 -41
- data/lib/spec/matchers/compatibility.rb +14 -0
- data/lib/spec/matchers/dsl.rb +20 -0
- data/lib/spec/matchers/eql.rb +25 -26
- data/lib/spec/matchers/equal.rb +35 -25
- data/lib/spec/matchers/errors.rb +5 -0
- data/lib/spec/matchers/exist.rb +16 -0
- data/lib/spec/matchers/generated_descriptions.rb +36 -0
- data/lib/spec/matchers/has.rb +17 -26
- data/lib/spec/matchers/have.rb +36 -24
- data/lib/spec/matchers/include.rb +22 -48
- data/lib/spec/matchers/match.rb +11 -31
- data/lib/spec/matchers/match_array.rb +71 -0
- data/lib/spec/matchers/matcher.rb +132 -0
- data/lib/spec/matchers/method_missing.rb +9 -0
- data/lib/spec/matchers/operator_matcher.rb +55 -44
- data/lib/spec/matchers/pretty.rb +37 -0
- data/lib/spec/matchers/raise_exception.rb +131 -0
- data/lib/spec/matchers/respond_to.rb +35 -9
- data/lib/spec/matchers/satisfy.rb +2 -2
- data/lib/spec/matchers/simple_matcher.rb +134 -0
- data/lib/spec/matchers/throw_symbol.rb +56 -31
- data/lib/spec/matchers/wrap_expectation.rb +55 -0
- data/lib/spec/matchers.rb +104 -48
- data/lib/spec/mocks/argument_expectation.rb +28 -112
- data/lib/spec/mocks/argument_matchers.rb +237 -0
- data/lib/spec/mocks/error_generator.rb +20 -13
- data/lib/spec/mocks/errors.rb +1 -1
- data/lib/spec/mocks/example_methods.rb +69 -0
- data/lib/spec/mocks/extensions.rb +1 -0
- data/lib/spec/mocks/framework.rb +15 -0
- data/lib/spec/mocks/message_expectation.rb +206 -93
- data/lib/spec/mocks/methods.rb +66 -7
- data/lib/spec/mocks/mock.rb +53 -11
- data/lib/spec/mocks/proxy.rb +160 -55
- data/lib/spec/mocks/space.rb +2 -2
- data/lib/spec/mocks.rb +14 -23
- data/lib/spec/rake/spectask.rb +108 -53
- data/lib/spec/rake/verify_rcov.rb +4 -4
- data/lib/spec/ruby.rb +9 -0
- data/lib/spec/runner/backtrace_tweaker.rb +45 -23
- data/lib/spec/runner/class_and_arguments_parser.rb +14 -0
- data/lib/spec/runner/command_line.rb +7 -14
- data/lib/spec/runner/configuration.rb +202 -0
- data/lib/spec/runner/differs/default.rb +93 -0
- data/lib/spec/runner/differs/load-diff-lcs.rb +12 -0
- data/lib/spec/runner/drb_command_line.rb +18 -7
- data/lib/spec/runner/example_group_runner.rb +58 -0
- data/lib/spec/runner/extensions/kernel.rb +5 -46
- data/lib/spec/runner/formatter/base_formatter.rb +97 -26
- data/lib/spec/runner/formatter/base_text_formatter.rb +79 -39
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +25 -0
- data/lib/spec/runner/formatter/failing_examples_formatter.rb +6 -8
- data/lib/spec/runner/formatter/html_formatter.rb +101 -75
- data/lib/spec/runner/formatter/nested_text_formatter.rb +50 -0
- data/lib/spec/runner/formatter/no_op_method_missing.rb +21 -0
- data/lib/spec/runner/formatter/profile_formatter.rb +47 -0
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +11 -8
- data/lib/spec/runner/formatter/silent_formatter.rb +10 -0
- data/lib/spec/runner/formatter/snippet_extractor.rb +2 -2
- data/lib/spec/runner/formatter/specdoc_formatter.rb +20 -15
- data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
- data/lib/spec/runner/heckle_runner.rb +56 -56
- data/lib/spec/runner/{heckle_runner_win.rb → heckle_runner_unsupported.rb} +10 -10
- data/lib/spec/runner/line_number_query.rb +78 -0
- data/lib/spec/runner/option_parser.rb +147 -148
- data/lib/spec/runner/options.rb +343 -95
- data/lib/spec/runner/reporter.rb +117 -60
- data/lib/spec/runner.rb +39 -138
- data/lib/spec/stubs/cucumber.rb +5 -0
- data/lib/spec/test/unit.rb +10 -0
- data/lib/spec/version.rb +14 -22
- data/lib/spec.rb +5 -10
- data/resources/helpers/cmdline.rb +8 -0
- data/resources/rake/examples.rake +7 -0
- data/resources/rake/examples_with_rcov.rake +9 -0
- data/resources/rake/failing_examples_with_html.rake +9 -0
- data/resources/rake/verify_rcov.rake +7 -0
- data/spec/README.jruby +15 -0
- data/spec/autotest/autotest_helper.rb +8 -0
- data/spec/autotest/autotest_matchers.rb +38 -0
- data/spec/autotest/discover_spec.rb +8 -0
- data/spec/autotest/failed_results_re_spec.rb +31 -0
- data/spec/autotest/rspec_spec.rb +126 -0
- data/spec/ruby_forker.rb +13 -0
- data/spec/spec/dsl/main_spec.rb +103 -0
- data/spec/spec/example/example_group_class_definition_spec.rb +51 -0
- data/spec/spec/example/example_group_factory_spec.rb +180 -0
- data/spec/spec/example/example_group_methods_spec.rb +778 -0
- data/spec/spec/example/example_group_proxy_spec.rb +107 -0
- data/spec/spec/example/example_group_spec.rb +632 -0
- data/spec/spec/example/example_matcher_spec.rb +85 -0
- data/spec/spec/example/example_methods_spec.rb +162 -0
- data/spec/spec/example/example_proxy_spec.rb +57 -0
- data/spec/spec/example/helper_method_spec.rb +24 -0
- data/spec/spec/{dsl/behaviour_eval_spec.rb → example/nested_example_group_spec.rb} +25 -3
- data/spec/spec/example/pending_module_spec.rb +58 -0
- data/spec/spec/example/predicate_matcher_spec.rb +41 -0
- data/spec/spec/example/shared_example_group_spec.rb +257 -0
- data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
- data/spec/spec/example/subject_spec.rb +110 -0
- data/spec/spec/expectations/differs/default_spec.rb +100 -13
- data/spec/spec/expectations/extensions/{object_spec.rb → kernel_spec.rb} +13 -14
- data/spec/spec/expectations/fail_with_spec.rb +42 -17
- data/spec/spec/expectations/handler_spec.rb +206 -0
- data/spec/spec/expectations/wrap_expectation_spec.rb +31 -0
- data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
- data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
- data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
- data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
- data/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb +22 -0
- data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
- data/spec/spec/interop/test/unit/spec_spec.rb +48 -0
- data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +18 -0
- data/spec/spec/interop/test/unit/testcase_spec.rb +50 -0
- data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
- data/spec/spec/matchers/be_close_spec.rb +32 -21
- data/spec/spec/matchers/be_instance_of_spec.rb +36 -0
- data/spec/spec/matchers/be_kind_of_spec.rb +33 -0
- data/spec/spec/matchers/be_spec.rb +261 -10
- data/spec/spec/matchers/change_spec.rb +178 -61
- data/spec/spec/matchers/compatibility_spec.rb +28 -0
- data/spec/spec/matchers/description_generation_spec.rb +47 -46
- data/spec/spec/matchers/dsl_spec.rb +34 -0
- data/spec/spec/matchers/eql_spec.rb +14 -9
- data/spec/spec/matchers/equal_spec.rb +43 -14
- data/spec/spec/matchers/exist_spec.rb +41 -24
- data/spec/spec/matchers/has_spec.rb +154 -1
- data/spec/spec/matchers/have_spec.rb +311 -189
- data/spec/spec/matchers/include_spec.rb +45 -2
- data/spec/spec/matchers/match_array_spec.rb +115 -0
- data/spec/spec/matchers/match_spec.rb +25 -5
- data/spec/spec/matchers/matcher_spec.rb +289 -0
- data/spec/spec/matchers/matchers_spec.rb +2 -0
- data/spec/spec/matchers/operator_matcher_spec.rb +48 -15
- data/spec/spec/matchers/raise_exception_spec.rb +345 -0
- data/spec/spec/matchers/respond_to_spec.rb +78 -16
- data/spec/spec/matchers/satisfy_spec.rb +1 -1
- data/spec/spec/matchers/simple_matcher_spec.rb +100 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +111 -41
- data/spec/spec/mocks/and_yield_spec.rb +117 -0
- data/spec/spec/mocks/any_number_of_times_spec.rb +9 -2
- data/spec/spec/mocks/argument_expectation_spec.rb +19 -15
- data/spec/spec/mocks/argument_matchers_spec.rb +19 -0
- data/spec/spec/mocks/at_least_spec.rb +2 -2
- data/spec/spec/mocks/at_most_spec.rb +3 -3
- data/spec/spec/mocks/bug_report_10260_spec.rb +1 -1
- data/spec/spec/mocks/bug_report_10263_spec.rb +27 -0
- data/spec/spec/mocks/bug_report_11545_spec.rb +32 -0
- data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
- data/spec/spec/mocks/bug_report_496_spec.rb +17 -0
- data/spec/spec/mocks/bug_report_600_spec.rb +22 -0
- data/spec/spec/mocks/bug_report_7611_spec.rb +2 -2
- data/spec/spec/mocks/bug_report_7805_spec.rb +2 -2
- data/spec/spec/mocks/bug_report_8165_spec.rb +4 -4
- data/spec/spec/mocks/bug_report_8302_spec.rb +2 -2
- data/spec/spec/mocks/bug_report_830_spec.rb +21 -0
- data/spec/spec/mocks/double_spec.rb +12 -0
- data/spec/spec/mocks/failing_argument_matchers_spec.rb +95 -0
- data/spec/spec/mocks/hash_including_matcher_spec.rb +90 -0
- data/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
- data/spec/spec/mocks/mock_ordering_spec.rb +15 -5
- data/spec/spec/mocks/mock_space_spec.rb +1 -1
- data/spec/spec/mocks/mock_spec.rb +346 -129
- data/spec/spec/mocks/multiple_return_value_spec.rb +9 -9
- data/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
- data/spec/spec/mocks/null_object_mock_spec.rb +15 -1
- data/spec/spec/mocks/once_counts_spec.rb +2 -2
- data/spec/spec/mocks/options_hash_spec.rb +19 -17
- data/spec/spec/mocks/partial_mock_spec.rb +124 -12
- data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +2 -2
- data/spec/spec/mocks/passing_argument_matchers_spec.rb +145 -0
- data/spec/spec/mocks/precise_counts_spec.rb +2 -2
- data/spec/spec/mocks/record_messages_spec.rb +2 -2
- data/spec/spec/mocks/stub_chain_spec.rb +42 -0
- data/spec/spec/mocks/stub_implementation_spec.rb +31 -0
- data/spec/spec/mocks/stub_spec.rb +147 -103
- data/spec/spec/mocks/stubbed_message_expectations_spec.rb +26 -0
- data/spec/spec/mocks/twice_counts_spec.rb +2 -2
- data/spec/spec/mocks/unstub_spec.rb +127 -0
- data/spec/spec/package/bin_spec_spec.rb +11 -7
- data/spec/spec/rake/spectask_spec.rb +150 -0
- data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
- data/spec/spec/runner/command_line_spec.rb +158 -29
- data/spec/spec/runner/configuration_spec.rb +320 -0
- data/spec/spec/runner/drb_command_line_spec.rb +137 -72
- data/spec/spec/runner/empty_file.txt +0 -0
- data/spec/spec/runner/example_group_runner_spec.rb +26 -0
- data/spec/spec/runner/examples.txt +2 -0
- data/spec/spec/runner/failed.txt +3 -0
- data/spec/spec/runner/formatter/base_formatter_spec.rb +30 -0
- data/spec/spec/runner/formatter/base_text_formatter_spec.rb +113 -0
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +17 -12
- data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +377 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +377 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.7.html +377 -0
- data/spec/spec/runner/formatter/html_formatted-1.9.1.html +377 -0
- data/spec/spec/runner/formatter/html_formatter_spec.rb +112 -52
- data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +329 -0
- data/spec/spec/runner/formatter/profile_formatter_spec.rb +70 -0
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +87 -16
- data/spec/spec/runner/formatter/snippet_extractor_spec.rb +14 -7
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +153 -50
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +371 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +371 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +371 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +371 -0
- data/spec/spec/runner/formatter/text_mate_formatter_spec.rb +106 -0
- data/spec/spec/runner/heckle_runner_spec.rb +32 -17
- data/spec/spec/runner/heckler_spec.rb +17 -11
- data/spec/spec/runner/line_number_query/line_number_query_fixture.rb +70 -0
- data/spec/spec/runner/line_number_query_spec.rb +129 -0
- data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +27 -21
- data/spec/spec/runner/option_parser_spec.rb +367 -164
- data/spec/spec/runner/options_spec.rb +506 -94
- data/spec/spec/runner/output_one_time_fixture.rb +7 -0
- data/spec/spec/runner/output_one_time_fixture_runner.rb +7 -0
- data/spec/spec/runner/output_one_time_spec.rb +15 -0
- data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +94 -27
- data/spec/spec/runner/reporter_spec.rb +212 -121
- data/spec/spec/runner/resources/a_bar.rb +0 -0
- data/spec/spec/runner/resources/a_foo.rb +0 -0
- data/spec/spec/runner/resources/a_spec.rb +1 -0
- data/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
- data/spec/spec/runner/resources/utf8_encoded.rb +8 -0
- data/spec/spec/runner/spec.opts +2 -0
- data/spec/spec/runner/spec_drb.opts +2 -0
- data/spec/spec/runner/spec_spaced.opts +2 -0
- data/spec/spec/runner_spec.rb +13 -0
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +87 -45
- data/spec/support/macros.rb +29 -0
- data/spec/{spec → support}/spec_classes.rb +26 -4
- metadata +461 -141
- data/CHANGES +0 -748
- data/EXAMPLES.rd +0 -108
- data/README +0 -70
- data/UPGRADE +0 -31
- data/bin/spec_translator +0 -8
- data/examples/auto_spec_description_example.rb +0 -19
- data/examples/before_and_after_example.rb +0 -39
- data/examples/behave_as_example.rb +0 -45
- data/examples/dynamic_spec.rb +0 -9
- data/examples/helper_method_example.rb +0 -11
- data/examples/legacy_spec.rb +0 -10
- data/examples/not_yet_implemented_spec.rb +0 -12
- data/examples/priority.txt +0 -1
- data/examples/spec_helper.rb +0 -1
- data/examples/test_case_adapter_example.rb +0 -26
- data/examples/test_case_spec.rb +0 -65
- data/lib/spec/dsl/behaviour.rb +0 -204
- data/lib/spec/dsl/behaviour_callbacks.rb +0 -77
- data/lib/spec/dsl/behaviour_eval.rb +0 -177
- data/lib/spec/dsl/behaviour_factory.rb +0 -42
- data/lib/spec/dsl/composite_proc_builder.rb +0 -28
- data/lib/spec/dsl/configuration.rb +0 -119
- data/lib/spec/dsl/description.rb +0 -46
- data/lib/spec/dsl/example.rb +0 -127
- data/lib/spec/dsl/example_matcher.rb +0 -28
- data/lib/spec/dsl/example_should_raise_handler.rb +0 -74
- data/lib/spec/expectations/differs/default.rb +0 -61
- data/lib/spec/expectations/extensions/object.rb +0 -66
- data/lib/spec/expectations/extensions/string_and_symbol.rb +0 -17
- data/lib/spec/extensions/object.rb +0 -6
- data/lib/spec/extensions.rb +0 -1
- data/lib/spec/matchers/raise_error.rb +0 -100
- data/lib/spec/mocks/argument_constraint_matchers.rb +0 -12
- data/lib/spec/mocks/spec_methods.rb +0 -30
- data/lib/spec/runner/behaviour_runner.rb +0 -102
- data/lib/spec/runner/extensions/object.rb +0 -32
- data/lib/spec/runner/formatter/failing_behaviours_formatter.rb +0 -25
- data/lib/spec/runner/formatter/rdoc_formatter.rb +0 -24
- data/lib/spec/runner/formatter.rb +0 -9
- data/lib/spec/runner/spec_parser.rb +0 -50
- data/lib/spec/test_case_adapter.rb +0 -10
- data/lib/spec/translator.rb +0 -106
- data/plugins/mock_frameworks/flexmock.rb +0 -27
- data/plugins/mock_frameworks/rspec.rb +0 -18
- data/spec/spec/dsl/behaviour_factory_spec.rb +0 -30
- data/spec/spec/dsl/behaviour_spec.rb +0 -604
- data/spec/spec/dsl/composite_proc_builder_spec.rb +0 -57
- data/spec/spec/dsl/configuration_spec.rb +0 -50
- data/spec/spec/dsl/description_spec.rb +0 -81
- data/spec/spec/dsl/example_class_spec.rb +0 -24
- data/spec/spec/dsl/example_instance_spec.rb +0 -162
- data/spec/spec/dsl/example_should_raise_spec.rb +0 -137
- data/spec/spec/dsl/predicate_matcher_spec.rb +0 -21
- data/spec/spec/dsl/shared_behaviour_spec.rb +0 -208
- data/spec/spec/matchers/handler_spec.rb +0 -88
- data/spec/spec/matchers/matcher_methods_spec.rb +0 -78
- data/spec/spec/matchers/raise_error_spec.rb +0 -147
- data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +0 -73
- data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +0 -92
- data/spec/spec/runner/behaviour_runner_spec.rb +0 -118
- data/spec/spec/runner/context_matching_spec.rb +0 -27
- data/spec/spec/runner/execution_context_spec.rb +0 -31
- data/spec/spec/runner/extensions/kernel_spec.rb +0 -36
- data/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +0 -27
- data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +0 -21
- data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +0 -36
- data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +0 -19
- data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +0 -46
- data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +0 -21
- data/spec/spec/runner/object_ext_spec.rb +0 -11
- data/spec/spec/runner/spec_matcher_spec.rb +0 -102
- data/spec/spec/runner/spec_parser_spec.rb +0 -93
- data/spec/spec/translator_spec.rb +0 -216
- /data/examples/{custom_expectation_matchers.rb → passing/custom_matchers.rb} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#Based on patch from Wilson Bilkovich
|
|
2
2
|
|
|
3
|
-
require
|
|
3
|
+
require 'spec_helper'
|
|
4
4
|
class SomethingExpected
|
|
5
5
|
attr_accessor :some_value
|
|
6
6
|
end
|
|
@@ -12,13 +12,17 @@ describe "should change(actual, message)" do
|
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
it "should pass when actual is modified by the block" do
|
|
15
|
-
|
|
15
|
+
expect {@instance.some_value = 6}.to change(@instance, :some_value)
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
it "should fail when actual is not modified by the block" do
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
end.
|
|
19
|
+
expect do
|
|
20
|
+
expect {}.to change(@instance, :some_value)
|
|
21
|
+
end.to fail_with("some_value should have changed, but is still 5")
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "provides a #description" do
|
|
25
|
+
change(@instance, :some_value).description.should == "change #some_value"
|
|
22
26
|
end
|
|
23
27
|
end
|
|
24
28
|
|
|
@@ -29,13 +33,13 @@ describe "should_not change(actual, message)" do
|
|
|
29
33
|
end
|
|
30
34
|
|
|
31
35
|
it "should pass when actual is not modified by the block" do
|
|
32
|
-
|
|
36
|
+
expect { }.to_not change(@instance, :some_value)
|
|
33
37
|
end
|
|
34
38
|
|
|
35
39
|
it "should fail when actual is not modified by the block" do
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
end.
|
|
40
|
+
expect do
|
|
41
|
+
expect {@instance.some_value = 6}.to_not change(@instance, :some_value)
|
|
42
|
+
end.to fail_with("some_value should not have changed, but did change from 5 to 6")
|
|
39
43
|
end
|
|
40
44
|
end
|
|
41
45
|
|
|
@@ -46,20 +50,23 @@ describe "should change { block }" do
|
|
|
46
50
|
end
|
|
47
51
|
|
|
48
52
|
it "should pass when actual is modified by the block" do
|
|
49
|
-
|
|
53
|
+
expect {@instance.some_value = 6}.to change { @instance.some_value }
|
|
50
54
|
end
|
|
51
55
|
|
|
52
56
|
it "should fail when actual is not modified by the block" do
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
end.
|
|
57
|
+
expect do
|
|
58
|
+
expect {}.to change{ @instance.some_value }
|
|
59
|
+
end.to fail_with("result should have changed, but is still 5")
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "should warn if passed a block using do/end instead of {}" do
|
|
63
|
+
expect do
|
|
64
|
+
expect {}.to change do; end
|
|
65
|
+
end.to raise_error(Spec::Matchers::MatcherError, /block passed to should or should_not/)
|
|
56
66
|
end
|
|
57
67
|
|
|
58
|
-
it "
|
|
59
|
-
|
|
60
|
-
lambda {}.should change do
|
|
61
|
-
end
|
|
62
|
-
end.should raise_error(Spec::Matchers::MatcherError, /block passed to should or should_not/)
|
|
68
|
+
it "provides a #description" do
|
|
69
|
+
change { @instance.some_value }.description.should == "change #result"
|
|
63
70
|
end
|
|
64
71
|
end
|
|
65
72
|
|
|
@@ -70,20 +77,19 @@ describe "should_not change { block }" do
|
|
|
70
77
|
end
|
|
71
78
|
|
|
72
79
|
it "should pass when actual is modified by the block" do
|
|
73
|
-
|
|
80
|
+
expect {}.to_not change{ @instance.some_value }
|
|
74
81
|
end
|
|
75
82
|
|
|
76
83
|
it "should fail when actual is not modified by the block" do
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
end.
|
|
84
|
+
expect do
|
|
85
|
+
expect {@instance.some_value = 6}.to_not change { @instance.some_value }
|
|
86
|
+
end.to fail_with("result should not have changed, but did change from 5 to 6")
|
|
80
87
|
end
|
|
81
88
|
|
|
82
|
-
it "should warn if passed a block using do/end" do
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
end.should raise_error(Spec::Matchers::MatcherError, /block passed to should or should_not/)
|
|
89
|
+
it "should warn if passed a block using do/end instead of {}" do
|
|
90
|
+
expect do
|
|
91
|
+
expect {}.to_not change do; end
|
|
92
|
+
end.to raise_error(Spec::Matchers::MatcherError, /block passed to should or should_not/)
|
|
87
93
|
end
|
|
88
94
|
end
|
|
89
95
|
|
|
@@ -94,19 +100,19 @@ describe "should change(actual, message).by(expected)" do
|
|
|
94
100
|
end
|
|
95
101
|
|
|
96
102
|
it "should pass when attribute is changed by expected amount" do
|
|
97
|
-
|
|
103
|
+
expect { @instance.some_value += 1 }.to change(@instance, :some_value).by(1)
|
|
98
104
|
end
|
|
99
105
|
|
|
100
106
|
it "should fail when the attribute is changed by unexpected amount" do
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
end.
|
|
107
|
+
expect do
|
|
108
|
+
expect { @instance.some_value += 2 }.to change(@instance, :some_value).by(1)
|
|
109
|
+
end.to fail_with("some_value should have been changed by 1, but was changed by 2")
|
|
104
110
|
end
|
|
105
111
|
|
|
106
112
|
it "should fail when the attribute is changed by unexpected amount in the opposite direction" do
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
end.
|
|
113
|
+
expect do
|
|
114
|
+
expect { @instance.some_value -= 1 }.to change(@instance, :some_value).by(1)
|
|
115
|
+
end.to fail_with("some_value should have been changed by 1, but was changed by -1")
|
|
110
116
|
end
|
|
111
117
|
end
|
|
112
118
|
|
|
@@ -117,19 +123,106 @@ describe "should change{ block }.by(expected)" do
|
|
|
117
123
|
end
|
|
118
124
|
|
|
119
125
|
it "should pass when attribute is changed by expected amount" do
|
|
120
|
-
|
|
126
|
+
expect { @instance.some_value += 1 }.to change{@instance.some_value}.by(1)
|
|
121
127
|
end
|
|
122
128
|
|
|
123
129
|
it "should fail when the attribute is changed by unexpected amount" do
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
end.
|
|
130
|
+
expect do
|
|
131
|
+
expect { @instance.some_value += 2 }.to change{@instance.some_value}.by(1)
|
|
132
|
+
end.to fail_with("result should have been changed by 1, but was changed by 2")
|
|
127
133
|
end
|
|
128
134
|
|
|
129
135
|
it "should fail when the attribute is changed by unexpected amount in the opposite direction" do
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
end.
|
|
136
|
+
expect do
|
|
137
|
+
expect { @instance.some_value -= 1 }.to change{@instance.some_value}.by(1)
|
|
138
|
+
end.to fail_with("result should have been changed by 1, but was changed by -1")
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
describe "should change(actual, message).by_at_least(expected)" do
|
|
143
|
+
before(:each) do
|
|
144
|
+
@instance = SomethingExpected.new
|
|
145
|
+
@instance.some_value = 5
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
it "should pass when attribute is changed by greater than the expected amount" do
|
|
149
|
+
expect { @instance.some_value += 2 }.to change(@instance, :some_value).by_at_least(1)
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
it "should pass when attribute is changed by the expected amount" do
|
|
153
|
+
expect { @instance.some_value += 2 }.to change(@instance, :some_value).by_at_least(2)
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
it "should fail when the attribute is changed by less than the expected amount" do
|
|
157
|
+
expect do
|
|
158
|
+
expect { @instance.some_value += 1 }.to change(@instance, :some_value).by_at_least(2)
|
|
159
|
+
end.to fail_with("some_value should have been changed by at least 2, but was changed by 1")
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
describe "should change{ block }.by_at_least(expected)" do
|
|
165
|
+
before(:each) do
|
|
166
|
+
@instance = SomethingExpected.new
|
|
167
|
+
@instance.some_value = 5
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
it "should pass when attribute is changed by greater than expected amount" do
|
|
171
|
+
expect { @instance.some_value += 2 }.to change{@instance.some_value}.by_at_least(1)
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
it "should pass when attribute is changed by the expected amount" do
|
|
175
|
+
expect { @instance.some_value += 2 }.to change{@instance.some_value}.by_at_least(2)
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
it "should fail when the attribute is changed by less than the unexpected amount" do
|
|
179
|
+
expect do
|
|
180
|
+
expect { @instance.some_value += 1 }.to change{@instance.some_value}.by_at_least(2)
|
|
181
|
+
end.to fail_with("result should have been changed by at least 2, but was changed by 1")
|
|
182
|
+
end
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
describe "should change(actual, message).by_at_most(expected)" do
|
|
187
|
+
before(:each) do
|
|
188
|
+
@instance = SomethingExpected.new
|
|
189
|
+
@instance.some_value = 5
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
it "should pass when attribute is changed by less than the expected amount" do
|
|
193
|
+
expect { @instance.some_value += 2 }.to change(@instance, :some_value).by_at_most(3)
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
it "should pass when attribute is changed by the expected amount" do
|
|
197
|
+
expect { @instance.some_value += 2 }.to change(@instance, :some_value).by_at_most(2)
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
it "should fail when the attribute is changed by greater than the expected amount" do
|
|
201
|
+
expect do
|
|
202
|
+
expect { @instance.some_value += 2 }.to change(@instance, :some_value).by_at_most(1)
|
|
203
|
+
end.to fail_with("some_value should have been changed by at most 1, but was changed by 2")
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
describe "should change{ block }.by_at_most(expected)" do
|
|
209
|
+
before(:each) do
|
|
210
|
+
@instance = SomethingExpected.new
|
|
211
|
+
@instance.some_value = 5
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
it "should pass when attribute is changed by less than expected amount" do
|
|
215
|
+
expect { @instance.some_value += 2 }.to change{@instance.some_value}.by_at_most(3)
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
it "should pass when attribute is changed by the expected amount" do
|
|
219
|
+
expect { @instance.some_value += 2 }.to change{@instance.some_value}.by_at_most(2)
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
it "should fail when the attribute is changed by greater than the unexpected amount" do
|
|
223
|
+
expect do
|
|
224
|
+
expect { @instance.some_value += 2 }.to change{@instance.some_value}.by_at_most(1)
|
|
225
|
+
end.to fail_with("result should have been changed by at most 1, but was changed by 2")
|
|
133
226
|
end
|
|
134
227
|
end
|
|
135
228
|
|
|
@@ -140,13 +233,13 @@ describe "should change(actual, message).from(old)" do
|
|
|
140
233
|
end
|
|
141
234
|
|
|
142
235
|
it "should pass when attribute is == to expected value before executing block" do
|
|
143
|
-
|
|
236
|
+
expect { @instance.some_value = "astring" }.to change(@instance, :some_value).from("string")
|
|
144
237
|
end
|
|
145
238
|
|
|
146
239
|
it "should fail when attribute is not == to expected value before executing block" do
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
end.
|
|
240
|
+
expect do
|
|
241
|
+
expect { @instance.some_value = "knot" }.to change(@instance, :some_value).from("cat")
|
|
242
|
+
end.to fail_with("some_value should have initially been \"cat\", but was \"string\"")
|
|
150
243
|
end
|
|
151
244
|
end
|
|
152
245
|
|
|
@@ -157,13 +250,13 @@ describe "should change{ block }.from(old)" do
|
|
|
157
250
|
end
|
|
158
251
|
|
|
159
252
|
it "should pass when attribute is == to expected value before executing block" do
|
|
160
|
-
|
|
253
|
+
expect { @instance.some_value = "astring" }.to change{@instance.some_value}.from("string")
|
|
161
254
|
end
|
|
162
255
|
|
|
163
256
|
it "should fail when attribute is not == to expected value before executing block" do
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
end.
|
|
257
|
+
expect do
|
|
258
|
+
expect { @instance.some_value = "knot" }.to change{@instance.some_value}.from("cat")
|
|
259
|
+
end.to fail_with("result should have initially been \"cat\", but was \"string\"")
|
|
167
260
|
end
|
|
168
261
|
end
|
|
169
262
|
|
|
@@ -174,13 +267,13 @@ describe "should change(actual, message).to(new)" do
|
|
|
174
267
|
end
|
|
175
268
|
|
|
176
269
|
it "should pass when attribute is == to expected value after executing block" do
|
|
177
|
-
|
|
270
|
+
expect { @instance.some_value = "cat" }.to change(@instance, :some_value).to("cat")
|
|
178
271
|
end
|
|
179
272
|
|
|
180
273
|
it "should fail when attribute is not == to expected value after executing block" do
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
end.
|
|
274
|
+
expect do
|
|
275
|
+
expect { @instance.some_value = "cat" }.to change(@instance, :some_value).from("string").to("dog")
|
|
276
|
+
end.to fail_with("some_value should have been changed to \"dog\", but is now \"cat\"")
|
|
184
277
|
end
|
|
185
278
|
end
|
|
186
279
|
|
|
@@ -191,13 +284,13 @@ describe "should change{ block }.to(new)" do
|
|
|
191
284
|
end
|
|
192
285
|
|
|
193
286
|
it "should pass when attribute is == to expected value after executing block" do
|
|
194
|
-
|
|
287
|
+
expect { @instance.some_value = "cat" }.to change{@instance.some_value}.to("cat")
|
|
195
288
|
end
|
|
196
289
|
|
|
197
290
|
it "should fail when attribute is not == to expected value after executing block" do
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
end.
|
|
291
|
+
expect do
|
|
292
|
+
expect { @instance.some_value = "cat" }.to change{@instance.some_value}.from("string").to("dog")
|
|
293
|
+
end.to fail_with("result should have been changed to \"dog\", but is now \"cat\"")
|
|
201
294
|
end
|
|
202
295
|
end
|
|
203
296
|
|
|
@@ -208,11 +301,23 @@ describe "should change(actual, message).from(old).to(new)" do
|
|
|
208
301
|
end
|
|
209
302
|
|
|
210
303
|
it "should pass when #to comes before #from" do
|
|
211
|
-
|
|
304
|
+
expect { @instance.some_value = "cat" }.to change(@instance, :some_value).to("cat").from("string")
|
|
212
305
|
end
|
|
213
306
|
|
|
214
307
|
it "should pass when #from comes before #to" do
|
|
215
|
-
|
|
308
|
+
expect { @instance.some_value = "cat" }.to change(@instance, :some_value).from("string").to("cat")
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
it "should show the correct messaging when #after and #to are different" do
|
|
312
|
+
expect do
|
|
313
|
+
expect { @instance.some_value = "cat" }.to change(@instance, :some_value).from("string").to("dog")
|
|
314
|
+
end.to fail_with("some_value should have been changed to \"dog\", but is now \"cat\"")
|
|
315
|
+
end
|
|
316
|
+
|
|
317
|
+
it "should show the correct messaging when #before and #from are different" do
|
|
318
|
+
expect do
|
|
319
|
+
expect { @instance.some_value = "cat" }.to change(@instance, :some_value).from("not_string").to("cat")
|
|
320
|
+
end.to fail_with("some_value should have initially been \"not_string\", but was \"string\"")
|
|
216
321
|
end
|
|
217
322
|
end
|
|
218
323
|
|
|
@@ -223,10 +328,22 @@ describe "should change{ block }.from(old).to(new)" do
|
|
|
223
328
|
end
|
|
224
329
|
|
|
225
330
|
it "should pass when #to comes before #from" do
|
|
226
|
-
|
|
331
|
+
expect { @instance.some_value = "cat" }.to change{@instance.some_value}.to("cat").from("string")
|
|
227
332
|
end
|
|
228
333
|
|
|
229
334
|
it "should pass when #from comes before #to" do
|
|
230
|
-
|
|
335
|
+
expect { @instance.some_value = "cat" }.to change{@instance.some_value}.from("string").to("cat")
|
|
336
|
+
end
|
|
337
|
+
end
|
|
338
|
+
|
|
339
|
+
describe Spec::Matchers::Change do
|
|
340
|
+
it "should work when the receiver has implemented #send" do
|
|
341
|
+
@instance = SomethingExpected.new
|
|
342
|
+
@instance.some_value = "string"
|
|
343
|
+
def @instance.send(*args); raise "DOH! Library developers shouldn't use #send!" end
|
|
344
|
+
|
|
345
|
+
expect {
|
|
346
|
+
expect { @instance.some_value = "cat" }.to change(@instance, :some_value)
|
|
347
|
+
}.to_not raise_error
|
|
231
348
|
end
|
|
232
349
|
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
Spec::Matchers.define :have_public_instance_method do |method|
|
|
4
|
+
match do |klass|
|
|
5
|
+
klass.public_instance_methods.any? {|m| [method, method.to_sym].include?(m)}
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
(Spec::Matchers.constants.sort).each do |c|
|
|
10
|
+
if (Class === (klass = Spec::Matchers.const_get(c)))
|
|
11
|
+
describe klass do
|
|
12
|
+
if klass.public_instance_methods.any? {|m| ['failure_message_for_should',:failure_message_for_should].include?(m)}
|
|
13
|
+
describe "called with should" do
|
|
14
|
+
subject { klass }
|
|
15
|
+
it { should have_public_instance_method('failure_message_for_should')}
|
|
16
|
+
it { should have_public_instance_method('failure_message')}
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
if klass.public_instance_methods.any? {|m| ['failure_message_for_should_not',:failure_message_for_should_not].include?(m)}
|
|
20
|
+
describe "called with should not" do
|
|
21
|
+
subject { klass }
|
|
22
|
+
it { should have_public_instance_method('failure_message_for_should_not')}
|
|
23
|
+
it { should have_public_instance_method('negative_failure_message')}
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -1,148 +1,139 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe "Matchers should be able to generate their own descriptions" do
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
@callback = lambda { |desc| @desc = desc }
|
|
7
|
-
Spec::Matchers.description_generated(@callback)
|
|
4
|
+
after(:each) do
|
|
5
|
+
Spec::Matchers.clear_generated_description
|
|
8
6
|
end
|
|
9
|
-
|
|
7
|
+
|
|
10
8
|
it "should == expected" do
|
|
11
9
|
"this".should == "this"
|
|
12
|
-
|
|
10
|
+
Spec::Matchers.generated_description.should == "should == \"this\""
|
|
13
11
|
end
|
|
14
12
|
|
|
15
13
|
it "should not == expected" do
|
|
16
14
|
"this".should_not == "that"
|
|
17
|
-
|
|
15
|
+
Spec::Matchers.generated_description.should == "should not == \"that\""
|
|
18
16
|
end
|
|
19
17
|
|
|
20
18
|
it "should be empty (arbitrary predicate)" do
|
|
21
19
|
[].should be_empty
|
|
22
|
-
|
|
20
|
+
Spec::Matchers.generated_description.should == "should be empty"
|
|
23
21
|
end
|
|
24
22
|
|
|
25
23
|
it "should not be empty (arbitrary predicate)" do
|
|
26
24
|
[1].should_not be_empty
|
|
27
|
-
|
|
25
|
+
Spec::Matchers.generated_description.should == "should not be empty"
|
|
28
26
|
end
|
|
29
27
|
|
|
30
28
|
it "should be true" do
|
|
31
29
|
true.should be_true
|
|
32
|
-
|
|
30
|
+
Spec::Matchers.generated_description.should == "should be true"
|
|
33
31
|
end
|
|
34
32
|
|
|
35
33
|
it "should be false" do
|
|
36
34
|
false.should be_false
|
|
37
|
-
|
|
35
|
+
Spec::Matchers.generated_description.should == "should be false"
|
|
38
36
|
end
|
|
39
37
|
|
|
40
38
|
it "should be nil" do
|
|
41
39
|
nil.should be_nil
|
|
42
|
-
|
|
40
|
+
Spec::Matchers.generated_description.should == "should be nil"
|
|
43
41
|
end
|
|
44
42
|
|
|
45
43
|
it "should be > n" do
|
|
46
44
|
5.should be > 3
|
|
47
|
-
|
|
45
|
+
Spec::Matchers.generated_description.should == "should be > 3"
|
|
48
46
|
end
|
|
49
47
|
|
|
50
48
|
it "should be predicate arg1, arg2 and arg3" do
|
|
51
49
|
5.0.should be_between(0,10)
|
|
52
|
-
|
|
50
|
+
Spec::Matchers.generated_description.should == "should be between 0 and 10"
|
|
53
51
|
end
|
|
54
52
|
|
|
55
|
-
it "should be_few_words predicate should be transformed to 'be few words'" do
|
|
56
|
-
5.should be_kind_of(Fixnum)
|
|
57
|
-
@desc.should == "should be kind of Fixnum"
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
it "should preserve a proper prefix for be predicate" do
|
|
61
|
-
5.should be_a_kind_of(Fixnum)
|
|
62
|
-
@desc.should == "should be a kind of Fixnum"
|
|
63
|
-
5.should be_an_instance_of(Fixnum)
|
|
64
|
-
@desc.should == "should be an instance of Fixnum"
|
|
65
|
-
end
|
|
66
|
-
|
|
67
53
|
it "should equal" do
|
|
68
54
|
expected = "expected"
|
|
69
55
|
expected.should equal(expected)
|
|
70
|
-
|
|
56
|
+
Spec::Matchers.generated_description.should == "should equal \"expected\""
|
|
71
57
|
end
|
|
72
58
|
|
|
73
59
|
it "should_not equal" do
|
|
74
60
|
5.should_not equal(37)
|
|
75
|
-
|
|
61
|
+
Spec::Matchers.generated_description.should == "should not equal 37"
|
|
76
62
|
end
|
|
77
63
|
|
|
78
64
|
it "should eql" do
|
|
79
65
|
"string".should eql("string")
|
|
80
|
-
|
|
66
|
+
Spec::Matchers.generated_description.should == "should eql \"string\""
|
|
81
67
|
end
|
|
82
68
|
|
|
83
69
|
it "should not eql" do
|
|
84
70
|
"a".should_not eql(:a)
|
|
85
|
-
|
|
71
|
+
Spec::Matchers.generated_description.should == "should not eql :a"
|
|
86
72
|
end
|
|
87
73
|
|
|
88
74
|
it "should have_key" do
|
|
89
75
|
{:a => "a"}.should have_key(:a)
|
|
90
|
-
|
|
76
|
+
Spec::Matchers.generated_description.should == "should have key :a"
|
|
91
77
|
end
|
|
92
78
|
|
|
93
79
|
it "should have n items" do
|
|
94
80
|
team.should have(3).players
|
|
95
|
-
|
|
81
|
+
Spec::Matchers.generated_description.should == "should have 3 players"
|
|
96
82
|
end
|
|
97
83
|
|
|
98
84
|
it "should have at least n items" do
|
|
99
85
|
team.should have_at_least(2).players
|
|
100
|
-
|
|
86
|
+
Spec::Matchers.generated_description.should == "should have at least 2 players"
|
|
101
87
|
end
|
|
102
88
|
|
|
103
89
|
it "should have at most n items" do
|
|
104
90
|
team.should have_at_most(4).players
|
|
105
|
-
|
|
91
|
+
Spec::Matchers.generated_description.should == "should have at most 4 players"
|
|
106
92
|
end
|
|
107
93
|
|
|
108
94
|
it "should include" do
|
|
109
95
|
[1,2,3].should include(3)
|
|
110
|
-
|
|
96
|
+
Spec::Matchers.generated_description.should == "should include 3"
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
it "array.should =~ [1,2,3]" do
|
|
100
|
+
[1,2,3].should =~ [1,2,3]
|
|
101
|
+
Spec::Matchers.generated_description.should == "should contain exactly 1, 2 and 3"
|
|
111
102
|
end
|
|
112
103
|
|
|
113
104
|
it "should match" do
|
|
114
105
|
"this string".should match(/this string/)
|
|
115
|
-
|
|
106
|
+
Spec::Matchers.generated_description.should == "should match /this string/"
|
|
116
107
|
end
|
|
117
108
|
|
|
118
109
|
it "should raise_error" do
|
|
119
110
|
lambda { raise }.should raise_error
|
|
120
|
-
|
|
111
|
+
Spec::Matchers.generated_description.should == "should raise Exception"
|
|
121
112
|
end
|
|
122
113
|
|
|
123
114
|
it "should raise_error with type" do
|
|
124
115
|
lambda { raise }.should raise_error(RuntimeError)
|
|
125
|
-
|
|
116
|
+
Spec::Matchers.generated_description.should == "should raise RuntimeError"
|
|
126
117
|
end
|
|
127
118
|
|
|
128
119
|
it "should raise_error with type and message" do
|
|
129
120
|
lambda { raise "there was an error" }.should raise_error(RuntimeError, "there was an error")
|
|
130
|
-
|
|
121
|
+
Spec::Matchers.generated_description.should == "should raise RuntimeError with \"there was an error\""
|
|
131
122
|
end
|
|
132
123
|
|
|
133
124
|
it "should respond_to" do
|
|
134
125
|
[].should respond_to(:insert)
|
|
135
|
-
|
|
126
|
+
Spec::Matchers.generated_description.should == "should respond to #insert"
|
|
136
127
|
end
|
|
137
128
|
|
|
138
129
|
it "should throw symbol" do
|
|
139
130
|
lambda { throw :what_a_mess }.should throw_symbol
|
|
140
|
-
|
|
131
|
+
Spec::Matchers.generated_description.should == "should throw a Symbol"
|
|
141
132
|
end
|
|
142
133
|
|
|
143
134
|
it "should throw symbol (with named symbol)" do
|
|
144
135
|
lambda { throw :what_a_mess }.should throw_symbol(:what_a_mess)
|
|
145
|
-
|
|
136
|
+
Spec::Matchers.generated_description.should == "should throw :what_a_mess"
|
|
146
137
|
end
|
|
147
138
|
|
|
148
139
|
def team
|
|
@@ -152,8 +143,18 @@ describe "Matchers should be able to generate their own descriptions" do
|
|
|
152
143
|
end
|
|
153
144
|
end.new
|
|
154
145
|
end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
describe "a Matcher with no description" do
|
|
149
|
+
def matcher
|
|
150
|
+
Class.new do
|
|
151
|
+
def matches?(ignore); true; end
|
|
152
|
+
def failure_message; ""; end
|
|
153
|
+
end.new
|
|
154
|
+
end
|
|
155
155
|
|
|
156
|
-
|
|
157
|
-
|
|
156
|
+
it "should provide a helpful message when used in a string-less example block" do
|
|
157
|
+
5.should matcher
|
|
158
|
+
Spec::Matchers.generated_description.should =~ /When you call.*description method/m
|
|
158
159
|
end
|
|
159
|
-
end
|
|
160
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Matchers
|
|
5
|
+
module DSL
|
|
6
|
+
describe "#create" do
|
|
7
|
+
it "is deprecated" do
|
|
8
|
+
Spec.should_receive(:deprecate)
|
|
9
|
+
mod = Module.new
|
|
10
|
+
mod.extend Spec::Matchers::DSL
|
|
11
|
+
mod.create(:foo)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe "#define" do
|
|
16
|
+
it "creates a method that initializes a new matcher with the submitted name and expected arg" do
|
|
17
|
+
# FIXME - this expects new to be called, but we need something
|
|
18
|
+
# more robust - that expects new to be called with a specific
|
|
19
|
+
# block (lambda, proc, whatever)
|
|
20
|
+
mod = Module.new
|
|
21
|
+
mod.extend Spec::Matchers::DSL
|
|
22
|
+
mod.define(:foo)
|
|
23
|
+
|
|
24
|
+
obj = Object.new
|
|
25
|
+
obj.extend mod
|
|
26
|
+
|
|
27
|
+
Spec::Matchers::Matcher.should_receive(:new).with(:foo, 3)
|
|
28
|
+
|
|
29
|
+
obj.foo(3)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|