rspec-instructure 1.3.3
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/.autotest +5 -0
- data/.document +7 -0
- data/.gitignore +15 -0
- data/Gemfile +20 -0
- data/History.rdoc +1565 -0
- data/License.txt +22 -0
- data/README.rdoc +44 -0
- data/Rakefile +110 -0
- 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 -0
- data/cucumber.yml +5 -0
- data/example_spec.rb +4 -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/passing/custom_formatter.rb +11 -0
- data/examples/passing/custom_matchers.rb +54 -0
- data/examples/passing/dynamic_spec.rb +7 -0
- data/examples/passing/file_accessor.rb +18 -0
- data/examples/passing/file_accessor_spec.rb +37 -0
- data/examples/passing/filtered_formatter.rb +17 -0
- data/examples/passing/filtered_formatter_example.rb +31 -0
- data/examples/passing/greeter_spec.rb +30 -0
- data/examples/passing/helper_method_example.rb +12 -0
- data/examples/passing/implicit_docstrings_example.rb +16 -0
- data/examples/passing/io_processor.rb +8 -0
- data/examples/passing/io_processor_spec.rb +20 -0
- data/examples/passing/mocking_example.rb +25 -0
- data/examples/passing/multi_threaded_example_group_runner.rb +26 -0
- 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/passing/partial_mock_example.rb +27 -0
- data/examples/passing/pending_example.rb +18 -0
- data/examples/passing/predicate_example.rb +25 -0
- data/examples/passing/shared_example_group_example.rb +43 -0
- data/examples/passing/shared_stack_examples.rb +36 -0
- data/examples/passing/simple_matcher_example.rb +29 -0
- data/examples/passing/stack.rb +36 -0
- data/examples/passing/stack_spec.rb +63 -0
- data/examples/passing/stack_spec_with_nested_example_groups.rb +66 -0
- data/examples/passing/stubbing_example.rb +67 -0
- data/examples/passing/yielding_example.rb +31 -0
- data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +85 -0
- data/features-pending/cli/conditional_exclusion.feature +39 -0
- data/features-pending/heckle/heckle.feature +56 -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 +37 -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/init.rb +9 -0
- data/lib/autotest/discover.rb +3 -0
- data/lib/autotest/rspec.rb +54 -0
- data/lib/spec.rb +8 -0
- data/lib/spec/adapters/mock_frameworks/flexmock.rb +24 -0
- data/lib/spec/adapters/mock_frameworks/mocha.rb +25 -0
- 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.rb +1 -0
- data/lib/spec/dsl/main.rb +93 -0
- data/lib/spec/example.rb +164 -0
- 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/expectations.rb +35 -0
- data/lib/spec/expectations/errors.rb +12 -0
- data/lib/spec/expectations/extensions.rb +1 -0
- data/lib/spec/expectations/extensions/kernel.rb +52 -0
- data/lib/spec/expectations/fail_with.rb +45 -0
- data/lib/spec/expectations/handler.rb +50 -0
- data/lib/spec/extensions/instance_exec.rb +31 -0
- data/lib/spec/interop/test.rb +44 -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/matchers.rb +214 -0
- data/lib/spec/matchers/be.rb +249 -0
- data/lib/spec/matchers/be_close.rb +32 -0
- 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 +151 -0
- data/lib/spec/matchers/compatibility.rb +14 -0
- data/lib/spec/matchers/dsl.rb +20 -0
- data/lib/spec/matchers/eql.rb +42 -0
- data/lib/spec/matchers/equal.rb +53 -0
- 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 +35 -0
- data/lib/spec/matchers/have.rb +152 -0
- data/lib/spec/matchers/include.rb +44 -0
- data/lib/spec/matchers/match.rb +21 -0
- 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 +83 -0
- data/lib/spec/matchers/pretty.rb +37 -0
- data/lib/spec/matchers/raise_exception.rb +131 -0
- data/lib/spec/matchers/respond_to.rb +71 -0
- data/lib/spec/matchers/satisfy.rb +47 -0
- data/lib/spec/matchers/simple_matcher.rb +134 -0
- data/lib/spec/matchers/throw_symbol.rb +100 -0
- data/lib/spec/matchers/wrap_expectation.rb +55 -0
- data/lib/spec/mocks.rb +200 -0
- data/lib/spec/mocks/argument_expectation.rb +51 -0
- data/lib/spec/mocks/argument_matchers.rb +237 -0
- data/lib/spec/mocks/error_generator.rb +92 -0
- data/lib/spec/mocks/errors.rb +10 -0
- data/lib/spec/mocks/example_methods.rb +69 -0
- data/lib/spec/mocks/extensions.rb +1 -0
- data/lib/spec/mocks/extensions/object.rb +3 -0
- data/lib/spec/mocks/framework.rb +15 -0
- data/lib/spec/mocks/message_expectation.rb +344 -0
- data/lib/spec/mocks/methods.rb +94 -0
- data/lib/spec/mocks/mock.rb +71 -0
- data/lib/spec/mocks/order_group.rb +29 -0
- data/lib/spec/mocks/proxy.rb +254 -0
- data/lib/spec/mocks/space.rb +28 -0
- data/lib/spec/rake/spectask.rb +230 -0
- data/lib/spec/rake/verify_rcov.rb +52 -0
- data/lib/spec/ruby.rb +9 -0
- data/lib/spec/runner.rb +66 -0
- data/lib/spec/runner/backtrace_tweaker.rb +78 -0
- data/lib/spec/runner/class_and_arguments_parser.rb +14 -0
- data/lib/spec/runner/command_line.rb +15 -0
- 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 +32 -0
- data/lib/spec/runner/example_group_runner.rb +62 -0
- data/lib/spec/runner/extensions/kernel.rb +9 -0
- data/lib/spec/runner/formatter/base_formatter.rb +139 -0
- data/lib/spec/runner/formatter/base_text_formatter.rb +142 -0
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +25 -0
- data/lib/spec/runner/formatter/failing_examples_formatter.rb +20 -0
- data/lib/spec/runner/formatter/html_formatter.rb +338 -0
- 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 +33 -0
- data/lib/spec/runner/formatter/silent_formatter.rb +10 -0
- data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
- data/lib/spec/runner/formatter/specdoc_formatter.rb +33 -0
- data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
- data/lib/spec/runner/heckle_runner.rb +77 -0
- data/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
- data/lib/spec/runner/line_number_query.rb +78 -0
- data/lib/spec/runner/option_parser.rb +225 -0
- data/lib/spec/runner/options.rb +406 -0
- data/lib/spec/runner/reporter.rb +171 -0
- data/lib/spec/stubs/cucumber.rb +5 -0
- data/lib/spec/test/unit.rb +10 -0
- data/lib/spec/version.rb +14 -0
- 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/rspec.gemspec +26 -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.opts +6 -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/example/nested_example_group_spec.rb +71 -0
- 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 +194 -0
- data/spec/spec/expectations/extensions/kernel_spec.rb +45 -0
- data/spec/spec/expectations/fail_with_spec.rb +96 -0
- 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 +50 -0
- 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 +460 -0
- data/spec/spec/matchers/change_spec.rb +349 -0
- data/spec/spec/matchers/compatibility_spec.rb +28 -0
- data/spec/spec/matchers/description_generation_spec.rb +160 -0
- data/spec/spec/matchers/dsl_spec.rb +34 -0
- data/spec/spec/matchers/eql_spec.rb +33 -0
- data/spec/spec/matchers/equal_spec.rb +57 -0
- data/spec/spec/matchers/exist_spec.rb +65 -0
- data/spec/spec/matchers/has_spec.rb +190 -0
- data/spec/spec/matchers/have_spec.rb +381 -0
- data/spec/spec/matchers/include_spec.rb +88 -0
- data/spec/spec/matchers/match_array_spec.rb +115 -0
- data/spec/spec/matchers/match_spec.rb +57 -0
- 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 +191 -0
- data/spec/spec/matchers/pretty_spec.rb +22 -0
- data/spec/spec/matchers/raise_exception_spec.rb +345 -0
- data/spec/spec/matchers/respond_to_spec.rb +116 -0
- data/spec/spec/matchers/satisfy_spec.rb +36 -0
- data/spec/spec/matchers/simple_matcher_spec.rb +100 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +121 -0
- data/spec/spec/mocks/and_yield_spec.rb +117 -0
- data/spec/spec/mocks/any_number_of_times_spec.rb +36 -0
- data/spec/spec/mocks/argument_expectation_spec.rb +23 -0
- data/spec/spec/mocks/argument_matchers_spec.rb +19 -0
- data/spec/spec/mocks/at_least_spec.rb +97 -0
- data/spec/spec/mocks/at_most_spec.rb +93 -0
- data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
- data/spec/spec/mocks/bug_report_10263_spec.rb +27 -0
- data/spec/spec/mocks/bug_report_1049_spec.rb +30 -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 +19 -0
- data/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
- data/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
- data/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
- data/spec/spec/mocks/bug_report_830_spec.rb +21 -0
- data/spec/spec/mocks/bug_report_957_spec.rb +22 -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 +94 -0
- data/spec/spec/mocks/mock_space_spec.rb +54 -0
- data/spec/spec/mocks/mock_spec.rb +601 -0
- data/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
- data/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
- data/spec/spec/mocks/null_object_mock_spec.rb +54 -0
- data/spec/spec/mocks/once_counts_spec.rb +53 -0
- data/spec/spec/mocks/options_hash_spec.rb +35 -0
- data/spec/spec/mocks/partial_mock_spec.rb +164 -0
- data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
- data/spec/spec/mocks/passing_argument_matchers_spec.rb +145 -0
- data/spec/spec/mocks/precise_counts_spec.rb +52 -0
- data/spec/spec/mocks/record_messages_spec.rb +26 -0
- 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 +203 -0
- data/spec/spec/mocks/stubbed_message_expectations_spec.rb +26 -0
- data/spec/spec/mocks/twice_counts_spec.rb +67 -0
- data/spec/spec/mocks/unstub_spec.rb +127 -0
- data/spec/spec/package/bin_spec_spec.rb +16 -0
- 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 +162 -0
- data/spec/spec/runner/configuration_spec.rb +320 -0
- data/spec/spec/runner/drb_command_line_spec.rb +146 -0
- 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 +33 -0
- 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_formatted-1.9.2.html +377 -0
- data/spec/spec/runner/formatter/html_formatter_spec.rb +118 -0
- 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 +149 -0
- data/spec/spec/runner/formatter/snippet_extractor_spec.rb +18 -0
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +159 -0
- 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_formatted-1.9.2.html +371 -0
- data/spec/spec/runner/formatter/text_mate_formatter_spec.rb +106 -0
- data/spec/spec/runner/heckle_runner_spec.rb +78 -0
- data/spec/spec/runner/heckler_spec.rb +20 -0
- 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 +51 -0
- data/spec/spec/runner/option_parser_spec.rb +552 -0
- data/spec/spec/runner/options_spec.rb +554 -0
- 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 +123 -0
- data/spec/spec/runner/reporter_spec.rb +244 -0
- 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_helper.rb +113 -0
- data/spec/support/macros.rb +29 -0
- data/spec/support/spec_classes.rb +133 -0
- metadata +727 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Expectations
|
|
3
|
+
class InvalidMatcherError < ArgumentError; end
|
|
4
|
+
|
|
5
|
+
class PositiveExpectationHandler
|
|
6
|
+
def self.handle_matcher(actual, matcher, message=nil, &block)
|
|
7
|
+
::Spec::Matchers.last_should = :should
|
|
8
|
+
::Spec::Matchers.last_matcher = matcher
|
|
9
|
+
return ::Spec::Matchers::PositiveOperatorMatcher.new(actual) if matcher.nil?
|
|
10
|
+
|
|
11
|
+
match = matcher.matches?(actual, &block)
|
|
12
|
+
return match if match
|
|
13
|
+
|
|
14
|
+
message ||= matcher.respond_to?(:failure_message_for_should) ?
|
|
15
|
+
matcher.failure_message_for_should :
|
|
16
|
+
matcher.failure_message
|
|
17
|
+
|
|
18
|
+
if matcher.respond_to?(:diffable?) && matcher.diffable?
|
|
19
|
+
::Spec::Expectations.fail_with message, matcher.expected.first, matcher.actual
|
|
20
|
+
else
|
|
21
|
+
::Spec::Expectations.fail_with message
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
class NegativeExpectationHandler
|
|
27
|
+
def self.handle_matcher(actual, matcher, message=nil, &block)
|
|
28
|
+
::Spec::Matchers.last_should = :should_not
|
|
29
|
+
::Spec::Matchers.last_matcher = matcher
|
|
30
|
+
return ::Spec::Matchers::NegativeOperatorMatcher.new(actual) if matcher.nil?
|
|
31
|
+
|
|
32
|
+
match = matcher.respond_to?(:does_not_match?) ?
|
|
33
|
+
!matcher.does_not_match?(actual, &block) :
|
|
34
|
+
matcher.matches?(actual, &block)
|
|
35
|
+
return match unless match
|
|
36
|
+
|
|
37
|
+
message ||= matcher.respond_to?(:failure_message_for_should_not) ?
|
|
38
|
+
matcher.failure_message_for_should_not :
|
|
39
|
+
matcher.negative_failure_message
|
|
40
|
+
|
|
41
|
+
if matcher.respond_to?(:diffable?) && matcher.diffable?
|
|
42
|
+
::Spec::Expectations.fail_with message, matcher.expected.first, matcher.actual
|
|
43
|
+
else
|
|
44
|
+
::Spec::Expectations.fail_with message
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Matchers
|
|
3
|
+
module InstanceExec
|
|
4
|
+
unless respond_to?(:instance_exec)
|
|
5
|
+
# based on Bounded Spec InstanceExec (Mauricio Fernandez)
|
|
6
|
+
# http://eigenclass.org/hiki/bounded+space+instance_exec
|
|
7
|
+
# - uses singleton_class of matcher instead of global
|
|
8
|
+
# InstanceExecHelper module
|
|
9
|
+
# - this keeps it scoped to this class only, which is the
|
|
10
|
+
# only place we need it
|
|
11
|
+
# - only necessary for ruby 1.8.6
|
|
12
|
+
def instance_exec(*args, &block)
|
|
13
|
+
singleton_class = (class << self; self; end)
|
|
14
|
+
begin
|
|
15
|
+
orig_critical, Thread.critical = Thread.critical, true
|
|
16
|
+
n = 0
|
|
17
|
+
n += 1 while respond_to?(method_name="__instance_exec#{n}")
|
|
18
|
+
singleton_class.module_eval{ define_method(:__instance_exec, &block) }
|
|
19
|
+
ensure
|
|
20
|
+
Thread.critical = orig_critical
|
|
21
|
+
end
|
|
22
|
+
begin
|
|
23
|
+
return send(:__instance_exec, *args)
|
|
24
|
+
ensure
|
|
25
|
+
singleton_class.module_eval{ remove_method(:__instance_exec) } rescue nil
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require 'spec'
|
|
2
|
+
|
|
3
|
+
if Spec::Ruby.version.to_f >= 1.9
|
|
4
|
+
gem 'test-unit','= 1.2.3'
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
require 'test/unit'
|
|
8
|
+
|
|
9
|
+
if Spec::Ruby.version.to_f >= 1.9
|
|
10
|
+
require 'test/unit/version'
|
|
11
|
+
if Test::Unit::VERSION > '1.2.3'
|
|
12
|
+
raise <<-MESSAGE
|
|
13
|
+
#{'*' * 50}
|
|
14
|
+
Required: test-unit-1.2.3
|
|
15
|
+
Loaded: test-unit-#{Test::Unit::VERSION}
|
|
16
|
+
|
|
17
|
+
With ruby-1.9, rspec-#{Spec::VERSION::STRING} requires test-unit-1.2.3, and
|
|
18
|
+
tries to force it with "gem 'test-unit', '= 1.2.3'" in:
|
|
19
|
+
|
|
20
|
+
#{__FILE__}
|
|
21
|
+
|
|
22
|
+
Unfortunately, test-unit-#{Test::Unit::VERSION} was loaded anyway. While we are
|
|
23
|
+
aware of this bug we have not been able to track down its source.
|
|
24
|
+
Until we do, you have two alternatives:
|
|
25
|
+
|
|
26
|
+
* uninstall test-unit-#{Test::Unit::VERSION}
|
|
27
|
+
* use 'script/spec' instead of 'rake spec'
|
|
28
|
+
#{'*' * 50}
|
|
29
|
+
MESSAGE
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
require 'test/unit/testresult'
|
|
35
|
+
|
|
36
|
+
require 'spec/interop/test/unit/testcase'
|
|
37
|
+
require 'spec/interop/test/unit/testsuite_adapter'
|
|
38
|
+
require 'spec/interop/test/unit/autorunner'
|
|
39
|
+
require 'spec/interop/test/unit/testresult'
|
|
40
|
+
require 'spec/interop/test/unit/ui/console/testrunner'
|
|
41
|
+
|
|
42
|
+
Spec::Example::ExampleGroupFactory.default(Test::Unit::TestCase)
|
|
43
|
+
|
|
44
|
+
Test::Unit.run = true
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
require 'test/unit/testcase'
|
|
2
|
+
|
|
3
|
+
module Test
|
|
4
|
+
module Unit
|
|
5
|
+
# This extension of the standard Test::Unit::TestCase makes RSpec
|
|
6
|
+
# available from within, so that you can do things like:
|
|
7
|
+
#
|
|
8
|
+
# require 'spec/test/unit'
|
|
9
|
+
#
|
|
10
|
+
# class MyTest < Test::Unit::TestCase
|
|
11
|
+
# it "should work with Test::Unit assertions" do
|
|
12
|
+
# assert_equal 4, 2+1
|
|
13
|
+
# end
|
|
14
|
+
#
|
|
15
|
+
# def test_should_work_with_rspec_expectations
|
|
16
|
+
# (3+1).should == 5
|
|
17
|
+
# end
|
|
18
|
+
# end
|
|
19
|
+
#
|
|
20
|
+
# See also Spec::Example::ExampleGroup
|
|
21
|
+
class TestCase
|
|
22
|
+
extend Spec::Example::ExampleGroupMethods
|
|
23
|
+
include Spec::Example::ExampleMethods
|
|
24
|
+
|
|
25
|
+
def self.suite
|
|
26
|
+
Test::Unit::TestSuiteAdapter.new(self)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.example_method?(method_name)
|
|
30
|
+
should_method?(method_name) || test_method?(method_name)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def self.test_method?(method_name)
|
|
34
|
+
method_name =~ /^test./ && (
|
|
35
|
+
instance_method(method_name).arity == 0 ||
|
|
36
|
+
instance_method(method_name).arity == -1
|
|
37
|
+
)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
before(:each) {setup}
|
|
41
|
+
after(:each) {teardown}
|
|
42
|
+
|
|
43
|
+
def initialize(description, &implementation)
|
|
44
|
+
super
|
|
45
|
+
# Some Test::Unit extensions depend on @method_name being present.
|
|
46
|
+
@method_name = description.description
|
|
47
|
+
@_result = ::Test::Unit::TestResult.new
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def run(ignore_this_argument=nil)
|
|
51
|
+
super()
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require 'test/unit/testsuite'
|
|
2
|
+
|
|
3
|
+
module Test
|
|
4
|
+
module Unit
|
|
5
|
+
class TestSuiteAdapter < TestSuite
|
|
6
|
+
attr_reader :example_group, :examples
|
|
7
|
+
alias_method :tests, :examples
|
|
8
|
+
def initialize(example_group)
|
|
9
|
+
@example_group = example_group
|
|
10
|
+
@examples = example_group.examples
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def name
|
|
14
|
+
example_group.description
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def run(*args)
|
|
18
|
+
return true unless args.empty?
|
|
19
|
+
example_group.run(Spec::Runner.options)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def size
|
|
23
|
+
example_group.number_of_examples
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def delete(example)
|
|
27
|
+
examples.delete example
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def empty?
|
|
31
|
+
examples.empty?
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
require 'test/unit/ui/console/testrunner'
|
|
2
|
+
|
|
3
|
+
module Test
|
|
4
|
+
module Unit
|
|
5
|
+
module UI
|
|
6
|
+
module Console
|
|
7
|
+
class TestRunner
|
|
8
|
+
|
|
9
|
+
alias_method :started_without_rspec, :started
|
|
10
|
+
def started_with_rspec(result)
|
|
11
|
+
@result = result
|
|
12
|
+
@need_to_output_started = true
|
|
13
|
+
end
|
|
14
|
+
alias_method :started, :started_with_rspec
|
|
15
|
+
|
|
16
|
+
alias_method :test_started_without_rspec, :test_started
|
|
17
|
+
def test_started_with_rspec(name)
|
|
18
|
+
if @need_to_output_started
|
|
19
|
+
if @rspec_io
|
|
20
|
+
@rspec_io.rewind
|
|
21
|
+
output(@rspec_io.read)
|
|
22
|
+
end
|
|
23
|
+
output("Started")
|
|
24
|
+
@need_to_output_started = false
|
|
25
|
+
end
|
|
26
|
+
test_started_without_rspec(name)
|
|
27
|
+
end
|
|
28
|
+
alias_method :test_started, :test_started_with_rspec
|
|
29
|
+
|
|
30
|
+
alias_method :test_finished_without_rspec, :test_finished
|
|
31
|
+
def test_finished_with_rspec(name)
|
|
32
|
+
test_finished_without_rspec(name)
|
|
33
|
+
@ran_test = true
|
|
34
|
+
end
|
|
35
|
+
alias_method :test_finished, :test_finished_with_rspec
|
|
36
|
+
|
|
37
|
+
alias_method :finished_without_rspec, :finished
|
|
38
|
+
def finished_with_rspec(elapsed_time)
|
|
39
|
+
@ran_test ||= false
|
|
40
|
+
if @ran_test
|
|
41
|
+
finished_without_rspec(elapsed_time)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
alias_method :finished, :finished_with_rspec
|
|
45
|
+
|
|
46
|
+
alias_method :setup_mediator_without_rspec, :setup_mediator
|
|
47
|
+
def setup_mediator_with_rspec
|
|
48
|
+
orig_io = @io
|
|
49
|
+
@io = StringIO.new
|
|
50
|
+
setup_mediator_without_rspec
|
|
51
|
+
ensure
|
|
52
|
+
@rspec_io = @io
|
|
53
|
+
@io = orig_io
|
|
54
|
+
end
|
|
55
|
+
alias_method :setup_mediator, :setup_mediator_with_rspec
|
|
56
|
+
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
require 'spec/extensions/instance_exec'
|
|
2
|
+
require 'spec/matchers/pretty'
|
|
3
|
+
require 'spec/matchers/matcher'
|
|
4
|
+
require 'spec/matchers/operator_matcher'
|
|
5
|
+
require 'spec/matchers/be'
|
|
6
|
+
require 'spec/matchers/be_close'
|
|
7
|
+
require 'spec/matchers/be_instance_of'
|
|
8
|
+
require 'spec/matchers/be_kind_of'
|
|
9
|
+
require 'spec/matchers/change'
|
|
10
|
+
require 'spec/matchers/eql'
|
|
11
|
+
require 'spec/matchers/equal'
|
|
12
|
+
require 'spec/matchers/errors'
|
|
13
|
+
require 'spec/matchers/exist'
|
|
14
|
+
require 'spec/matchers/generated_descriptions'
|
|
15
|
+
require 'spec/matchers/has'
|
|
16
|
+
require 'spec/matchers/have'
|
|
17
|
+
require 'spec/matchers/include'
|
|
18
|
+
require 'spec/matchers/match'
|
|
19
|
+
require 'spec/matchers/match_array'
|
|
20
|
+
require 'spec/matchers/method_missing'
|
|
21
|
+
require 'spec/matchers/raise_exception'
|
|
22
|
+
require 'spec/matchers/respond_to'
|
|
23
|
+
require 'spec/matchers/satisfy'
|
|
24
|
+
require 'spec/matchers/simple_matcher'
|
|
25
|
+
require 'spec/matchers/throw_symbol'
|
|
26
|
+
require 'spec/matchers/wrap_expectation'
|
|
27
|
+
require 'spec/matchers/compatibility'
|
|
28
|
+
require 'spec/matchers/dsl'
|
|
29
|
+
|
|
30
|
+
module Spec
|
|
31
|
+
|
|
32
|
+
# RSpec ships with a number of useful Expression Matchers. An Expression Matcher
|
|
33
|
+
# is any object that responds to the following methods:
|
|
34
|
+
#
|
|
35
|
+
# matches?(actual)
|
|
36
|
+
# failure_message_for_should
|
|
37
|
+
#
|
|
38
|
+
# These methods are also part of the matcher protocol, but are optional:
|
|
39
|
+
#
|
|
40
|
+
# does_not_match?(actual)
|
|
41
|
+
# failure_message_for_should_not
|
|
42
|
+
# description #optional
|
|
43
|
+
#
|
|
44
|
+
# These methods are from older versions of the protocol. They are still supported,
|
|
45
|
+
# but are not recommended:
|
|
46
|
+
#
|
|
47
|
+
# failure_message (use failure_message_for_should instead)
|
|
48
|
+
# negative_failure_message (use failure_message_for_should_not instead)
|
|
49
|
+
#
|
|
50
|
+
# See Spec::Expectations to learn how to use these as Expectation Matchers.
|
|
51
|
+
#
|
|
52
|
+
# == Predicates
|
|
53
|
+
#
|
|
54
|
+
# In addition to those Expression Matchers that are defined explicitly, RSpec will
|
|
55
|
+
# create custom Matchers on the fly for any arbitrary predicate, giving your specs
|
|
56
|
+
# a much more natural language feel.
|
|
57
|
+
#
|
|
58
|
+
# A Ruby predicate is a method that ends with a "?" and returns true or false.
|
|
59
|
+
# Common examples are +empty?+, +nil?+, and +instance_of?+.
|
|
60
|
+
#
|
|
61
|
+
# All you need to do is write +should be_+ followed by the predicate without
|
|
62
|
+
# the question mark, and RSpec will figure it out from there. For example:
|
|
63
|
+
#
|
|
64
|
+
# [].should be_empty => [].empty? #passes
|
|
65
|
+
# [].should_not be_empty => [].empty? #fails
|
|
66
|
+
#
|
|
67
|
+
# In addtion to prefixing the predicate matchers with "be_", you can also use "be_a_"
|
|
68
|
+
# and "be_an_", making your specs read much more naturally:
|
|
69
|
+
#
|
|
70
|
+
# "a string".should be_an_instance_of(String) =>"a string".instance_of?(String) #passes
|
|
71
|
+
#
|
|
72
|
+
# 3.should be_a_kind_of(Fixnum) => 3.kind_of?(Numeric) #passes
|
|
73
|
+
# 3.should be_a_kind_of(Numeric) => 3.kind_of?(Numeric) #passes
|
|
74
|
+
# 3.should be_an_instance_of(Fixnum) => 3.instance_of?(Fixnum) #passes
|
|
75
|
+
# 3.should_not be_instance_of(Numeric) => 3.instance_of?(Numeric) #fails
|
|
76
|
+
#
|
|
77
|
+
# RSpec will also create custom matchers for predicates like +has_key?+. To
|
|
78
|
+
# use this feature, just state that the object should have_key(:key) and RSpec will
|
|
79
|
+
# call has_key?(:key) on the target. For example:
|
|
80
|
+
#
|
|
81
|
+
# {:a => "A"}.should have_key(:a) => {:a => "A"}.has_key?(:a) #passes
|
|
82
|
+
# {:a => "A"}.should have_key(:b) => {:a => "A"}.has_key?(:b) #fails
|
|
83
|
+
#
|
|
84
|
+
# You can use this feature to invoke any predicate that begins with "has_", whether it is
|
|
85
|
+
# part of the Ruby libraries (like +Hash#has_key?+) or a method you wrote on your own class.
|
|
86
|
+
#
|
|
87
|
+
# == Custom Matchers
|
|
88
|
+
#
|
|
89
|
+
# When you find that none of the stock Expectation Matchers provide a natural
|
|
90
|
+
# feeling expectation, you can very easily write your own using RSpec's matcher
|
|
91
|
+
# DSL or writing one from scratch.
|
|
92
|
+
#
|
|
93
|
+
# === Matcher DSL
|
|
94
|
+
#
|
|
95
|
+
# Imagine that you are writing a game in which players can be in various
|
|
96
|
+
# zones on a virtual board. To specify that bob should be in zone 4, you
|
|
97
|
+
# could say:
|
|
98
|
+
#
|
|
99
|
+
# bob.current_zone.should eql(Zone.new("4"))
|
|
100
|
+
#
|
|
101
|
+
# But you might find it more expressive to say:
|
|
102
|
+
#
|
|
103
|
+
# bob.should be_in_zone("4")
|
|
104
|
+
#
|
|
105
|
+
# and/or
|
|
106
|
+
#
|
|
107
|
+
# bob.should_not be_in_zone("3")
|
|
108
|
+
#
|
|
109
|
+
# You can create such a matcher like so:
|
|
110
|
+
#
|
|
111
|
+
# Spec::Matchers.define :be_in_zone do |zone|
|
|
112
|
+
# match do |player|
|
|
113
|
+
# player.in_zone?(zone)
|
|
114
|
+
# end
|
|
115
|
+
# end
|
|
116
|
+
#
|
|
117
|
+
# This will generate a <tt>be_in_zone</tt> method that returns a matcher
|
|
118
|
+
# with logical default messages for failures. You can override the failure
|
|
119
|
+
# messages and the generated description as follows:
|
|
120
|
+
#
|
|
121
|
+
# Spec::Matchers.define :be_in_zone do |zone|
|
|
122
|
+
# match do |player|
|
|
123
|
+
# player.in_zone?(zone)
|
|
124
|
+
# end
|
|
125
|
+
# failure_message_for_should do |player|
|
|
126
|
+
# # generate and return the appropriate string.
|
|
127
|
+
# end
|
|
128
|
+
# failure_message_for_should_not do |player|
|
|
129
|
+
# # generate and return the appropriate string.
|
|
130
|
+
# end
|
|
131
|
+
# description do
|
|
132
|
+
# # generate and return the appropriate string.
|
|
133
|
+
# end
|
|
134
|
+
# end
|
|
135
|
+
#
|
|
136
|
+
# Each of the message-generation methods has access to the block arguments
|
|
137
|
+
# passed to the <tt>create</tt> method (in this case, <tt>zone</tt>). The
|
|
138
|
+
# failure message methods (<tt>failure_message_for_should</tt> and
|
|
139
|
+
# <tt>failure_message_for_should_not</tt>) are passed the actual value (the
|
|
140
|
+
# receiver of <tt>should</tt> or <tt>should_not</tt>).
|
|
141
|
+
#
|
|
142
|
+
# You can also create matchers that obey a fluent interface using the
|
|
143
|
+
# <tt>chain</tt> method:
|
|
144
|
+
#
|
|
145
|
+
# Spec::Matchers.define :tip do |expected_tip|
|
|
146
|
+
# chain :on do |bill|
|
|
147
|
+
# @bill = bill
|
|
148
|
+
# end
|
|
149
|
+
#
|
|
150
|
+
# match do |person|
|
|
151
|
+
# person.tip_for(bill) == expected_tip
|
|
152
|
+
# end
|
|
153
|
+
# end
|
|
154
|
+
#
|
|
155
|
+
# This matcher can be used as follows:
|
|
156
|
+
#
|
|
157
|
+
# describe Customer do
|
|
158
|
+
# it { should tip(10).on(50) }
|
|
159
|
+
# end
|
|
160
|
+
#
|
|
161
|
+
# === Custom Matcher from scratch
|
|
162
|
+
#
|
|
163
|
+
# You could also write a custom matcher from scratch, as follows:
|
|
164
|
+
#
|
|
165
|
+
# class BeInZone
|
|
166
|
+
# def initialize(expected)
|
|
167
|
+
# @expected = expected
|
|
168
|
+
# end
|
|
169
|
+
# def matches?(target)
|
|
170
|
+
# @target = target
|
|
171
|
+
# @target.current_zone.eql?(Zone.new(@expected))
|
|
172
|
+
# end
|
|
173
|
+
# def failure_message_for_should
|
|
174
|
+
# "expected #{@target.inspect} to be in Zone #{@expected}"
|
|
175
|
+
# end
|
|
176
|
+
# def failure_message_for_should_not
|
|
177
|
+
# "expected #{@target.inspect} not to be in Zone #{@expected}"
|
|
178
|
+
# end
|
|
179
|
+
# end
|
|
180
|
+
#
|
|
181
|
+
# ... and a method like this:
|
|
182
|
+
#
|
|
183
|
+
# def be_in_zone(expected)
|
|
184
|
+
# BeInZone.new(expected)
|
|
185
|
+
# end
|
|
186
|
+
#
|
|
187
|
+
# And then expose the method to your specs. This is normally done
|
|
188
|
+
# by including the method and the class in a module, which is then
|
|
189
|
+
# included in your spec:
|
|
190
|
+
#
|
|
191
|
+
# module CustomGameMatchers
|
|
192
|
+
# class BeInZone
|
|
193
|
+
# ...
|
|
194
|
+
# end
|
|
195
|
+
#
|
|
196
|
+
# def be_in_zone(expected)
|
|
197
|
+
# ...
|
|
198
|
+
# end
|
|
199
|
+
# end
|
|
200
|
+
#
|
|
201
|
+
# describe "Player behaviour" do
|
|
202
|
+
# include CustomGameMatchers
|
|
203
|
+
# ...
|
|
204
|
+
# end
|
|
205
|
+
#
|
|
206
|
+
# or you can include in globally in a spec_helper.rb file <tt>require</tt>d
|
|
207
|
+
# from your spec file(s):
|
|
208
|
+
#
|
|
209
|
+
# Spec::Runner.configure do |config|
|
|
210
|
+
# config.include(CustomGameMatchers)
|
|
211
|
+
# end
|
|
212
|
+
#
|
|
213
|
+
module Matchers; end
|
|
214
|
+
end
|