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,4 +1,4 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
4
|
module Mocks
|
|
@@ -13,112 +13,85 @@ module Spec
|
|
|
13
13
|
:original_value
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
|
-
@
|
|
16
|
+
@instance = @class.new
|
|
17
|
+
@stub = Object.new
|
|
17
18
|
end
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
it "should allow for a mock expectation to temporarily replace a method stub on a non-mock" do
|
|
30
|
-
@obj.stub!(:msg).and_return(:stub_value)
|
|
31
|
-
@obj.should_receive(:msg).with(:arg).and_return(:mock_value)
|
|
32
|
-
@obj.msg(:arg).should equal(:mock_value)
|
|
33
|
-
@obj.msg.should equal(:stub_value)
|
|
34
|
-
@obj.msg.should equal(:stub_value)
|
|
35
|
-
@obj.rspec_verify
|
|
20
|
+
[:stub!, :stub].each do |method|
|
|
21
|
+
context "using #{method}" do
|
|
22
|
+
it "should return expected value when expected message is received" do
|
|
23
|
+
@instance.send(method, :msg).and_return(:return_value)
|
|
24
|
+
@instance.msg.should equal(:return_value)
|
|
25
|
+
@instance.rspec_verify
|
|
26
|
+
end
|
|
27
|
+
end
|
|
36
28
|
end
|
|
37
29
|
|
|
38
|
-
it "should ignore when expected message is
|
|
39
|
-
@
|
|
30
|
+
it "should ignore when expected message is received" do
|
|
31
|
+
@instance.stub!(:msg)
|
|
32
|
+
@instance.msg
|
|
40
33
|
lambda do
|
|
41
|
-
@
|
|
34
|
+
@instance.rspec_verify
|
|
42
35
|
end.should_not raise_error
|
|
43
36
|
end
|
|
44
|
-
|
|
45
|
-
it "should
|
|
46
|
-
@
|
|
47
|
-
@
|
|
48
|
-
@obj.rspec_verify
|
|
37
|
+
|
|
38
|
+
it "should ignore when message is received with args" do
|
|
39
|
+
@instance.stub!(:msg)
|
|
40
|
+
@instance.msg(:an_arg)
|
|
49
41
|
lambda do
|
|
50
|
-
@
|
|
51
|
-
end.
|
|
42
|
+
@instance.rspec_verify
|
|
43
|
+
end.should_not raise_error
|
|
52
44
|
end
|
|
53
45
|
|
|
54
|
-
it "should ignore when expected message is received" do
|
|
55
|
-
@
|
|
56
|
-
|
|
57
|
-
|
|
46
|
+
it "should ignore when expected message is not received" do
|
|
47
|
+
@instance.stub!(:msg)
|
|
48
|
+
lambda do
|
|
49
|
+
@instance.rspec_verify
|
|
50
|
+
end.should_not raise_error
|
|
58
51
|
end
|
|
59
52
|
|
|
60
|
-
it "should
|
|
61
|
-
@
|
|
62
|
-
@
|
|
63
|
-
@
|
|
53
|
+
it "should handle multiple stubbed methods" do
|
|
54
|
+
@instance.stub!(:msg1 => 1, :msg2 => 2)
|
|
55
|
+
@instance.msg1.should == 1
|
|
56
|
+
@instance.msg2.should == 2
|
|
64
57
|
end
|
|
65
58
|
|
|
66
|
-
it "should
|
|
59
|
+
it "should clear itself when verified" do
|
|
60
|
+
@instance.stub!(:this_should_go).and_return(:blah)
|
|
61
|
+
@instance.this_should_go.should == :blah
|
|
62
|
+
@instance.rspec_verify
|
|
67
63
|
lambda do
|
|
68
|
-
|
|
69
|
-
end.should raise_error(
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
it "should return expected value when expected message is received" do
|
|
73
|
-
@obj.stub!(:msg).and_return(:return_value)
|
|
74
|
-
@obj.msg.should equal(:return_value)
|
|
75
|
-
@obj.rspec_verify
|
|
64
|
+
@instance.this_should_go
|
|
65
|
+
end.should raise_error(NameError)
|
|
76
66
|
end
|
|
77
67
|
|
|
78
68
|
it "should return values in order to consecutive calls" do
|
|
79
69
|
return_values = ["1",2,Object.new]
|
|
80
|
-
@
|
|
81
|
-
@
|
|
82
|
-
@
|
|
83
|
-
@
|
|
70
|
+
@instance.stub!(:msg).and_return(return_values[0],return_values[1],return_values[2])
|
|
71
|
+
@instance.msg.should == return_values[0]
|
|
72
|
+
@instance.msg.should == return_values[1]
|
|
73
|
+
@instance.msg.should == return_values[2]
|
|
84
74
|
end
|
|
85
75
|
|
|
86
76
|
it "should keep returning last value in consecutive calls" do
|
|
87
77
|
return_values = ["1",2,Object.new]
|
|
88
|
-
@
|
|
89
|
-
@
|
|
90
|
-
@
|
|
91
|
-
@
|
|
92
|
-
@
|
|
93
|
-
@
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
it "should revert to original instance method if
|
|
97
|
-
@
|
|
98
|
-
@
|
|
99
|
-
@
|
|
100
|
-
@
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
# org.jruby.internal.runtime.methods.AbstractCallable.call(AbstractCallable.java:64)
|
|
106
|
-
# org.jruby.runtime.ThreadContext.yieldInternal(ThreadContext.java:574)
|
|
107
|
-
# org.jruby.runtime.ThreadContext.yieldSpecificBlock(ThreadContext.java:549)
|
|
108
|
-
# org.jruby.runtime.Block.call(Block.java:158)
|
|
109
|
-
# org.jruby.RubyProc.call(RubyProc.java:118)
|
|
110
|
-
# org.jruby.internal.runtime.methods.ProcMethod.internalCall(ProcMethod.java:69)
|
|
111
|
-
# org.jruby.internal.runtime.methods.AbstractMethod.call(AbstractMethod.java:58)
|
|
112
|
-
# org.jruby.RubyObject.callMethod(RubyObject.java:379)
|
|
113
|
-
# org.jruby.RubyObject.callMethod(RubyObject.java:331)
|
|
114
|
-
# org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:472)
|
|
115
|
-
# org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:462)
|
|
116
|
-
# org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:390)
|
|
117
|
-
# org.jruby.evaluator.EvaluationState.eval(EvaluationState.java:133)
|
|
118
|
-
@obj.existing_instance_method.should equal(:original_value)
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
it "should revert to original class method if existed" do
|
|
78
|
+
@instance.stub!(:msg).and_return(return_values[0],return_values[1],return_values[2])
|
|
79
|
+
@instance.msg.should == return_values[0]
|
|
80
|
+
@instance.msg.should == return_values[1]
|
|
81
|
+
@instance.msg.should == return_values[2]
|
|
82
|
+
@instance.msg.should == return_values[2]
|
|
83
|
+
@instance.msg.should == return_values[2]
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it "should revert to original instance method if there is one" do
|
|
87
|
+
@instance.existing_instance_method.should equal(:original_value)
|
|
88
|
+
@instance.stub!(:existing_instance_method).and_return(:mock_value)
|
|
89
|
+
@instance.existing_instance_method.should equal(:mock_value)
|
|
90
|
+
@instance.rspec_verify
|
|
91
|
+
@instance.existing_instance_method.should equal(:original_value)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
it "should revert to original class method if there is one" do
|
|
122
95
|
@class.existing_class_method.should equal(:original_value)
|
|
123
96
|
@class.stub!(:existing_class_method).and_return(:mock_value)
|
|
124
97
|
@class.existing_class_method.should equal(:mock_value)
|
|
@@ -126,34 +99,105 @@ module Spec
|
|
|
126
99
|
@class.existing_class_method.should equal(:original_value)
|
|
127
100
|
end
|
|
128
101
|
|
|
129
|
-
it "should
|
|
130
|
-
@
|
|
131
|
-
@obj.this_should_go.should == :blah
|
|
132
|
-
@obj.rspec_verify
|
|
133
|
-
lambda do
|
|
134
|
-
@obj.this_should_go
|
|
135
|
-
end.should raise_error
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
it "should support yielding" do
|
|
139
|
-
@obj.stub!(:method_that_yields).and_yield(:yielded_value)
|
|
102
|
+
it "should yield a specified object" do
|
|
103
|
+
@instance.stub!(:method_that_yields).and_yield(:yielded_obj)
|
|
140
104
|
current_value = :value_before
|
|
141
|
-
@
|
|
142
|
-
current_value.should == :
|
|
143
|
-
@
|
|
105
|
+
@instance.method_that_yields {|val| current_value = val}
|
|
106
|
+
current_value.should == :yielded_obj
|
|
107
|
+
@instance.rspec_verify
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
it "should yield multiple times with multiple calls to and_yield" do
|
|
111
|
+
@instance.stub!(:method_that_yields_multiple_times).and_yield(:yielded_value).
|
|
112
|
+
and_yield(:another_value)
|
|
113
|
+
current_value = []
|
|
114
|
+
@instance.method_that_yields_multiple_times {|val| current_value << val}
|
|
115
|
+
current_value.should == [:yielded_value, :another_value]
|
|
116
|
+
@instance.rspec_verify
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
it "should yield a specified object and return another specified object" do
|
|
120
|
+
yielded_obj = mock("my mock")
|
|
121
|
+
yielded_obj.should_receive(:foo).with(:bar)
|
|
122
|
+
@instance.stub!(:method_that_yields_and_returns).and_yield(yielded_obj).and_return(:baz)
|
|
123
|
+
@instance.method_that_yields_and_returns { |o| o.foo :bar }.should == :baz
|
|
144
124
|
end
|
|
145
125
|
|
|
146
126
|
it "should throw when told to" do
|
|
147
|
-
@mock.stub!(:something).and_throw(:
|
|
127
|
+
@mock.stub!(:something).and_throw(:up)
|
|
148
128
|
lambda do
|
|
149
129
|
@mock.something
|
|
150
|
-
end.should throw_symbol(:
|
|
130
|
+
end.should throw_symbol(:up)
|
|
151
131
|
end
|
|
152
|
-
|
|
153
|
-
it "should
|
|
132
|
+
|
|
133
|
+
it "should override a pre-existing stub" do
|
|
154
134
|
@stub.stub!(:existing_instance_method).and_return(:updated_stub_value)
|
|
155
135
|
@stub.existing_instance_method.should == :updated_stub_value
|
|
156
136
|
end
|
|
137
|
+
|
|
138
|
+
it "should limit " do
|
|
139
|
+
@stub.stub!(:foo).with("bar")
|
|
140
|
+
@stub.should_receive(:foo).with("baz")
|
|
141
|
+
@stub.foo("bar")
|
|
142
|
+
@stub.foo("baz")
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
it "calculates return value by executing block passed to #and_return" do
|
|
146
|
+
@mock.stub!(:something).with("a","b","c").and_return { |a,b,c| c+b+a }
|
|
147
|
+
@mock.something("a","b","c").should == "cba"
|
|
148
|
+
@mock.rspec_verify
|
|
149
|
+
end
|
|
157
150
|
end
|
|
151
|
+
|
|
152
|
+
describe "A method stub with args" do
|
|
153
|
+
before(:each) do
|
|
154
|
+
@stub = Object.new
|
|
155
|
+
@stub.stub!(:foo).with("bar")
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
it "should not complain if not called" do
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
it "should not complain if called with arg" do
|
|
162
|
+
@stub.foo("bar")
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
it "should complain if called with no arg" do
|
|
166
|
+
lambda do
|
|
167
|
+
@stub.foo
|
|
168
|
+
end.should raise_error
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
it "should complain if called with other arg" do
|
|
172
|
+
lambda do
|
|
173
|
+
@stub.foo("other")
|
|
174
|
+
end.should raise_error
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
it "should not complain if also mocked w/ different args" do
|
|
178
|
+
@stub.should_receive(:foo).with("baz")
|
|
179
|
+
@stub.foo("bar")
|
|
180
|
+
@stub.foo("baz")
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
it "should complain if also mocked w/ different args AND called w/ a 3rd set of args" do
|
|
184
|
+
@stub.should_receive(:foo).with("baz")
|
|
185
|
+
@stub.foo("bar")
|
|
186
|
+
@stub.foo("baz")
|
|
187
|
+
lambda do
|
|
188
|
+
@stub.foo("other")
|
|
189
|
+
end.should raise_error
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
it "should support options" do
|
|
193
|
+
@stub.stub!(:foo, :expected_from => "bar")
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
it "should use 'Stub' in the failure message" do
|
|
197
|
+
stub = stub('name')
|
|
198
|
+
expect {stub.foo}.to raise_error(/Stub "name" received/)
|
|
199
|
+
end
|
|
200
|
+
end
|
|
201
|
+
|
|
158
202
|
end
|
|
159
|
-
end
|
|
203
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Mocks
|
|
5
|
+
describe "Example with stubbed and then called message" do
|
|
6
|
+
it "fails if the message is expected and then subsequently not called again" do
|
|
7
|
+
mock_obj = mock("mock", :msg => nil)
|
|
8
|
+
mock_obj.msg
|
|
9
|
+
mock_obj.should_receive(:msg)
|
|
10
|
+
lambda { mock_obj.rspec_verify }.should raise_error(Spec::Mocks::MockExpectationError)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "outputs arguments of all similar calls" do
|
|
14
|
+
m = mock('mock', :foo => true)
|
|
15
|
+
m.should_receive(:foo).with('first')
|
|
16
|
+
m.foo('second')
|
|
17
|
+
m.foo('third')
|
|
18
|
+
lambda do
|
|
19
|
+
m.rspec_verify
|
|
20
|
+
end.should raise_error(%Q|Mock "mock" received :foo with unexpected arguments\n expected: ("first")\n got: (["second"], ["third"])|)
|
|
21
|
+
m.rspec_reset
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Mocks
|
|
5
|
+
describe Mock do
|
|
6
|
+
context "unstubbing a mock object with a stub" do
|
|
7
|
+
it "should remove the stub" do
|
|
8
|
+
a_mock = mock 'an object', :foo => :bar
|
|
9
|
+
|
|
10
|
+
a_mock.unstub! :foo
|
|
11
|
+
a_mock.should_not respond_to(:foo)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
context "unstubbing a real object with a stub" do
|
|
16
|
+
before do
|
|
17
|
+
@obj = Object.new
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should raise a NoMethodError if the message is called after unstubbing" do
|
|
21
|
+
@obj.stub!(:foo).and_return :bar
|
|
22
|
+
@obj.unstub!(:foo)
|
|
23
|
+
|
|
24
|
+
lambda {
|
|
25
|
+
@obj.foo
|
|
26
|
+
}.should raise_error(NoMethodError)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "should only clear the stub specified" do
|
|
30
|
+
@obj.stub!(:foo).and_return :bar
|
|
31
|
+
@obj.stub!(:other).and_return :baz
|
|
32
|
+
|
|
33
|
+
@obj.unstub!(:foo)
|
|
34
|
+
|
|
35
|
+
@obj.other.should == :baz
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "should no longer respond_to? the method" do
|
|
39
|
+
@obj.stub!(:foo).and_return :bar
|
|
40
|
+
@obj.unstub!(:foo)
|
|
41
|
+
|
|
42
|
+
@obj.should_not respond_to(:foo)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "should unstub using a string (should convert the string to a symbol)" do
|
|
46
|
+
@obj.stub!(:foo)
|
|
47
|
+
|
|
48
|
+
@obj.unstub!("foo")
|
|
49
|
+
|
|
50
|
+
@obj.should_not respond_to(:foo)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "should restore a previous method definition" do
|
|
54
|
+
def @obj.foo
|
|
55
|
+
:a_result
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
@obj.stub!(:foo).and_return :stubbed_result
|
|
59
|
+
@obj.unstub!(:foo)
|
|
60
|
+
|
|
61
|
+
@obj.foo.should == :a_result
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "should have unstub as an alias of unstub!" do
|
|
65
|
+
@obj.stub!(:foo).and_return :bar
|
|
66
|
+
|
|
67
|
+
@obj.unstub(:foo)
|
|
68
|
+
|
|
69
|
+
lambda {
|
|
70
|
+
@obj.foo
|
|
71
|
+
}.should raise_error(NoMethodError)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it "should raise a MockExpectationError if it is not stubbed" do
|
|
75
|
+
lambda {
|
|
76
|
+
@obj.unstub!(:foo)
|
|
77
|
+
}.should raise_error(MockExpectationError, "The method `foo` was not stubbed or was already unstubbed")
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
it "should raise a MockExpectationError if it was already unstubbed" do
|
|
81
|
+
@obj.stub!(:foo)
|
|
82
|
+
@obj.unstub!(:foo)
|
|
83
|
+
|
|
84
|
+
lambda {
|
|
85
|
+
@obj.unstub!(:foo)
|
|
86
|
+
}.should raise_error(MockExpectationError, "The method `foo` was not stubbed or was already unstubbed")
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
it "should use the correct message name in the error" do
|
|
90
|
+
@obj.stub!(:bar)
|
|
91
|
+
@obj.unstub!(:bar)
|
|
92
|
+
|
|
93
|
+
lambda {
|
|
94
|
+
@obj.unstub!(:bar)
|
|
95
|
+
}.should raise_error(MockExpectationError, "The method `bar` was not stubbed or was already unstubbed")
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it "should raise a MockExpectationError if the method is defined, but not stubbed" do
|
|
99
|
+
def @obj.meth; end
|
|
100
|
+
|
|
101
|
+
lambda {
|
|
102
|
+
@obj.unstub!(:meth)
|
|
103
|
+
}.should raise_error(MockExpectationError)
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
it "should be able to restub a after unstubbing" do
|
|
107
|
+
@obj.stub!(:foo).and_return :bar
|
|
108
|
+
|
|
109
|
+
@obj.unstub!(:foo)
|
|
110
|
+
|
|
111
|
+
@obj.stub!(:foo).and_return :baz
|
|
112
|
+
|
|
113
|
+
@obj.foo.should == :baz
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
it "should remove only the first stub if multiple stubs have been defined" do
|
|
117
|
+
@obj.stub!(:foo).and_return :first
|
|
118
|
+
@obj.stub!(:foo).and_return :second
|
|
119
|
+
|
|
120
|
+
@obj.unstub!(:foo)
|
|
121
|
+
|
|
122
|
+
@obj.foo.should == :first
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
end
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'ruby_forker'
|
|
2
3
|
|
|
3
4
|
describe "The bin/spec script" do
|
|
5
|
+
include RubyForker
|
|
6
|
+
|
|
4
7
|
it "should have no warnings" do
|
|
5
|
-
|
|
6
|
-
output = nil
|
|
7
|
-
IO.popen("ruby -w #{spec_path} --help 2>&1") do |io|
|
|
8
|
-
output = io.read
|
|
9
|
-
end
|
|
8
|
+
output = ruby "-w -Ilib bin/spec --help"
|
|
10
9
|
output.should_not =~ /warning/n
|
|
11
10
|
end
|
|
12
|
-
|
|
11
|
+
|
|
12
|
+
it "should show the help w/ no args" do
|
|
13
|
+
output = ruby "-w -Ilib bin/spec"
|
|
14
|
+
output.should =~ /^Usage: spec/
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'spec/rake/spectask'
|
|
3
|
+
|
|
4
|
+
module Spec
|
|
5
|
+
module Rake
|
|
6
|
+
|
|
7
|
+
class MockTask
|
|
8
|
+
class << self
|
|
9
|
+
attr_accessor :last_instance, :last_cmd
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def self.tasks
|
|
13
|
+
@tasks ||= {}
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def self.reset_tasks
|
|
17
|
+
@tasks = {}
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.task(name)
|
|
21
|
+
tasks[name]
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def self.register_task(name, block)
|
|
25
|
+
tasks[name] = block
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def initialize(name, &block)
|
|
29
|
+
MockTask.register_task(name, block)
|
|
30
|
+
MockTask.last_instance = block
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def self.create_task(name, &block)
|
|
34
|
+
new(name, &block)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
class SpecTask
|
|
39
|
+
def task(name, &block)
|
|
40
|
+
MockTask.create_task(name, &block)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def system(cmd)
|
|
44
|
+
MockTask.last_cmd = cmd
|
|
45
|
+
true
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def default_ruby_path
|
|
49
|
+
RUBY
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
describe SpecTask do
|
|
54
|
+
|
|
55
|
+
before(:each) do
|
|
56
|
+
MockTask.reset_tasks
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it "should execute rake's ruby path by default" do
|
|
60
|
+
task = SpecTask.new
|
|
61
|
+
MockTask.last_instance.call
|
|
62
|
+
MockTask.last_cmd.should match(/^#{task.default_ruby_path} /)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it "should execute the command with system if ruby_cmd is specified" do
|
|
66
|
+
task = SpecTask.new {|t| t.ruby_cmd = "path_to_multiruby"}
|
|
67
|
+
task.should_receive(:system).and_return(true)
|
|
68
|
+
MockTask.last_instance.call
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it "should execute the ruby_cmd path if specified" do
|
|
72
|
+
SpecTask.new {|t| t.ruby_cmd = "path_to_multiruby"}
|
|
73
|
+
MockTask.last_instance.call
|
|
74
|
+
MockTask.last_cmd.should match(/^path_to_multiruby /)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "should produce a deprecation warning if the out option is used" do
|
|
78
|
+
SpecTask.new {|t| t.out = "somewhere_over_the_rainbow"}
|
|
79
|
+
STDERR.should_receive(:puts).with("The Spec::Rake::SpecTask#out attribute is DEPRECATED and will be removed in a future version. Use --format FORMAT:WHERE instead.")
|
|
80
|
+
MockTask.last_instance.call
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it "should produce an error if failure_message is set and the command fails" do
|
|
84
|
+
task = SpecTask.new {|t| t.failure_message = "oops"; t.fail_on_error = false}
|
|
85
|
+
STDERR.should_receive(:puts).with("oops")
|
|
86
|
+
task.stub(:system).and_return(false)
|
|
87
|
+
MockTask.last_instance.call
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it "should raise if fail_on_error is set and the command fails" do
|
|
91
|
+
task = SpecTask.new
|
|
92
|
+
task.stub(:system).and_return(false)
|
|
93
|
+
lambda {MockTask.last_instance.call}.should raise_error
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it "should not raise if fail_on_error is not set and the command fails" do
|
|
97
|
+
task = SpecTask.new {|t| t.fail_on_error = false}
|
|
98
|
+
task.stub(:system).and_return(false)
|
|
99
|
+
lambda {MockTask.last_instance.call}.should_not raise_error
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
context "with ENV['SPEC'] set" do
|
|
103
|
+
before(:each) do
|
|
104
|
+
@orig_env_spec = ENV['SPEC']
|
|
105
|
+
ENV['SPEC'] = 'foo.rb'
|
|
106
|
+
end
|
|
107
|
+
after(:each) do
|
|
108
|
+
ENV['SPEC'] = @orig_env_spec
|
|
109
|
+
end
|
|
110
|
+
it "should use the provided file list" do
|
|
111
|
+
task = SpecTask.new
|
|
112
|
+
task.spec_file_list.should == ["foo.rb"]
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
context "with the rcov option" do
|
|
117
|
+
|
|
118
|
+
it "should create a clobber_rcov task" do
|
|
119
|
+
MockTask.stub!(:create_task)
|
|
120
|
+
MockTask.should_receive(:create_task).with(:clobber_rcov)
|
|
121
|
+
SpecTask.new(:rcov) {|t| t.rcov = true}
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
it "should setup the clobber_rcov task to remove the rcov directory" do
|
|
125
|
+
task = SpecTask.new(:rcov) {|t| t.rcov = true; t.rcov_dir = "path_to_rcov_directory"}
|
|
126
|
+
task.should_receive(:rm_r).with("path_to_rcov_directory")
|
|
127
|
+
MockTask.task(:clobber_rcov).call
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
it "should make the clobber task depend on clobber_rcov" do
|
|
131
|
+
MockTask.stub!(:create_task)
|
|
132
|
+
MockTask.should_receive(:create_task).with(:clobber => [:clobber_rcov])
|
|
133
|
+
SpecTask.new(:rcov) {|t| t.rcov = true}
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
it "should make the rcov task depend on clobber_rcov" do
|
|
137
|
+
MockTask.stub!(:create_task)
|
|
138
|
+
MockTask.should_receive(:create_task).with(:rcov => :clobber_rcov)
|
|
139
|
+
SpecTask.new(:rcov) {|t| t.rcov = true}
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
it "creates an rcov options list" do
|
|
143
|
+
MockTask.stub!(:create_task)
|
|
144
|
+
task = SpecTask.new(:rcov) {|t| t.rcov = true, t.rcov_opts = ['a','b']}
|
|
145
|
+
task.rcov_option_list.should == "a b"
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Runner
|
|
5
|
+
describe ClassAndArgumentsParser, ".parse" do
|
|
6
|
+
|
|
7
|
+
it "should use a single : to separate class names from arguments" do
|
|
8
|
+
ClassAndArgumentsParser.parse('Foo').should == ['Foo', nil]
|
|
9
|
+
ClassAndArgumentsParser.parse('Foo:arg').should == ['Foo', 'arg']
|
|
10
|
+
ClassAndArgumentsParser.parse('Foo::Bar::Zap:arg').should == ['Foo::Bar::Zap', 'arg']
|
|
11
|
+
ClassAndArgumentsParser.parse('Foo:arg1,arg2').should == ['Foo', 'arg1,arg2']
|
|
12
|
+
ClassAndArgumentsParser.parse('Foo::Bar::Zap:arg1,arg2').should == ['Foo::Bar::Zap', 'arg1,arg2']
|
|
13
|
+
ClassAndArgumentsParser.parse('Foo::Bar::Zap:drb://foo,drb://bar').should == ['Foo::Bar::Zap', 'drb://foo,drb://bar']
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should raise an error when passed an empty string" do
|
|
17
|
+
lambda do
|
|
18
|
+
ClassAndArgumentsParser.parse('')
|
|
19
|
+
end.should raise_error("Couldn't parse \"\"")
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|