rspec 1.3.2 → 2.0.0.a2
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 +4 -6
- data/.gitignore +4 -14
- data/License.txt +1 -1
- data/README.markdown +46 -0
- data/Rakefile +26 -100
- data/lib/rspec.rb +4 -0
- data/lib/rspec/version.rb +14 -0
- data/rspec.gemspec +46 -19
- metadata +72 -673
- data/.autotest +0 -5
- data/Gemfile +0 -20
- data/History.rdoc +0 -1560
- data/README.rdoc +0 -44
- data/Ruby1.9.rdoc +0 -31
- data/TODO.txt +0 -17
- data/Upgrade.rdoc +0 -260
- data/bin/autospec +0 -4
- data/bin/spec +0 -5
- data/cucumber.yml +0 -5
- data/example_spec.rb +0 -4
- data/examples/failing/README.txt +0 -11
- data/examples/failing/diffing_spec.rb +0 -36
- data/examples/failing/failing_implicit_docstrings_example.rb +0 -17
- data/examples/failing/failure_in_after.rb +0 -10
- data/examples/failing/failure_in_before.rb +0 -10
- data/examples/failing/mocking_example.rb +0 -38
- data/examples/failing/mocking_with_flexmock.rb +0 -26
- data/examples/failing/mocking_with_mocha.rb +0 -25
- data/examples/failing/mocking_with_rr.rb +0 -27
- data/examples/failing/partial_mock_example.rb +0 -18
- data/examples/failing/pending_example.rb +0 -7
- data/examples/failing/predicate_example.rb +0 -32
- data/examples/failing/raising_example.rb +0 -47
- data/examples/failing/syntax_error_example.rb +0 -7
- data/examples/failing/team_spec.rb +0 -41
- data/examples/failing/timeout_behaviour.rb +0 -5
- data/examples/passing/custom_formatter.rb +0 -11
- data/examples/passing/custom_matchers.rb +0 -54
- data/examples/passing/dynamic_spec.rb +0 -7
- data/examples/passing/file_accessor.rb +0 -18
- data/examples/passing/file_accessor_spec.rb +0 -37
- data/examples/passing/filtered_formatter.rb +0 -17
- data/examples/passing/filtered_formatter_example.rb +0 -31
- data/examples/passing/greeter_spec.rb +0 -30
- data/examples/passing/helper_method_example.rb +0 -12
- data/examples/passing/implicit_docstrings_example.rb +0 -16
- data/examples/passing/io_processor.rb +0 -8
- data/examples/passing/io_processor_spec.rb +0 -20
- data/examples/passing/mocking_example.rb +0 -25
- data/examples/passing/multi_threaded_example_group_runner.rb +0 -26
- data/examples/passing/nested_classes_example.rb +0 -35
- data/examples/passing/options_example.rb +0 -29
- data/examples/passing/options_formatter.rb +0 -20
- data/examples/passing/partial_mock_example.rb +0 -27
- data/examples/passing/pending_example.rb +0 -18
- data/examples/passing/predicate_example.rb +0 -25
- data/examples/passing/shared_example_group_example.rb +0 -43
- data/examples/passing/shared_stack_examples.rb +0 -36
- data/examples/passing/simple_matcher_example.rb +0 -29
- data/examples/passing/stack.rb +0 -36
- data/examples/passing/stack_spec.rb +0 -63
- data/examples/passing/stack_spec_with_nested_example_groups.rb +0 -66
- data/examples/passing/stubbing_example.rb +0 -67
- data/examples/passing/yielding_example.rb +0 -31
- data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +0 -85
- data/features-pending/cli/conditional_exclusion.feature +0 -39
- data/features-pending/heckle/heckle.feature +0 -56
- data/features/before_and_after_blocks/before_and_after_blocks.feature +0 -167
- data/features/command_line/line_number_option.feature +0 -56
- data/features/command_line/line_number_option_with_example_with_no_name.feature +0 -22
- data/features/example_groups/define_example_attribute.feature +0 -41
- data/features/example_groups/example_group_with_should_methods.feature +0 -29
- data/features/example_groups/implicit_docstrings.feature +0 -59
- data/features/example_groups/nested_groups.feature +0 -32
- data/features/expectations/customized_message.feature +0 -54
- data/features/expectations/expect_change.feature +0 -65
- data/features/expectations/expect_error.feature +0 -44
- data/features/extensions/custom_example_group.feature +0 -19
- data/features/formatters/custom_formatter.feature +0 -30
- data/features/formatters/nested_formatter.feature +0 -32
- data/features/interop/cucumber_stubs_dont_leak.feature +0 -11
- data/features/interop/examples_and_tests_together.feature +0 -84
- data/features/interop/rspec_output.feature +0 -25
- data/features/interop/test_but_not_test_unit.feature +0 -26
- data/features/interop/test_case_with_should_methods.feature +0 -46
- data/features/load_paths/add_lib_to_load_path.feature +0 -20
- data/features/load_paths/add_spec_to_load_path.feature +0 -20
- data/features/matchers/define_diffable_matcher.feature +0 -26
- data/features/matchers/define_matcher.feature +0 -179
- data/features/matchers/define_matcher_outside_rspec.feature +0 -37
- data/features/matchers/define_matcher_with_fluent_interface.feature +0 -48
- data/features/matchers/define_wrapped_matcher.feature +0 -56
- data/features/matchers/match_unless_raises.feature +0 -60
- data/features/matchers/match_unless_raises_unexpected_error.feature +0 -39
- data/features/mock_framework_integration/use_flexmock.feature +0 -27
- data/features/mock_framework_integration/use_mocha.feature +0 -27
- data/features/mock_framework_integration/use_rr.feature +0 -27
- data/features/mocks/block_local_expectations.feature +0 -62
- data/features/mocks/mix_stubs_and_mocks.feature +0 -22
- data/features/mocks/stub_implementation.feature +0 -26
- data/features/pending/pending_examples.feature +0 -81
- data/features/runner/specify_line_number.feature +0 -32
- data/features/spec_helper/spec_helper.feature +0 -25
- data/features/step_definitions/running_rspec_steps.rb +0 -52
- data/features/step_definitions/stubbing_steps.rb +0 -16
- data/features/subject/explicit_subject.feature +0 -31
- data/features/subject/implicit_subject.feature +0 -43
- data/features/support/env.rb +0 -83
- data/features/support/matchers/smart_match.rb +0 -31
- data/init.rb +0 -9
- data/lib/autotest/discover.rb +0 -3
- data/lib/autotest/rspec.rb +0 -54
- data/lib/spec.rb +0 -8
- data/lib/spec/adapters/mock_frameworks/flexmock.rb +0 -24
- data/lib/spec/adapters/mock_frameworks/mocha.rb +0 -25
- data/lib/spec/adapters/mock_frameworks/rr.rb +0 -22
- data/lib/spec/adapters/mock_frameworks/rspec.rb +0 -21
- data/lib/spec/autorun.rb +0 -3
- data/lib/spec/deprecation.rb +0 -41
- data/lib/spec/dsl.rb +0 -1
- data/lib/spec/dsl/main.rb +0 -93
- data/lib/spec/example.rb +0 -164
- data/lib/spec/example/args_and_options.rb +0 -27
- data/lib/spec/example/before_and_after_hooks.rb +0 -93
- data/lib/spec/example/errors.rb +0 -25
- data/lib/spec/example/example_group.rb +0 -10
- data/lib/spec/example/example_group_factory.rb +0 -82
- data/lib/spec/example/example_group_hierarchy.rb +0 -53
- data/lib/spec/example/example_group_methods.rb +0 -287
- data/lib/spec/example/example_group_proxy.rb +0 -61
- data/lib/spec/example/example_matcher.rb +0 -43
- data/lib/spec/example/example_methods.rb +0 -152
- data/lib/spec/example/example_proxy.rb +0 -41
- data/lib/spec/example/module_reopening_fix.rb +0 -43
- data/lib/spec/example/pending.rb +0 -18
- data/lib/spec/example/predicate_matchers.rb +0 -46
- data/lib/spec/example/shared_example_group.rb +0 -59
- data/lib/spec/example/subject.rb +0 -114
- data/lib/spec/expectations.rb +0 -35
- data/lib/spec/expectations/errors.rb +0 -12
- data/lib/spec/expectations/extensions.rb +0 -1
- data/lib/spec/expectations/extensions/kernel.rb +0 -52
- data/lib/spec/expectations/fail_with.rb +0 -45
- data/lib/spec/expectations/handler.rb +0 -50
- data/lib/spec/extensions/instance_exec.rb +0 -31
- data/lib/spec/interop/test.rb +0 -44
- data/lib/spec/interop/test/unit/autorunner.rb +0 -6
- data/lib/spec/interop/test/unit/testcase.rb +0 -56
- data/lib/spec/interop/test/unit/testresult.rb +0 -6
- data/lib/spec/interop/test/unit/testsuite_adapter.rb +0 -36
- data/lib/spec/interop/test/unit/ui/console/testrunner.rb +0 -61
- data/lib/spec/matchers.rb +0 -214
- data/lib/spec/matchers/be.rb +0 -249
- data/lib/spec/matchers/be_close.rb +0 -32
- data/lib/spec/matchers/be_instance_of.rb +0 -26
- data/lib/spec/matchers/be_kind_of.rb +0 -26
- data/lib/spec/matchers/change.rb +0 -151
- data/lib/spec/matchers/compatibility.rb +0 -14
- data/lib/spec/matchers/dsl.rb +0 -20
- data/lib/spec/matchers/eql.rb +0 -42
- data/lib/spec/matchers/equal.rb +0 -53
- data/lib/spec/matchers/errors.rb +0 -5
- data/lib/spec/matchers/exist.rb +0 -16
- data/lib/spec/matchers/generated_descriptions.rb +0 -36
- data/lib/spec/matchers/has.rb +0 -35
- data/lib/spec/matchers/have.rb +0 -152
- data/lib/spec/matchers/include.rb +0 -44
- data/lib/spec/matchers/match.rb +0 -21
- data/lib/spec/matchers/match_array.rb +0 -71
- data/lib/spec/matchers/matcher.rb +0 -132
- data/lib/spec/matchers/method_missing.rb +0 -9
- data/lib/spec/matchers/operator_matcher.rb +0 -83
- data/lib/spec/matchers/pretty.rb +0 -37
- data/lib/spec/matchers/raise_exception.rb +0 -131
- data/lib/spec/matchers/respond_to.rb +0 -71
- data/lib/spec/matchers/satisfy.rb +0 -47
- data/lib/spec/matchers/simple_matcher.rb +0 -134
- data/lib/spec/matchers/throw_symbol.rb +0 -100
- data/lib/spec/matchers/wrap_expectation.rb +0 -55
- data/lib/spec/mocks.rb +0 -200
- data/lib/spec/mocks/argument_expectation.rb +0 -51
- data/lib/spec/mocks/argument_matchers.rb +0 -237
- data/lib/spec/mocks/error_generator.rb +0 -92
- data/lib/spec/mocks/errors.rb +0 -10
- data/lib/spec/mocks/example_methods.rb +0 -69
- data/lib/spec/mocks/extensions.rb +0 -1
- data/lib/spec/mocks/extensions/object.rb +0 -3
- data/lib/spec/mocks/framework.rb +0 -15
- data/lib/spec/mocks/message_expectation.rb +0 -344
- data/lib/spec/mocks/methods.rb +0 -94
- data/lib/spec/mocks/mock.rb +0 -71
- data/lib/spec/mocks/order_group.rb +0 -29
- data/lib/spec/mocks/proxy.rb +0 -254
- data/lib/spec/mocks/space.rb +0 -28
- data/lib/spec/rake/spectask.rb +0 -230
- data/lib/spec/rake/verify_rcov.rb +0 -52
- data/lib/spec/ruby.rb +0 -9
- data/lib/spec/runner.rb +0 -66
- data/lib/spec/runner/backtrace_tweaker.rb +0 -78
- data/lib/spec/runner/class_and_arguments_parser.rb +0 -14
- data/lib/spec/runner/command_line.rb +0 -15
- data/lib/spec/runner/configuration.rb +0 -202
- data/lib/spec/runner/differs/default.rb +0 -93
- data/lib/spec/runner/differs/load-diff-lcs.rb +0 -12
- data/lib/spec/runner/drb_command_line.rb +0 -32
- data/lib/spec/runner/example_group_runner.rb +0 -58
- data/lib/spec/runner/extensions/kernel.rb +0 -9
- data/lib/spec/runner/formatter/base_formatter.rb +0 -139
- data/lib/spec/runner/formatter/base_text_formatter.rb +0 -142
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +0 -25
- data/lib/spec/runner/formatter/failing_examples_formatter.rb +0 -20
- data/lib/spec/runner/formatter/html_formatter.rb +0 -338
- data/lib/spec/runner/formatter/nested_text_formatter.rb +0 -50
- data/lib/spec/runner/formatter/no_op_method_missing.rb +0 -21
- data/lib/spec/runner/formatter/profile_formatter.rb +0 -47
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +0 -33
- data/lib/spec/runner/formatter/silent_formatter.rb +0 -10
- data/lib/spec/runner/formatter/snippet_extractor.rb +0 -52
- data/lib/spec/runner/formatter/specdoc_formatter.rb +0 -33
- data/lib/spec/runner/formatter/text_mate_formatter.rb +0 -16
- data/lib/spec/runner/heckle_runner.rb +0 -77
- data/lib/spec/runner/heckle_runner_unsupported.rb +0 -10
- data/lib/spec/runner/line_number_query.rb +0 -78
- data/lib/spec/runner/option_parser.rb +0 -225
- data/lib/spec/runner/options.rb +0 -406
- data/lib/spec/runner/reporter.rb +0 -171
- data/lib/spec/stubs/cucumber.rb +0 -5
- data/lib/spec/test/unit.rb +0 -10
- data/lib/spec/version.rb +0 -14
- data/resources/helpers/cmdline.rb +0 -8
- data/resources/rake/examples.rake +0 -7
- data/resources/rake/examples_with_rcov.rake +0 -9
- data/resources/rake/failing_examples_with_html.rake +0 -9
- data/resources/rake/verify_rcov.rake +0 -7
- data/spec/README.jruby +0 -15
- data/spec/autotest/autotest_helper.rb +0 -8
- data/spec/autotest/autotest_matchers.rb +0 -38
- data/spec/autotest/discover_spec.rb +0 -8
- data/spec/autotest/failed_results_re_spec.rb +0 -31
- data/spec/autotest/rspec_spec.rb +0 -126
- data/spec/ruby_forker.rb +0 -13
- data/spec/spec.opts +0 -6
- data/spec/spec/dsl/main_spec.rb +0 -103
- data/spec/spec/example/example_group_class_definition_spec.rb +0 -51
- data/spec/spec/example/example_group_factory_spec.rb +0 -180
- data/spec/spec/example/example_group_methods_spec.rb +0 -778
- data/spec/spec/example/example_group_proxy_spec.rb +0 -107
- data/spec/spec/example/example_group_spec.rb +0 -632
- data/spec/spec/example/example_matcher_spec.rb +0 -85
- data/spec/spec/example/example_methods_spec.rb +0 -162
- data/spec/spec/example/example_proxy_spec.rb +0 -57
- data/spec/spec/example/helper_method_spec.rb +0 -24
- data/spec/spec/example/nested_example_group_spec.rb +0 -71
- data/spec/spec/example/pending_module_spec.rb +0 -58
- data/spec/spec/example/predicate_matcher_spec.rb +0 -41
- data/spec/spec/example/shared_example_group_spec.rb +0 -257
- data/spec/spec/example/subclassing_example_group_spec.rb +0 -25
- data/spec/spec/example/subject_spec.rb +0 -110
- data/spec/spec/expectations/differs/default_spec.rb +0 -194
- data/spec/spec/expectations/extensions/kernel_spec.rb +0 -45
- data/spec/spec/expectations/fail_with_spec.rb +0 -96
- data/spec/spec/expectations/handler_spec.rb +0 -206
- data/spec/spec/expectations/wrap_expectation_spec.rb +0 -31
- data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +0 -10
- data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +0 -10
- data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +0 -10
- data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +0 -13
- data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +0 -10
- data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +0 -10
- data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +0 -10
- data/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb +0 -22
- data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +0 -38
- data/spec/spec/interop/test/unit/spec_spec.rb +0 -48
- data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +0 -18
- data/spec/spec/interop/test/unit/testcase_spec.rb +0 -50
- data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +0 -9
- data/spec/spec/matchers/be_close_spec.rb +0 -50
- data/spec/spec/matchers/be_instance_of_spec.rb +0 -36
- data/spec/spec/matchers/be_kind_of_spec.rb +0 -33
- data/spec/spec/matchers/be_spec.rb +0 -460
- data/spec/spec/matchers/change_spec.rb +0 -349
- data/spec/spec/matchers/compatibility_spec.rb +0 -28
- data/spec/spec/matchers/description_generation_spec.rb +0 -160
- data/spec/spec/matchers/dsl_spec.rb +0 -34
- data/spec/spec/matchers/eql_spec.rb +0 -33
- data/spec/spec/matchers/equal_spec.rb +0 -57
- data/spec/spec/matchers/exist_spec.rb +0 -65
- data/spec/spec/matchers/has_spec.rb +0 -190
- data/spec/spec/matchers/have_spec.rb +0 -381
- data/spec/spec/matchers/include_spec.rb +0 -88
- data/spec/spec/matchers/match_array_spec.rb +0 -115
- data/spec/spec/matchers/match_spec.rb +0 -57
- data/spec/spec/matchers/matcher_spec.rb +0 -289
- data/spec/spec/matchers/matchers_spec.rb +0 -2
- data/spec/spec/matchers/operator_matcher_spec.rb +0 -191
- data/spec/spec/matchers/pretty_spec.rb +0 -22
- data/spec/spec/matchers/raise_exception_spec.rb +0 -345
- data/spec/spec/matchers/respond_to_spec.rb +0 -116
- data/spec/spec/matchers/satisfy_spec.rb +0 -36
- data/spec/spec/matchers/simple_matcher_spec.rb +0 -100
- data/spec/spec/matchers/throw_symbol_spec.rb +0 -121
- data/spec/spec/mocks/and_yield_spec.rb +0 -117
- data/spec/spec/mocks/any_number_of_times_spec.rb +0 -36
- data/spec/spec/mocks/argument_expectation_spec.rb +0 -23
- data/spec/spec/mocks/argument_matchers_spec.rb +0 -19
- data/spec/spec/mocks/at_least_spec.rb +0 -97
- data/spec/spec/mocks/at_most_spec.rb +0 -93
- data/spec/spec/mocks/bug_report_10260_spec.rb +0 -8
- data/spec/spec/mocks/bug_report_10263_spec.rb +0 -27
- data/spec/spec/mocks/bug_report_1049_spec.rb +0 -30
- data/spec/spec/mocks/bug_report_11545_spec.rb +0 -32
- data/spec/spec/mocks/bug_report_15719_spec.rb +0 -30
- data/spec/spec/mocks/bug_report_496_spec.rb +0 -17
- data/spec/spec/mocks/bug_report_600_spec.rb +0 -22
- data/spec/spec/mocks/bug_report_7611_spec.rb +0 -19
- data/spec/spec/mocks/bug_report_7805_spec.rb +0 -22
- data/spec/spec/mocks/bug_report_8165_spec.rb +0 -31
- data/spec/spec/mocks/bug_report_8302_spec.rb +0 -26
- data/spec/spec/mocks/bug_report_830_spec.rb +0 -21
- data/spec/spec/mocks/bug_report_957_spec.rb +0 -22
- data/spec/spec/mocks/double_spec.rb +0 -12
- data/spec/spec/mocks/failing_argument_matchers_spec.rb +0 -95
- data/spec/spec/mocks/hash_including_matcher_spec.rb +0 -90
- data/spec/spec/mocks/hash_not_including_matcher_spec.rb +0 -67
- data/spec/spec/mocks/mock_ordering_spec.rb +0 -94
- data/spec/spec/mocks/mock_space_spec.rb +0 -54
- data/spec/spec/mocks/mock_spec.rb +0 -601
- data/spec/spec/mocks/multiple_return_value_spec.rb +0 -113
- data/spec/spec/mocks/nil_expectation_warning_spec.rb +0 -53
- data/spec/spec/mocks/null_object_mock_spec.rb +0 -54
- data/spec/spec/mocks/once_counts_spec.rb +0 -53
- data/spec/spec/mocks/options_hash_spec.rb +0 -35
- data/spec/spec/mocks/partial_mock_spec.rb +0 -164
- data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +0 -66
- data/spec/spec/mocks/passing_argument_matchers_spec.rb +0 -145
- data/spec/spec/mocks/precise_counts_spec.rb +0 -52
- data/spec/spec/mocks/record_messages_spec.rb +0 -26
- data/spec/spec/mocks/stub_chain_spec.rb +0 -42
- data/spec/spec/mocks/stub_implementation_spec.rb +0 -31
- data/spec/spec/mocks/stub_spec.rb +0 -203
- data/spec/spec/mocks/stubbed_message_expectations_spec.rb +0 -26
- data/spec/spec/mocks/twice_counts_spec.rb +0 -67
- data/spec/spec/mocks/unstub_spec.rb +0 -127
- data/spec/spec/package/bin_spec_spec.rb +0 -16
- data/spec/spec/rake/spectask_spec.rb +0 -150
- data/spec/spec/runner/class_and_argument_parser_spec.rb +0 -23
- data/spec/spec/runner/command_line_spec.rb +0 -162
- data/spec/spec/runner/configuration_spec.rb +0 -320
- data/spec/spec/runner/drb_command_line_spec.rb +0 -146
- data/spec/spec/runner/empty_file.txt +0 -0
- data/spec/spec/runner/example_group_runner_spec.rb +0 -26
- data/spec/spec/runner/examples.txt +0 -2
- data/spec/spec/runner/failed.txt +0 -3
- data/spec/spec/runner/formatter/base_formatter_spec.rb +0 -30
- data/spec/spec/runner/formatter/base_text_formatter_spec.rb +0 -113
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +0 -45
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +0 -33
- data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +0 -377
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +0 -377
- data/spec/spec/runner/formatter/html_formatted-1.8.7.html +0 -377
- data/spec/spec/runner/formatter/html_formatted-1.9.1.html +0 -377
- data/spec/spec/runner/formatter/html_formatted-1.9.2.html +0 -377
- data/spec/spec/runner/formatter/html_formatter_spec.rb +0 -118
- data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +0 -329
- data/spec/spec/runner/formatter/profile_formatter_spec.rb +0 -70
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +0 -149
- data/spec/spec/runner/formatter/snippet_extractor_spec.rb +0 -18
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +0 -159
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +0 -371
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +0 -371
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +0 -371
- data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +0 -371
- data/spec/spec/runner/formatter/text_mate_formatted-1.9.2.html +0 -371
- data/spec/spec/runner/formatter/text_mate_formatter_spec.rb +0 -106
- data/spec/spec/runner/heckle_runner_spec.rb +0 -78
- data/spec/spec/runner/heckler_spec.rb +0 -20
- data/spec/spec/runner/line_number_query/line_number_query_fixture.rb +0 -70
- data/spec/spec/runner/line_number_query_spec.rb +0 -129
- data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +0 -51
- data/spec/spec/runner/option_parser_spec.rb +0 -551
- data/spec/spec/runner/options_spec.rb +0 -554
- data/spec/spec/runner/output_one_time_fixture.rb +0 -7
- data/spec/spec/runner/output_one_time_fixture_runner.rb +0 -7
- data/spec/spec/runner/output_one_time_spec.rb +0 -15
- data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +0 -123
- data/spec/spec/runner/reporter_spec.rb +0 -244
- data/spec/spec/runner/resources/a_bar.rb +0 -0
- data/spec/spec/runner/resources/a_foo.rb +0 -0
- data/spec/spec/runner/resources/a_spec.rb +0 -1
- data/spec/spec/runner/resources/custom_example_group_runner.rb +0 -14
- data/spec/spec/runner/resources/utf8_encoded.rb +0 -8
- data/spec/spec/runner/spec.opts +0 -2
- data/spec/spec/runner/spec_drb.opts +0 -2
- data/spec/spec/runner/spec_spaced.opts +0 -2
- data/spec/spec/runner_spec.rb +0 -13
- data/spec/spec_helper.rb +0 -113
- data/spec/support/macros.rb +0 -29
- data/spec/support/spec_classes.rb +0 -133
@@ -1,34 +0,0 @@
|
|
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
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module Spec
|
4
|
-
module Matchers
|
5
|
-
describe "eql" do
|
6
|
-
it "should match when actual.eql?(expected)" do
|
7
|
-
1.should eql(1)
|
8
|
-
end
|
9
|
-
|
10
|
-
it "should not match when !actual.eql?(expected)" do
|
11
|
-
1.should_not eql(2)
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should describe itself" do
|
15
|
-
matcher = eql(1)
|
16
|
-
matcher.matches?(1)
|
17
|
-
matcher.description.should == "eql 1"
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should provide message, expected and actual on #failure_message" do
|
21
|
-
matcher = eql("1")
|
22
|
-
matcher.matches?(1)
|
23
|
-
matcher.failure_message_for_should.should == "\nexpected \"1\"\n got 1\n\n(compared using eql?)\n"
|
24
|
-
end
|
25
|
-
|
26
|
-
it "should provide message, expected and actual on #negative_failure_message" do
|
27
|
-
matcher = eql(1)
|
28
|
-
matcher.matches?(1)
|
29
|
-
matcher.failure_message_for_should_not.should == "\nexpected 1 not to equal 1\n\n(compared using eql?)\n"
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,57 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
module Spec
|
3
|
-
module Matchers
|
4
|
-
describe "equal" do
|
5
|
-
|
6
|
-
def inspect_object(o)
|
7
|
-
"#<#{o.class}:#{o.object_id}> => #{o.inspect}"
|
8
|
-
end
|
9
|
-
|
10
|
-
it "should match when actual.equal?(expected)" do
|
11
|
-
1.should equal(1)
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should not match when !actual.equal?(expected)" do
|
15
|
-
1.should_not equal("1")
|
16
|
-
end
|
17
|
-
|
18
|
-
it "should describe itself" do
|
19
|
-
matcher = equal(1)
|
20
|
-
matcher.matches?(1)
|
21
|
-
matcher.description.should == "equal 1"
|
22
|
-
end
|
23
|
-
|
24
|
-
it "should provide message on #failure_message" do
|
25
|
-
expected, actual = "1", "1"
|
26
|
-
matcher = equal(expected)
|
27
|
-
matcher.matches?(actual)
|
28
|
-
|
29
|
-
matcher.failure_message_for_should.should == <<-MESSAGE
|
30
|
-
|
31
|
-
expected #{inspect_object(expected)}
|
32
|
-
got #{inspect_object(actual)}
|
33
|
-
|
34
|
-
Compared using equal?, which compares object identity,
|
35
|
-
but expected and actual are not the same object. Use
|
36
|
-
'actual.should == expected' if you don't care about
|
37
|
-
object identity in this example.
|
38
|
-
|
39
|
-
MESSAGE
|
40
|
-
end
|
41
|
-
|
42
|
-
it "should provide message on #negative_failure_message" do
|
43
|
-
expected = actual = "1"
|
44
|
-
matcher = equal(expected)
|
45
|
-
matcher.matches?(actual)
|
46
|
-
matcher.failure_message_for_should_not.should == <<-MESSAGE
|
47
|
-
|
48
|
-
expected not #{inspect_object(expected)}
|
49
|
-
got #{inspect_object(actual)}
|
50
|
-
|
51
|
-
Compared using equal?, which compares object identity.
|
52
|
-
|
53
|
-
MESSAGE
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
class Substance
|
4
|
-
def initialize exists, description
|
5
|
-
@exists = exists
|
6
|
-
@description = description
|
7
|
-
end
|
8
|
-
def exist?(arg=nil)
|
9
|
-
@exists
|
10
|
-
end
|
11
|
-
def inspect
|
12
|
-
@description
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
class SubstanceTester
|
17
|
-
include Spec::Matchers
|
18
|
-
def initialize substance
|
19
|
-
@substance = substance
|
20
|
-
end
|
21
|
-
def should_exist
|
22
|
-
@substance.should exist
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
describe "should exist" do
|
27
|
-
|
28
|
-
before(:each) do
|
29
|
-
@real = Substance.new true, 'something real'
|
30
|
-
@imaginary = Substance.new false, 'something imaginary'
|
31
|
-
end
|
32
|
-
|
33
|
-
describe "within an example group" do
|
34
|
-
|
35
|
-
it "passes if target exists" do
|
36
|
-
@real.should exist
|
37
|
-
end
|
38
|
-
|
39
|
-
it "passes if target exists with args" do
|
40
|
-
@real.should exist('this arg')
|
41
|
-
end
|
42
|
-
|
43
|
-
it "fails if target does not exist" do
|
44
|
-
lambda { @imaginary.should exist }.should fail
|
45
|
-
end
|
46
|
-
|
47
|
-
it "describes itself" do
|
48
|
-
exist.description.should == "exist"
|
49
|
-
end
|
50
|
-
|
51
|
-
it "passes should_not exist if target doesn't exist" do
|
52
|
-
lambda { @real.should_not exist }.should fail
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
describe "outside of an example group" do
|
57
|
-
|
58
|
-
it "should pass if target exists" do
|
59
|
-
real_tester = SubstanceTester.new @real
|
60
|
-
real_tester.should_exist
|
61
|
-
end
|
62
|
-
|
63
|
-
end
|
64
|
-
|
65
|
-
end
|
@@ -1,190 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "should have_sym(*args)" do
|
4
|
-
it "should pass if #has_sym?(*args) returns true" do
|
5
|
-
{:a => "A"}.should have_key(:a)
|
6
|
-
end
|
7
|
-
|
8
|
-
it "should fail if #has_sym?(*args) returns false" do
|
9
|
-
lambda {
|
10
|
-
{:b => "B"}.should have_key(:a)
|
11
|
-
}.should fail_with("expected #has_key?(:a) to return true, got false")
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should fail if #has_sym?(*args) returns nil" do
|
15
|
-
klass = Class.new do
|
16
|
-
def has_foo?
|
17
|
-
end
|
18
|
-
end
|
19
|
-
lambda {
|
20
|
-
klass.new.should have_foo
|
21
|
-
}.should fail_with("expected #has_foo?(nil) to return true, got false")
|
22
|
-
end
|
23
|
-
|
24
|
-
it "should fail if target does not respond to #has_sym?" do
|
25
|
-
lambda {
|
26
|
-
Object.new.should have_key(:a)
|
27
|
-
}.should raise_error(NoMethodError)
|
28
|
-
end
|
29
|
-
|
30
|
-
it "should reraise an exception thrown in #has_sym?(*args)" do
|
31
|
-
o = Object.new
|
32
|
-
def o.has_sym?(*args)
|
33
|
-
raise "Funky exception"
|
34
|
-
end
|
35
|
-
lambda { o.should have_sym(:foo) }.should raise_error("Funky exception")
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
describe "should_not have_sym(*args)" do
|
40
|
-
it "should pass if #has_sym?(*args) returns false" do
|
41
|
-
{:a => "A"}.should_not have_key(:b)
|
42
|
-
end
|
43
|
-
|
44
|
-
it "should pass if #has_sym?(*args) returns nil" do
|
45
|
-
klass = Class.new do
|
46
|
-
def has_foo?
|
47
|
-
end
|
48
|
-
end
|
49
|
-
klass.new.should_not have_foo
|
50
|
-
end
|
51
|
-
|
52
|
-
it "should fail if #has_sym?(*args) returns true" do
|
53
|
-
lambda {
|
54
|
-
{:a => "A"}.should_not have_key(:a)
|
55
|
-
}.should fail_with("expected #has_key?(:a) to return false, got true")
|
56
|
-
end
|
57
|
-
|
58
|
-
it "should fail if target does not respond to #has_sym?" do
|
59
|
-
lambda {
|
60
|
-
Object.new.should have_key(:a)
|
61
|
-
}.should raise_error(NoMethodError)
|
62
|
-
end
|
63
|
-
|
64
|
-
it "should reraise an exception thrown in #has_sym?(*args)" do
|
65
|
-
o = Object.new
|
66
|
-
def o.has_sym?(*args)
|
67
|
-
raise "Funky exception"
|
68
|
-
end
|
69
|
-
lambda { o.should_not have_sym(:foo) }.should raise_error("Funky exception")
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
describe "should have_sym(&block)" do
|
74
|
-
it "should pass when actual returns true for :has_sym?(&block)" do
|
75
|
-
actual = mock("actual")
|
76
|
-
delegate = mock("delegate")
|
77
|
-
actual.should_receive(:has_foo?).and_yield
|
78
|
-
delegate.should_receive(:check_has_foo).and_return(true)
|
79
|
-
actual.should have_foo { delegate.check_has_foo }
|
80
|
-
end
|
81
|
-
|
82
|
-
it "should fail when actual returns false for :has_sym?(&block)" do
|
83
|
-
actual = mock("actual")
|
84
|
-
delegate = mock("delegate")
|
85
|
-
actual.should_receive(:has_foo?).and_yield
|
86
|
-
delegate.should_receive(:check_has_foo).and_return(false)
|
87
|
-
lambda {
|
88
|
-
actual.should have_foo { delegate.check_has_foo }
|
89
|
-
}.should fail_with("expected #has_foo?(nil) to return true, got false")
|
90
|
-
end
|
91
|
-
|
92
|
-
it "should fail when actual does not respond to :has_sym?" do
|
93
|
-
delegate = mock("delegate", :check_has_foo => true)
|
94
|
-
lambda {
|
95
|
-
Object.new.should have_foo { delegate.check_has_foo }
|
96
|
-
}.should raise_error(NameError)
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
describe "should_not have_sym(&block)" do
|
101
|
-
it "should pass when actual returns false for :has_sym?(&block)" do
|
102
|
-
actual = mock("actual")
|
103
|
-
delegate = mock("delegate")
|
104
|
-
actual.should_receive(:has_foo?).and_yield
|
105
|
-
delegate.should_receive(:check_has_foo).and_return(false)
|
106
|
-
actual.should_not have_foo { delegate.check_has_foo }
|
107
|
-
end
|
108
|
-
|
109
|
-
it "should fail when actual returns true for :has_sym?(&block)" do
|
110
|
-
actual = mock("actual")
|
111
|
-
delegate = mock("delegate")
|
112
|
-
actual.should_receive(:has_foo?).and_yield
|
113
|
-
delegate.should_receive(:check_has_foo).and_return(true)
|
114
|
-
lambda {
|
115
|
-
actual.should_not have_foo { delegate.check_has_foo }
|
116
|
-
}.should fail_with("expected #has_foo?(nil) to return false, got true")
|
117
|
-
end
|
118
|
-
|
119
|
-
it "should fail when actual does not respond to :has_sym?" do
|
120
|
-
delegate = mock("delegate", :check_has_foo => true)
|
121
|
-
lambda {
|
122
|
-
Object.new.should_not have_foo { delegate.check_has_foo }
|
123
|
-
}.should raise_error(NameError)
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
describe "should have_sym(*args, &block)" do
|
128
|
-
it "should pass when actual returns true for :has_sym?(*args, &block)" do
|
129
|
-
actual = mock("actual")
|
130
|
-
delegate = mock("delegate")
|
131
|
-
actual.should_receive(:has_foo?).with(:a).and_yield(:a)
|
132
|
-
delegate.should_receive(:check_has_foo).with(:a).and_return(true)
|
133
|
-
actual.should have_foo(:a) { |foo| delegate.check_has_foo(foo) }
|
134
|
-
end
|
135
|
-
|
136
|
-
it "should fail when actual returns false for :has_sym?(*args, &block)" do
|
137
|
-
actual = mock("actual")
|
138
|
-
delegate = mock("delegate")
|
139
|
-
actual.should_receive(:has_foo?).with(:a).and_yield(:a)
|
140
|
-
delegate.should_receive(:check_has_foo).with(:a).and_return(false)
|
141
|
-
lambda {
|
142
|
-
actual.should have_foo(:a) { |foo| delegate.check_has_foo(foo) }
|
143
|
-
}.should fail_with("expected #has_foo?(:a) to return true, got false")
|
144
|
-
end
|
145
|
-
|
146
|
-
it "should fail when actual does not respond to :has_sym?" do
|
147
|
-
delegate = mock("delegate", :check_has_foo => true)
|
148
|
-
lambda {
|
149
|
-
Object.new.should have_foo(:a) { |foo| delegate.check_has_foo(foo) }
|
150
|
-
}.should raise_error(NameError)
|
151
|
-
end
|
152
|
-
end
|
153
|
-
|
154
|
-
describe "should_not have_sym(*args, &block)" do
|
155
|
-
it "should pass when actual returns false for :has_sym?(*args, &block)" do
|
156
|
-
actual = mock("actual")
|
157
|
-
delegate = mock("delegate")
|
158
|
-
actual.should_receive(:has_foo?).with(:a).and_yield(:a)
|
159
|
-
delegate.should_receive(:check_has_foo).with(:a).and_return(false)
|
160
|
-
actual.should_not have_foo(:a) { |foo| delegate.check_has_foo(foo) }
|
161
|
-
end
|
162
|
-
|
163
|
-
it "should fail when actual returns true for :has_sym?(*args, &block)" do
|
164
|
-
actual = mock("actual")
|
165
|
-
delegate = mock("delegate")
|
166
|
-
actual.should_receive(:has_foo?).with(:a).and_yield(:a)
|
167
|
-
delegate.should_receive(:check_has_foo).with(:a).and_return(true)
|
168
|
-
lambda {
|
169
|
-
actual.should_not have_foo(:a) { |foo| delegate.check_has_foo(foo) }
|
170
|
-
}.should fail_with("expected #has_foo?(:a) to return false, got true")
|
171
|
-
end
|
172
|
-
|
173
|
-
it "should fail when actual does not respond to :has_sym?" do
|
174
|
-
delegate = mock("delegate", :check_has_foo => true)
|
175
|
-
lambda {
|
176
|
-
Object.new.should_not have_foo(:a) { |foo| delegate.check_has_foo(foo) }
|
177
|
-
}.should raise_error(NameError)
|
178
|
-
end
|
179
|
-
end
|
180
|
-
|
181
|
-
|
182
|
-
describe "has" do
|
183
|
-
it "should work when the target implements #send" do
|
184
|
-
o = {:a => "A"}
|
185
|
-
def o.send(*args); raise "DOH! Library developers shouldn't use #send!" end
|
186
|
-
lambda {
|
187
|
-
o.should have_key(:a)
|
188
|
-
}.should_not raise_error
|
189
|
-
end
|
190
|
-
end
|
@@ -1,381 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "have matcher" do
|
4
|
-
|
5
|
-
def create_collection_owner_with(n)
|
6
|
-
owner = Spec::Expectations::Helper::CollectionOwner.new
|
7
|
-
(1..n).each do |number|
|
8
|
-
owner.add_to_collection_with_length_method(number)
|
9
|
-
owner.add_to_collection_with_size_method(number)
|
10
|
-
end
|
11
|
-
owner
|
12
|
-
end
|
13
|
-
|
14
|
-
before(:each) do
|
15
|
-
if defined?(::ActiveSupport::Inflector)
|
16
|
-
@active_support_was_defined = true
|
17
|
-
else
|
18
|
-
@active_support_was_defined = false
|
19
|
-
module ::ActiveSupport
|
20
|
-
class Inflector
|
21
|
-
def self.pluralize(string)
|
22
|
-
string.to_s + 's'
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
describe "should have(n).items" do
|
30
|
-
it "should pass if target has a collection of items with n members" do
|
31
|
-
owner = create_collection_owner_with(3)
|
32
|
-
owner.should have(3).items_in_collection_with_length_method
|
33
|
-
owner.should have(3).items_in_collection_with_size_method
|
34
|
-
end
|
35
|
-
|
36
|
-
it "should convert :no to 0" do
|
37
|
-
owner = create_collection_owner_with(0)
|
38
|
-
owner.should have(:no).items_in_collection_with_length_method
|
39
|
-
owner.should have(:no).items_in_collection_with_size_method
|
40
|
-
end
|
41
|
-
|
42
|
-
it "should fail if target has a collection of items with < n members" do
|
43
|
-
owner = create_collection_owner_with(3)
|
44
|
-
lambda {
|
45
|
-
owner.should have(4).items_in_collection_with_length_method
|
46
|
-
}.should fail_with("expected 4 items_in_collection_with_length_method, got 3")
|
47
|
-
lambda {
|
48
|
-
owner.should have(4).items_in_collection_with_size_method
|
49
|
-
}.should fail_with("expected 4 items_in_collection_with_size_method, got 3")
|
50
|
-
end
|
51
|
-
|
52
|
-
it "should fail if target has a collection of items with > n members" do
|
53
|
-
owner = create_collection_owner_with(3)
|
54
|
-
lambda {
|
55
|
-
owner.should have(2).items_in_collection_with_length_method
|
56
|
-
}.should fail_with("expected 2 items_in_collection_with_length_method, got 3")
|
57
|
-
lambda {
|
58
|
-
owner.should have(2).items_in_collection_with_size_method
|
59
|
-
}.should fail_with("expected 2 items_in_collection_with_size_method, got 3")
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
describe 'should have(1).item when ActiveSupport::Inflector is defined' do
|
64
|
-
it 'should pluralize the collection name' do
|
65
|
-
owner = create_collection_owner_with(1)
|
66
|
-
owner.should have(1).item
|
67
|
-
end
|
68
|
-
|
69
|
-
after(:each) do
|
70
|
-
unless @active_support_was_defined
|
71
|
-
Object.__send__ :remove_const, :ActiveSupport
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
describe 'should have(1).item when Inflector is defined' do
|
77
|
-
before(:each) do
|
78
|
-
if defined?(Inflector)
|
79
|
-
@inflector_was_defined = true
|
80
|
-
else
|
81
|
-
@inflector_was_defined = false
|
82
|
-
class ::Inflector
|
83
|
-
def self.pluralize(string)
|
84
|
-
string.to_s + 's'
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
it 'should pluralize the collection name' do
|
91
|
-
owner = create_collection_owner_with(1)
|
92
|
-
owner.should have(1).item
|
93
|
-
end
|
94
|
-
|
95
|
-
after(:each) do
|
96
|
-
unless @inflector_was_defined
|
97
|
-
Object.__send__ :remove_const, :Inflector
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
describe "should have(n).items where result responds to items but returns something other than a collection" do
|
103
|
-
it "should provide a meaningful error" do
|
104
|
-
owner = Class.new do
|
105
|
-
def items
|
106
|
-
Object.new
|
107
|
-
end
|
108
|
-
end.new
|
109
|
-
lambda do
|
110
|
-
owner.should have(3).items
|
111
|
-
end.should raise_error("expected items to be a collection but it does not respond to #length or #size")
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
describe "should_not have(n).items" do
|
116
|
-
it "should pass if target has a collection of items with < n members" do
|
117
|
-
owner = create_collection_owner_with(3)
|
118
|
-
owner.should_not have(4).items_in_collection_with_length_method
|
119
|
-
owner.should_not have(4).items_in_collection_with_size_method
|
120
|
-
end
|
121
|
-
|
122
|
-
it "should pass if target has a collection of items with > n members" do
|
123
|
-
owner = create_collection_owner_with(3)
|
124
|
-
owner.should_not have(2).items_in_collection_with_length_method
|
125
|
-
owner.should_not have(2).items_in_collection_with_size_method
|
126
|
-
end
|
127
|
-
|
128
|
-
it "should fail if target has a collection of items with n members" do
|
129
|
-
owner = create_collection_owner_with(3)
|
130
|
-
lambda {
|
131
|
-
owner.should_not have(3).items_in_collection_with_length_method
|
132
|
-
}.should fail_with("expected target not to have 3 items_in_collection_with_length_method, got 3")
|
133
|
-
lambda {
|
134
|
-
owner.should_not have(3).items_in_collection_with_size_method
|
135
|
-
}.should fail_with("expected target not to have 3 items_in_collection_with_size_method, got 3")
|
136
|
-
end
|
137
|
-
end
|
138
|
-
|
139
|
-
describe "should have_exactly(n).items" do
|
140
|
-
it "should pass if target has a collection of items with n members" do
|
141
|
-
owner = create_collection_owner_with(3)
|
142
|
-
owner.should have_exactly(3).items_in_collection_with_length_method
|
143
|
-
owner.should have_exactly(3).items_in_collection_with_size_method
|
144
|
-
end
|
145
|
-
|
146
|
-
it "should convert :no to 0" do
|
147
|
-
owner = create_collection_owner_with(0)
|
148
|
-
owner.should have_exactly(:no).items_in_collection_with_length_method
|
149
|
-
owner.should have_exactly(:no).items_in_collection_with_size_method
|
150
|
-
end
|
151
|
-
|
152
|
-
it "should fail if target has a collection of items with < n members" do
|
153
|
-
owner = create_collection_owner_with(3)
|
154
|
-
lambda {
|
155
|
-
owner.should have_exactly(4).items_in_collection_with_length_method
|
156
|
-
}.should fail_with("expected 4 items_in_collection_with_length_method, got 3")
|
157
|
-
lambda {
|
158
|
-
owner.should have_exactly(4).items_in_collection_with_size_method
|
159
|
-
}.should fail_with("expected 4 items_in_collection_with_size_method, got 3")
|
160
|
-
end
|
161
|
-
|
162
|
-
it "should fail if target has a collection of items with > n members" do
|
163
|
-
owner = create_collection_owner_with(3)
|
164
|
-
lambda {
|
165
|
-
owner.should have_exactly(2).items_in_collection_with_length_method
|
166
|
-
}.should fail_with("expected 2 items_in_collection_with_length_method, got 3")
|
167
|
-
lambda {
|
168
|
-
owner.should have_exactly(2).items_in_collection_with_size_method
|
169
|
-
}.should fail_with("expected 2 items_in_collection_with_size_method, got 3")
|
170
|
-
end
|
171
|
-
end
|
172
|
-
|
173
|
-
describe "should have_at_least(n).items" do
|
174
|
-
it "should pass if target has a collection of items with n members" do
|
175
|
-
owner = create_collection_owner_with(3)
|
176
|
-
owner.should have_at_least(3).items_in_collection_with_length_method
|
177
|
-
owner.should have_at_least(3).items_in_collection_with_size_method
|
178
|
-
end
|
179
|
-
|
180
|
-
it "should pass if target has a collection of items with > n members" do
|
181
|
-
owner = create_collection_owner_with(3)
|
182
|
-
owner.should have_at_least(2).items_in_collection_with_length_method
|
183
|
-
owner.should have_at_least(2).items_in_collection_with_size_method
|
184
|
-
end
|
185
|
-
|
186
|
-
it "should fail if target has a collection of items with < n members" do
|
187
|
-
owner = create_collection_owner_with(3)
|
188
|
-
lambda {
|
189
|
-
owner.should have_at_least(4).items_in_collection_with_length_method
|
190
|
-
}.should fail_with("expected at least 4 items_in_collection_with_length_method, got 3")
|
191
|
-
lambda {
|
192
|
-
owner.should have_at_least(4).items_in_collection_with_size_method
|
193
|
-
}.should fail_with("expected at least 4 items_in_collection_with_size_method, got 3")
|
194
|
-
end
|
195
|
-
|
196
|
-
it "should provide educational negative failure messages" do
|
197
|
-
#given
|
198
|
-
owner = create_collection_owner_with(3)
|
199
|
-
length_matcher = have_at_least(3).items_in_collection_with_length_method
|
200
|
-
size_matcher = have_at_least(3).items_in_collection_with_size_method
|
201
|
-
|
202
|
-
#when
|
203
|
-
length_matcher.matches?(owner)
|
204
|
-
size_matcher.matches?(owner)
|
205
|
-
|
206
|
-
#then
|
207
|
-
length_matcher.failure_message_for_should_not.should == <<-EOF
|
208
|
-
Isn't life confusing enough?
|
209
|
-
Instead of having to figure out the meaning of this:
|
210
|
-
should_not have_at_least(3).items_in_collection_with_length_method
|
211
|
-
We recommend that you use this instead:
|
212
|
-
should have_at_most(2).items_in_collection_with_length_method
|
213
|
-
EOF
|
214
|
-
|
215
|
-
size_matcher.failure_message_for_should_not.should == <<-EOF
|
216
|
-
Isn't life confusing enough?
|
217
|
-
Instead of having to figure out the meaning of this:
|
218
|
-
should_not have_at_least(3).items_in_collection_with_size_method
|
219
|
-
We recommend that you use this instead:
|
220
|
-
should have_at_most(2).items_in_collection_with_size_method
|
221
|
-
EOF
|
222
|
-
end
|
223
|
-
end
|
224
|
-
|
225
|
-
describe "should have_at_most(n).items" do
|
226
|
-
it "should pass if target has a collection of items with n members" do
|
227
|
-
owner = create_collection_owner_with(3)
|
228
|
-
owner.should have_at_most(3).items_in_collection_with_length_method
|
229
|
-
owner.should have_at_most(3).items_in_collection_with_size_method
|
230
|
-
end
|
231
|
-
|
232
|
-
it "should fail if target has a collection of items with > n members" do
|
233
|
-
owner = create_collection_owner_with(3)
|
234
|
-
lambda {
|
235
|
-
owner.should have_at_most(2).items_in_collection_with_length_method
|
236
|
-
}.should fail_with("expected at most 2 items_in_collection_with_length_method, got 3")
|
237
|
-
lambda {
|
238
|
-
owner.should have_at_most(2).items_in_collection_with_size_method
|
239
|
-
}.should fail_with("expected at most 2 items_in_collection_with_size_method, got 3")
|
240
|
-
end
|
241
|
-
|
242
|
-
it "should pass if target has a collection of items with < n members" do
|
243
|
-
owner = create_collection_owner_with(3)
|
244
|
-
owner.should have_at_most(4).items_in_collection_with_length_method
|
245
|
-
owner.should have_at_most(4).items_in_collection_with_size_method
|
246
|
-
end
|
247
|
-
|
248
|
-
it "should provide educational negative failure messages" do
|
249
|
-
#given
|
250
|
-
owner = create_collection_owner_with(3)
|
251
|
-
length_matcher = have_at_most(3).items_in_collection_with_length_method
|
252
|
-
size_matcher = have_at_most(3).items_in_collection_with_size_method
|
253
|
-
|
254
|
-
#when
|
255
|
-
length_matcher.matches?(owner)
|
256
|
-
size_matcher.matches?(owner)
|
257
|
-
|
258
|
-
#then
|
259
|
-
length_matcher.failure_message_for_should_not.should == <<-EOF
|
260
|
-
Isn't life confusing enough?
|
261
|
-
Instead of having to figure out the meaning of this:
|
262
|
-
should_not have_at_most(3).items_in_collection_with_length_method
|
263
|
-
We recommend that you use this instead:
|
264
|
-
should have_at_least(4).items_in_collection_with_length_method
|
265
|
-
EOF
|
266
|
-
|
267
|
-
size_matcher.failure_message_for_should_not.should == <<-EOF
|
268
|
-
Isn't life confusing enough?
|
269
|
-
Instead of having to figure out the meaning of this:
|
270
|
-
should_not have_at_most(3).items_in_collection_with_size_method
|
271
|
-
We recommend that you use this instead:
|
272
|
-
should have_at_least(4).items_in_collection_with_size_method
|
273
|
-
EOF
|
274
|
-
end
|
275
|
-
end
|
276
|
-
|
277
|
-
describe "have(n).items(args, block)" do
|
278
|
-
it "should pass args to target" do
|
279
|
-
target = mock("target")
|
280
|
-
target.should_receive(:items).with("arg1","arg2").and_return([1,2,3])
|
281
|
-
target.should have(3).items("arg1","arg2")
|
282
|
-
end
|
283
|
-
|
284
|
-
it "should pass block to target" do
|
285
|
-
target = mock("target")
|
286
|
-
block = lambda { 5 }
|
287
|
-
target.should_receive(:items).with("arg1","arg2", block).and_return([1,2,3])
|
288
|
-
target.should have(3).items("arg1","arg2", block)
|
289
|
-
end
|
290
|
-
end
|
291
|
-
|
292
|
-
describe "have(n).items where target IS a collection" do
|
293
|
-
it "should reference the number of items IN the collection" do
|
294
|
-
[1,2,3].should have(3).items
|
295
|
-
end
|
296
|
-
|
297
|
-
it "should fail when the number of items IN the collection is not as expected" do
|
298
|
-
lambda { [1,2,3].should have(7).items }.should fail_with("expected 7 items, got 3")
|
299
|
-
end
|
300
|
-
end
|
301
|
-
|
302
|
-
describe "have(n).characters where target IS a String" do
|
303
|
-
it "should pass if the length is correct" do
|
304
|
-
"this string".should have(11).characters
|
305
|
-
end
|
306
|
-
|
307
|
-
it "should fail if the length is incorrect" do
|
308
|
-
lambda { "this string".should have(12).characters }.should fail_with("expected 12 characters, got 11")
|
309
|
-
end
|
310
|
-
end
|
311
|
-
|
312
|
-
describe "have(n).things on an object which is not a collection nor contains one" do
|
313
|
-
it "should fail" do
|
314
|
-
lambda { Object.new.should have(2).things }.should raise_error(NoMethodError, /undefined method `things' for #<Object:/)
|
315
|
-
end
|
316
|
-
end
|
317
|
-
|
318
|
-
describe Spec::Matchers::Have, "for a collection owner that implements #send" do
|
319
|
-
before(:each) do
|
320
|
-
@collection = Object.new
|
321
|
-
def @collection.floozles; [1,2] end
|
322
|
-
def @collection.send(*args); raise "DOH! Library developers shouldn't use #send!" end
|
323
|
-
end
|
324
|
-
|
325
|
-
it "should work in the straightforward case" do
|
326
|
-
lambda {
|
327
|
-
@collection.should have(2).floozles
|
328
|
-
}.should_not raise_error
|
329
|
-
end
|
330
|
-
|
331
|
-
it "should work when doing automatic pluralization" do
|
332
|
-
lambda {
|
333
|
-
@collection.should have_at_least(1).floozle
|
334
|
-
}.should_not raise_error
|
335
|
-
end
|
336
|
-
|
337
|
-
it "should blow up when the owner doesn't respond to that method" do
|
338
|
-
lambda {
|
339
|
-
@collection.should have(99).problems
|
340
|
-
}.should raise_error(NoMethodError, /problems/)
|
341
|
-
end
|
342
|
-
end
|
343
|
-
|
344
|
-
module Spec
|
345
|
-
module Matchers
|
346
|
-
describe Have do
|
347
|
-
treats_method_missing_as_private :noop => false
|
348
|
-
|
349
|
-
describe "respond_to?" do
|
350
|
-
before :each do
|
351
|
-
@have = Have.new(:foo)
|
352
|
-
@a_method_which_have_defines = Have.instance_methods.first
|
353
|
-
@a_method_which_object_defines = Object.instance_methods.first
|
354
|
-
end
|
355
|
-
|
356
|
-
it "should be true for a method which Have defines" do
|
357
|
-
@have.should respond_to(@a_method_which_have_defines)
|
358
|
-
end
|
359
|
-
|
360
|
-
it "should be true for a method that it's superclass (Object) defines" do
|
361
|
-
@have.should respond_to(@a_method_which_object_defines)
|
362
|
-
end
|
363
|
-
|
364
|
-
it "should be false for a method which neither Object nor nor Have defines" do
|
365
|
-
@have.should_not respond_to(:foo_bar_baz)
|
366
|
-
end
|
367
|
-
|
368
|
-
it "should be false if the owner doesn't respond to the method" do
|
369
|
-
have = Have.new(99)
|
370
|
-
have.should_not respond_to(:problems)
|
371
|
-
end
|
372
|
-
|
373
|
-
it "should be true if the owner responds to the method" do
|
374
|
-
have = Have.new(:a_symbol)
|
375
|
-
have.should respond_to(:to_sym)
|
376
|
-
end
|
377
|
-
end
|
378
|
-
end
|
379
|
-
end
|
380
|
-
end
|
381
|
-
end
|