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
data/bin/spec
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
rspec_dir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
3
|
+
$LOAD_PATH.unshift(rspec_dir) unless $LOAD_PATH.include?(rspec_dir)
|
|
4
|
+
require 'spec/autorun'
|
|
5
|
+
exit ::Spec::Runner::CommandLine.run
|
data/cucumber.yml
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"Why have failing examples?", you might ask.
|
|
2
|
+
|
|
3
|
+
They allow us to see failure messages. RSpec wants to provide meaningful and
|
|
4
|
+
helpful failure messages. The failures in this directory not only provide you
|
|
5
|
+
a way of seeing the failure messages, but they provide RSpec's own specs a way
|
|
6
|
+
of describing what they should look like and ensuring they stay correct.
|
|
7
|
+
|
|
8
|
+
To see the types of messages you can expect, stand in the root directory and
|
|
9
|
+
run:
|
|
10
|
+
|
|
11
|
+
bin/spec examples/failing/*.rb
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
describe "Running specs with --diff" do
|
|
2
|
+
it "should print diff of different strings" do
|
|
3
|
+
uk = <<-EOF
|
|
4
|
+
RSpec is a
|
|
5
|
+
behaviour driven development
|
|
6
|
+
framework for Ruby
|
|
7
|
+
EOF
|
|
8
|
+
usa = <<-EOF
|
|
9
|
+
RSpec is a
|
|
10
|
+
behavior driven development
|
|
11
|
+
framework for Ruby
|
|
12
|
+
EOF
|
|
13
|
+
usa.should == uk
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
class Animal
|
|
17
|
+
def initialize(name,species)
|
|
18
|
+
@name,@species = name,species
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def inspect
|
|
22
|
+
<<-EOA
|
|
23
|
+
<Animal
|
|
24
|
+
name=#{@name},
|
|
25
|
+
species=#{@species}
|
|
26
|
+
>
|
|
27
|
+
EOA
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should print diff of different objects' pretty representation" do
|
|
32
|
+
expected = Animal.new "bob", "giraffe"
|
|
33
|
+
actual = Animal.new "bob", "tortoise"
|
|
34
|
+
expected.should eql(actual)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Run spec w/ -fs to see the output of this file
|
|
2
|
+
|
|
3
|
+
describe "Failing examples with no descriptions" do
|
|
4
|
+
|
|
5
|
+
# description is auto-generated as "should equal(5)" based on the last #should
|
|
6
|
+
it do
|
|
7
|
+
3.should equal(2)
|
|
8
|
+
5.should equal(5)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it { 3.should be > 5 }
|
|
12
|
+
|
|
13
|
+
it { ["a"].should include("b") }
|
|
14
|
+
|
|
15
|
+
it { [1,2,3].should_not respond_to(:size) }
|
|
16
|
+
|
|
17
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
describe "Mocker" do
|
|
2
|
+
|
|
3
|
+
it "should be able to call mock()" do
|
|
4
|
+
mock = mock("poke me")
|
|
5
|
+
mock.should_receive(:poke)
|
|
6
|
+
mock.poke
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "should fail when expected message not received" do
|
|
10
|
+
mock = mock("poke me")
|
|
11
|
+
mock.should_receive(:poke)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should fail when messages are received out of order" do
|
|
15
|
+
mock = mock("one two three")
|
|
16
|
+
mock.should_receive(:one).ordered
|
|
17
|
+
mock.should_receive(:two).ordered
|
|
18
|
+
mock.should_receive(:three).ordered
|
|
19
|
+
mock.one
|
|
20
|
+
mock.three
|
|
21
|
+
mock.two
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should get yelled at when sending unexpected messages" do
|
|
25
|
+
mock = mock("don't talk to me")
|
|
26
|
+
mock.should_not_receive(:any_message_at_all)
|
|
27
|
+
mock.any_message_at_all
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "has a bug we need to fix" do
|
|
31
|
+
pending "here is the bug" do
|
|
32
|
+
# Actually, no. It's fixed. This will fail because it passes :-)
|
|
33
|
+
mock = mock("Bug")
|
|
34
|
+
mock.should_receive(:hello)
|
|
35
|
+
mock.hello
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# stub frameworks like to gum up Object, so this is deliberately
|
|
2
|
+
# set NOT to run so that you don't accidentally run it when you
|
|
3
|
+
# run this dir.
|
|
4
|
+
|
|
5
|
+
# To run it, stand in this directory and say:
|
|
6
|
+
#
|
|
7
|
+
# RUN_FLEXMOCK_EXAMPLE=true ruby ../bin/spec mocking_with_flexmock.rb
|
|
8
|
+
|
|
9
|
+
if ENV['RUN_FLEXMOCK_EXAMPLE']
|
|
10
|
+
Spec::Runner.configure do |config|
|
|
11
|
+
config.mock_with :flexmock
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe "Flexmocks" do
|
|
15
|
+
it "should fail when the expected message is received with wrong arguments" do
|
|
16
|
+
m = flexmock("now flex!")
|
|
17
|
+
m.should_receive(:msg).with("arg").once
|
|
18
|
+
m.msg("other arg")
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should fail when the expected message is not received at all" do
|
|
22
|
+
m = flexmock("now flex!")
|
|
23
|
+
m.should_receive(:msg).with("arg").once
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# stub frameworks like to gum up Object, so this is deliberately
|
|
2
|
+
# set NOT to run so that you don't accidentally run it when you
|
|
3
|
+
# run this dir.
|
|
4
|
+
|
|
5
|
+
# To run it, stand in this directory and say:
|
|
6
|
+
#
|
|
7
|
+
# RUN_MOCHA_EXAMPLE=true ruby ../bin/spec mocking_with_mocha.rb
|
|
8
|
+
|
|
9
|
+
if ENV['RUN_MOCHA_EXAMPLE']
|
|
10
|
+
Spec::Runner.configure do |config|
|
|
11
|
+
config.mock_with :mocha
|
|
12
|
+
end
|
|
13
|
+
describe "Mocha framework" do
|
|
14
|
+
it "should should be made available by saying config.mock_with :mocha" do
|
|
15
|
+
m = mock()
|
|
16
|
+
m.expects(:msg).with("arg")
|
|
17
|
+
m.msg
|
|
18
|
+
end
|
|
19
|
+
it "should should be made available by saying config.mock_with :mocha" do
|
|
20
|
+
o = Object.new
|
|
21
|
+
o.expects(:msg).with("arg")
|
|
22
|
+
o.msg
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# stub frameworks like to gum up Object, so this is deliberately
|
|
2
|
+
# set NOT to run so that you don't accidentally run it when you
|
|
3
|
+
# run this dir.
|
|
4
|
+
|
|
5
|
+
# To run it, stand in this directory and say:
|
|
6
|
+
#
|
|
7
|
+
# RUN_RR_EXAMPLE=true ruby ../bin/spec mocking_with_rr.rb
|
|
8
|
+
|
|
9
|
+
if ENV['RUN_RR_EXAMPLE']
|
|
10
|
+
Spec::Runner.configure do |config|
|
|
11
|
+
config.mock_with :rr
|
|
12
|
+
end
|
|
13
|
+
describe "RR framework" do
|
|
14
|
+
it "should should be made available by saying config.mock_with :rr" do
|
|
15
|
+
o = Object.new
|
|
16
|
+
mock(o).msg("arg")
|
|
17
|
+
o.msg
|
|
18
|
+
end
|
|
19
|
+
it "should should be made available by saying config.mock_with :rr" do
|
|
20
|
+
o = Object.new
|
|
21
|
+
mock(o) do |m|
|
|
22
|
+
m.msg("arg")
|
|
23
|
+
end
|
|
24
|
+
o.msg
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
class MockableClass
|
|
2
|
+
def self.find id
|
|
3
|
+
return :original_return
|
|
4
|
+
end
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
describe "A partial mock" do
|
|
8
|
+
|
|
9
|
+
it "should work at the class level (but fail here due to the type mismatch)" do
|
|
10
|
+
MockableClass.should_receive(:find).with(1).and_return {:stub_return}
|
|
11
|
+
MockableClass.find("1").should equal(:stub_return)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should revert to the original after each spec" do
|
|
15
|
+
MockableClass.find(1).should equal(:original_return)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
class BddFramework
|
|
2
|
+
def intuitive?
|
|
3
|
+
true
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
def adopted_quickly?
|
|
7
|
+
#this will cause failures because it reallly SHOULD be adopted quickly
|
|
8
|
+
false
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
describe "BDD framework" do
|
|
13
|
+
|
|
14
|
+
before(:each) do
|
|
15
|
+
@bdd_framework = BddFramework.new
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should be adopted quickly" do
|
|
19
|
+
#this will fail because it reallly SHOULD be adopted quickly
|
|
20
|
+
@bdd_framework.should be_adopted_quickly
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should be intuitive" do
|
|
24
|
+
@bdd_framework.should be_intuitive
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "should not respond to test" do
|
|
28
|
+
#this will fail
|
|
29
|
+
@bdd_framework.test
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
describe "This example" do
|
|
2
|
+
|
|
3
|
+
it "should show that a NoMethodError is raised but an Exception was expected" do
|
|
4
|
+
proc { ''.nonexistent_method }.should raise_error
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
it "should pass" do
|
|
8
|
+
proc { ''.nonexistent_method }.should raise_error(NoMethodError)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should show that a NoMethodError is raised but a SyntaxError was expected" do
|
|
12
|
+
proc { ''.nonexistent_method }.should raise_error(SyntaxError)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should show that nothing is raised when SyntaxError was expected" do
|
|
16
|
+
proc { }.should raise_error(SyntaxError)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "should show that a NoMethodError is raised but a Exception was expected" do
|
|
20
|
+
proc { ''.nonexistent_method }.should_not raise_error
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should show that a NoMethodError is raised" do
|
|
24
|
+
proc { ''.nonexistent_method }.should_not raise_error(NoMethodError)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "should also pass" do
|
|
28
|
+
proc { ''.nonexistent_method }.should_not raise_error(SyntaxError)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should show that a NoMethodError is raised when nothing expected" do
|
|
32
|
+
proc { ''.nonexistent_method }.should_not raise_error(Exception)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should show that the wrong message was received" do
|
|
36
|
+
proc { raise StandardError.new("what is an enterprise?") }.should raise_error(StandardError, "not this")
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "should show that the unexpected error/message was thrown" do
|
|
40
|
+
proc { raise StandardError.new("abc") }.should_not raise_error(StandardError, "abc")
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "should pass too" do
|
|
44
|
+
proc { raise StandardError.new("abc") }.should_not raise_error(StandardError, "xyz")
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
class Team
|
|
2
|
+
attr_reader :players
|
|
3
|
+
def initialize
|
|
4
|
+
@players = Players.new
|
|
5
|
+
end
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class Players
|
|
9
|
+
def initialize
|
|
10
|
+
@players = []
|
|
11
|
+
end
|
|
12
|
+
def size
|
|
13
|
+
@players.size
|
|
14
|
+
end
|
|
15
|
+
def include? player
|
|
16
|
+
raise "player must be a string" unless player.is_a?(String)
|
|
17
|
+
@players.include? player
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe "A new team" do
|
|
22
|
+
|
|
23
|
+
before(:each) do
|
|
24
|
+
@team = Team.new
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "should have 3 players (failing example)" do
|
|
28
|
+
@team.should have(3).players
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should include some player (failing example)" do
|
|
32
|
+
@team.players.should include("Some Player")
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should include 5 (failing example)" do
|
|
36
|
+
@team.players.should include(5)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "should have no players"
|
|
40
|
+
|
|
41
|
+
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require 'spec/runner/formatter/progress_bar_formatter'
|
|
2
2
|
|
|
3
3
|
# Example of a formatter with custom bactrace printing. Run me with:
|
|
4
|
-
# ruby bin/spec
|
|
4
|
+
# ruby bin/spec examples/failing -r examples/passing/custom_formatter.rb -f CustomFormatter
|
|
5
5
|
class CustomFormatter < Spec::Runner::Formatter::ProgressBarFormatter
|
|
6
6
|
def backtrace_line(line)
|
|
7
7
|
line.gsub(/([^:]*\.rb):(\d*)/) do
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
class FileAccessor
|
|
2
|
-
def open_and_handle_with(pathname, processor)
|
|
3
|
-
pathname.open do |io|
|
|
4
|
-
processor.process(io)
|
|
5
|
-
end
|
|
6
|
-
end
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
if __FILE__ == $0
|
|
10
|
-
require
|
|
11
|
-
require 'pathname'
|
|
12
|
-
|
|
13
|
-
accessor = FileAccessor.new
|
|
14
|
-
io_processor = IoProcessor.new
|
|
15
|
-
file = Pathname.new ARGV[0]
|
|
16
|
-
|
|
17
|
-
accessor.open_and_handle_with(file, io_processor)
|
|
18
|
-
end
|
|
1
|
+
class FileAccessor
|
|
2
|
+
def open_and_handle_with(pathname, processor)
|
|
3
|
+
pathname.open do |io|
|
|
4
|
+
processor.process(io)
|
|
5
|
+
end
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
if __FILE__ == $0
|
|
10
|
+
require 'examples/passing/io_processor'
|
|
11
|
+
require 'pathname'
|
|
12
|
+
|
|
13
|
+
accessor = FileAccessor.new
|
|
14
|
+
io_processor = IoProcessor.new
|
|
15
|
+
file = Pathname.new ARGV[0]
|
|
16
|
+
|
|
17
|
+
accessor.open_and_handle_with(file, io_processor)
|
|
18
|
+
end
|
|
@@ -1,38 +1,37 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
#
|
|
7
|
-
#
|
|
8
|
-
#
|
|
9
|
-
#
|
|
10
|
-
#
|
|
11
|
-
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
# |
|
|
15
|
-
# |
|
|
16
|
-
# |
|
|
17
|
-
# | |
|
|
18
|
-
# |
|
|
19
|
-
# |
|
|
20
|
-
#
|
|
21
|
-
#
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
end
|
|
1
|
+
require 'examples/passing/file_accessor'
|
|
2
|
+
require 'stringio'
|
|
3
|
+
|
|
4
|
+
describe "A FileAccessor" do
|
|
5
|
+
# This sequence diagram illustrates what this spec specifies.
|
|
6
|
+
#
|
|
7
|
+
# +--------------+ +----------+ +-------------+
|
|
8
|
+
# | FileAccessor | | Pathname | | IoProcessor |
|
|
9
|
+
# +--------------+ +----------+ +-------------+
|
|
10
|
+
# | | |
|
|
11
|
+
# open_and_handle_with | | |
|
|
12
|
+
# -------------------->| | open | |
|
|
13
|
+
# | |--------------->| | |
|
|
14
|
+
# | | io | | |
|
|
15
|
+
# | |<...............| | |
|
|
16
|
+
# | | | process(io) |
|
|
17
|
+
# | |---------------------------------->| |
|
|
18
|
+
# | | | | |
|
|
19
|
+
# | |<..................................| |
|
|
20
|
+
# | | |
|
|
21
|
+
#
|
|
22
|
+
it "should open a file and pass it to the processor's process method" do
|
|
23
|
+
# This is the primary actor
|
|
24
|
+
accessor = FileAccessor.new
|
|
25
|
+
|
|
26
|
+
# These are the primary actor's neighbours, which we mock.
|
|
27
|
+
file = mock "Pathname"
|
|
28
|
+
io_processor = mock "IoProcessor"
|
|
29
|
+
|
|
30
|
+
io = StringIO.new "whatever"
|
|
31
|
+
file.should_receive(:open).and_yield io
|
|
32
|
+
io_processor.should_receive(:process).with(io)
|
|
33
|
+
|
|
34
|
+
accessor.open_and_handle_with(file, io_processor)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'spec/runner/formatter/nested_text_formatter'
|
|
2
|
+
|
|
3
|
+
class FilteredFormatter < Spec::Runner::Formatter::NestedTextFormatter
|
|
4
|
+
def add_example_group(example_group)
|
|
5
|
+
if example_group.options[:show] == false
|
|
6
|
+
@showing = false
|
|
7
|
+
else
|
|
8
|
+
@showing = true
|
|
9
|
+
puts example_group.description
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def example_passed(example)
|
|
14
|
+
puts " " << example.description if @showing unless example.options[:show] == false
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# This demonstrates how you can write custom formatters to handle arbitrary
|
|
2
|
+
# options passed to the +describe+ and +it+ methods. To see it in action, stand
|
|
3
|
+
# in the project root and say:
|
|
4
|
+
#
|
|
5
|
+
# bin/spec -r examples/passing/filtered_formatter.rb examples/passing/filtered_formatter_example.rb -f FilteredFormatter
|
|
6
|
+
#
|
|
7
|
+
# You should only see the examples and groups below that are not explicitly
|
|
8
|
+
# marked :show => false
|
|
9
|
+
#
|
|
10
|
+
# group 1
|
|
11
|
+
# example 1 a
|
|
12
|
+
# group 3
|
|
13
|
+
# example 3
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
describe "group 1", :show => true do
|
|
17
|
+
it "example 1 a", :show => true do
|
|
18
|
+
end
|
|
19
|
+
it "example 1 b", :show => false do
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe "group 2", :show => false do
|
|
24
|
+
it "example 2" do
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe "group 3" do
|
|
29
|
+
it "example 3" do
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Run "spec implicit_docstrings_example.rb --format specdoc" to see the output of this file
|
|
2
|
+
|
|
3
|
+
describe "Examples with no docstrings generate their own:" do
|
|
4
|
+
|
|
5
|
+
specify { 3.should be < 5 }
|
|
6
|
+
|
|
7
|
+
specify { ["a"].should include("a") }
|
|
8
|
+
|
|
9
|
+
specify { [1,2,3].should respond_to(:size) }
|
|
10
|
+
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe 1 do
|
|
14
|
+
it { should == 1 }
|
|
15
|
+
it { should be < 2}
|
|
16
|
+
end
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
class DataTooShort < StandardError; end
|
|
2
|
-
|
|
3
|
-
class IoProcessor
|
|
4
|
-
# Does some fancy stuff unless the length of +io+ is shorter than 32
|
|
5
|
-
def process(io)
|
|
6
|
-
raise DataTooShort if io.read.length < 32
|
|
7
|
-
end
|
|
8
|
-
end
|
|
1
|
+
class DataTooShort < StandardError; end
|
|
2
|
+
|
|
3
|
+
class IoProcessor
|
|
4
|
+
# Does some fancy stuff unless the length of +io+ is shorter than 32
|
|
5
|
+
def process(io)
|
|
6
|
+
raise DataTooShort if io.read.length < 32
|
|
7
|
+
end
|
|
8
|
+
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
require
|
|
2
|
-
require File.dirname(__FILE__) + '/io_processor'
|
|
1
|
+
require 'examples/passing/io_processor'
|
|
3
2
|
require 'stringio'
|
|
4
3
|
|
|
5
4
|
describe "An IoProcessor" do
|
|
@@ -18,4 +17,4 @@ describe "An IoProcessor" do
|
|
|
18
17
|
@processor.process(StringIO.new("z"*31))
|
|
19
18
|
}.should raise_error(DataTooShort)
|
|
20
19
|
end
|
|
21
|
-
end
|
|
20
|
+
end
|