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/lib/spec/runner/reporter.rb
CHANGED
|
@@ -1,38 +1,53 @@
|
|
|
1
1
|
module Spec
|
|
2
2
|
module Runner
|
|
3
3
|
class Reporter
|
|
4
|
+
attr_reader :options
|
|
4
5
|
|
|
5
|
-
def initialize(
|
|
6
|
-
@
|
|
7
|
-
@
|
|
8
|
-
|
|
6
|
+
def initialize(options)
|
|
7
|
+
@options = options
|
|
8
|
+
@options.reporter = self
|
|
9
|
+
@failures = []
|
|
10
|
+
@pending_count = 0
|
|
11
|
+
@example_count = 0
|
|
12
|
+
@start_time = nil
|
|
13
|
+
@end_time = nil
|
|
9
14
|
end
|
|
10
15
|
|
|
11
|
-
def
|
|
12
|
-
@
|
|
13
|
-
|
|
16
|
+
def example_group_started(example_group)
|
|
17
|
+
@example_group = example_group
|
|
18
|
+
formatters.each do |f|
|
|
19
|
+
f.example_group_started(example_group)
|
|
20
|
+
end
|
|
14
21
|
end
|
|
15
22
|
|
|
16
|
-
def example_started(
|
|
17
|
-
|
|
23
|
+
def example_started(example)
|
|
24
|
+
formatters.each{|f| f.example_started(example)}
|
|
18
25
|
end
|
|
19
26
|
|
|
20
|
-
def example_finished(
|
|
21
|
-
@
|
|
27
|
+
def example_finished(example, error=nil)
|
|
28
|
+
@example_count += 1
|
|
22
29
|
|
|
23
|
-
if
|
|
24
|
-
|
|
25
|
-
elsif error
|
|
26
|
-
|
|
30
|
+
if error.nil?
|
|
31
|
+
example_passed(example)
|
|
32
|
+
elsif Spec::Example::ExamplePendingError === error
|
|
33
|
+
example_pending(example, example.location, error.message)
|
|
27
34
|
else
|
|
28
|
-
example_failed(
|
|
35
|
+
example_failed(example, error)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def example_failed(example, error)
|
|
40
|
+
backtrace_tweaker.tweak_backtrace(error)
|
|
41
|
+
failure = Failure.new(@example_group.description, example.description, error)
|
|
42
|
+
@failures << failure
|
|
43
|
+
formatters.each do |f|
|
|
44
|
+
f.example_failed(example, @failures.length, failure)
|
|
29
45
|
end
|
|
30
46
|
end
|
|
31
47
|
|
|
32
48
|
def start(number_of_examples)
|
|
33
|
-
clear!
|
|
34
49
|
@start_time = Time.new
|
|
35
|
-
|
|
50
|
+
formatters.each{|f| f.start(number_of_examples)}
|
|
36
51
|
end
|
|
37
52
|
|
|
38
53
|
def end
|
|
@@ -41,74 +56,116 @@ module Spec
|
|
|
41
56
|
|
|
42
57
|
# Dumps the summary and returns the total number of failures
|
|
43
58
|
def dump
|
|
44
|
-
|
|
59
|
+
formatters.each{|f| f.start_dump}
|
|
60
|
+
dump_pending
|
|
45
61
|
dump_failures
|
|
46
|
-
|
|
62
|
+
formatters.each do |f|
|
|
63
|
+
f.dump_summary(duration, @example_count, @failures.length, @pending_count)
|
|
64
|
+
f.close
|
|
65
|
+
end
|
|
47
66
|
@failures.length
|
|
48
67
|
end
|
|
49
68
|
|
|
69
|
+
class Failure
|
|
70
|
+
def initialize(group_description, example_description, exception) # :nodoc:
|
|
71
|
+
@example_name = "#{group_description} #{example_description}"
|
|
72
|
+
@exception = exception
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# The Exception object raised
|
|
76
|
+
attr_reader :exception
|
|
77
|
+
|
|
78
|
+
# Header messsage for reporting this failure, including the name of the
|
|
79
|
+
# example and an indicator of the type of failure. FAILED indicates a
|
|
80
|
+
# failed expectation. FIXED indicates a pending example that passes, and
|
|
81
|
+
# no longer needs to be pending. RuntimeError indicates that a
|
|
82
|
+
# RuntimeError occured.
|
|
83
|
+
#
|
|
84
|
+
# == Examples
|
|
85
|
+
#
|
|
86
|
+
# 'A new account should have a zero balance' FAILED
|
|
87
|
+
# 'A new account should have a zero balance' FIXED
|
|
88
|
+
# RuntimeError in 'A new account should have a zero balance'
|
|
89
|
+
def header
|
|
90
|
+
if expectation_not_met?
|
|
91
|
+
"'#{@example_name}' FAILED"
|
|
92
|
+
elsif pending_fixed?
|
|
93
|
+
"'#{@example_name}' FIXED"
|
|
94
|
+
else
|
|
95
|
+
"#{@exception.class.name} in '#{@example_name}'"
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def pending_fixed? # :nodoc:
|
|
100
|
+
@exception.is_a?(Spec::Example::PendingExampleFixedError)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def expectation_not_met? # :nodoc:
|
|
104
|
+
@exception.is_a?(Spec::Expectations::ExpectationNotMetError)
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
50
108
|
private
|
|
51
|
-
|
|
52
|
-
def
|
|
53
|
-
@
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
@
|
|
58
|
-
@end_time = nil
|
|
109
|
+
|
|
110
|
+
def formatters
|
|
111
|
+
@options.formatters
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def backtrace_tweaker
|
|
115
|
+
@options.backtrace_tweaker
|
|
59
116
|
end
|
|
60
117
|
|
|
61
118
|
def dump_failures
|
|
62
119
|
return if @failures.empty?
|
|
63
120
|
@failures.inject(1) do |index, failure|
|
|
64
|
-
|
|
121
|
+
formatters.each{|f| f.dump_failure(index, failure)}
|
|
65
122
|
index + 1
|
|
66
123
|
end
|
|
67
124
|
end
|
|
68
125
|
|
|
126
|
+
def dump_pending
|
|
127
|
+
formatters.each{|f| f.dump_pending}
|
|
128
|
+
end
|
|
129
|
+
|
|
69
130
|
def duration
|
|
70
131
|
return @end_time - @start_time unless (@end_time.nil? or @start_time.nil?)
|
|
71
132
|
return "0.0"
|
|
72
133
|
end
|
|
73
134
|
|
|
74
|
-
def example_passed(
|
|
75
|
-
|
|
135
|
+
def example_passed(example)
|
|
136
|
+
formatters.each{|f| f.example_passed(example)}
|
|
76
137
|
end
|
|
77
138
|
|
|
78
|
-
|
|
79
|
-
@backtrace_tweaker.tweak_backtrace(error, failure_location)
|
|
80
|
-
example_name = "#{@behaviour_names.last} #{name}"
|
|
81
|
-
failure = Failure.new(example_name, error)
|
|
82
|
-
@failures << failure
|
|
83
|
-
@formatters.each{|f| f.example_failed(name, @failures.length, failure)}
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
def example_not_implemented(name)
|
|
87
|
-
@not_implemented_count += 1
|
|
88
|
-
@formatters.each{|f| f.example_not_implemented(name)}
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
class Failure
|
|
92
|
-
attr_reader :exception
|
|
93
|
-
|
|
94
|
-
def initialize(example_name, exception)
|
|
95
|
-
@example_name = example_name
|
|
96
|
-
@exception = exception
|
|
97
|
-
end
|
|
139
|
+
EXAMPLE_PENDING_DEPRECATION_WARNING = <<-WARNING
|
|
98
140
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
141
|
+
*********************************************************************
|
|
142
|
+
DEPRECATION WARNING: RSpec's formatters have changed example_pending
|
|
143
|
+
to accept two arguments instead of three. Please see the rdoc
|
|
144
|
+
for Spec::Runner::Formatter::BaseFormatter#example_pending
|
|
145
|
+
for more information.
|
|
146
|
+
|
|
147
|
+
Please update any custom formatters to accept only two arguments
|
|
148
|
+
to example_pending. Support for example_pending with two arguments
|
|
149
|
+
and this warning message will be removed after the RSpec 2.0 release.
|
|
150
|
+
*********************************************************************
|
|
151
|
+
WARNING
|
|
152
|
+
|
|
153
|
+
def example_pending(example, ignore, message="Not Yet Implemented")
|
|
154
|
+
@pending_count += 1
|
|
155
|
+
formatters.each do |formatter|
|
|
156
|
+
if formatter_uses_deprecated_example_pending_method?(formatter)
|
|
157
|
+
Spec.warn EXAMPLE_PENDING_DEPRECATION_WARNING
|
|
158
|
+
formatter.example_pending(example, message, example.location)
|
|
102
159
|
else
|
|
103
|
-
|
|
160
|
+
formatter.example_pending(example, message)
|
|
104
161
|
end
|
|
105
162
|
end
|
|
106
|
-
|
|
107
|
-
def expectation_not_met?
|
|
108
|
-
@exception.is_a?(Spec::Expectations::ExpectationNotMetError)
|
|
109
|
-
end
|
|
110
|
-
|
|
111
163
|
end
|
|
164
|
+
|
|
165
|
+
def formatter_uses_deprecated_example_pending_method?(formatter)
|
|
166
|
+
formatter.method(:example_pending).arity == 3
|
|
167
|
+
end
|
|
168
|
+
|
|
112
169
|
end
|
|
113
170
|
end
|
|
114
171
|
end
|
data/lib/spec/runner.rb
CHANGED
|
@@ -1,151 +1,31 @@
|
|
|
1
|
-
require 'spec/runner/
|
|
2
|
-
require 'spec/runner/behaviour_runner'
|
|
1
|
+
require 'spec/runner/configuration'
|
|
3
2
|
require 'spec/runner/options'
|
|
4
3
|
require 'spec/runner/option_parser'
|
|
4
|
+
require 'spec/runner/example_group_runner'
|
|
5
5
|
require 'spec/runner/command_line'
|
|
6
6
|
require 'spec/runner/drb_command_line'
|
|
7
7
|
require 'spec/runner/backtrace_tweaker'
|
|
8
8
|
require 'spec/runner/reporter'
|
|
9
|
-
require 'spec/runner/
|
|
9
|
+
require 'spec/runner/line_number_query'
|
|
10
|
+
require 'spec/runner/class_and_arguments_parser'
|
|
10
11
|
require 'spec/runner/extensions/kernel'
|
|
11
|
-
require 'spec/runner/spec_parser'
|
|
12
12
|
|
|
13
13
|
module Spec
|
|
14
|
-
# == Behaviours and Examples
|
|
15
|
-
#
|
|
16
|
-
# Rather than expressing examples in classes, RSpec uses a custom domain specific language to
|
|
17
|
-
# describe Behaviours and Examples of those behaviours.
|
|
18
|
-
#
|
|
19
|
-
# A Behaviour is the equivalent of a fixture in xUnit-speak. It is a metaphor for the context
|
|
20
|
-
# in which you will run your executable example - a set of known objects in a known starting state.
|
|
21
|
-
# We begin be describing
|
|
22
|
-
#
|
|
23
|
-
# describe Account do
|
|
24
|
-
#
|
|
25
|
-
# before do
|
|
26
|
-
# @account = Account.new
|
|
27
|
-
# end
|
|
28
|
-
#
|
|
29
|
-
# it "should have a balance of $0" do
|
|
30
|
-
# @account.balance.should == Money.new(0, :dollars)
|
|
31
|
-
# end
|
|
32
|
-
#
|
|
33
|
-
# end
|
|
34
|
-
#
|
|
35
|
-
# We use the before block to set up the Behaviour (given), and then the #it method to
|
|
36
|
-
# hold the example code that expresses the event (when) and the expected outcome (then).
|
|
37
|
-
#
|
|
38
|
-
# == Helper Methods
|
|
39
|
-
#
|
|
40
|
-
# A primary goal of RSpec is to keep the examples clear. We therefore prefer
|
|
41
|
-
# less indirection than you might see in xUnit examples and in well factored, DRY production code. We feel
|
|
42
|
-
# that duplication is OK if removing it makes it harder to understand an example without
|
|
43
|
-
# having to look elsewhere to understand its context.
|
|
44
|
-
#
|
|
45
|
-
# That said, RSpec does support some level of encapsulating common code in helper
|
|
46
|
-
# methods that can exist within a context or within an included module.
|
|
47
|
-
#
|
|
48
|
-
# == Setup and Teardown
|
|
49
|
-
#
|
|
50
|
-
# You can use before and after within a Behaviour. Both methods take an optional
|
|
51
|
-
# scope argument so you can run the block before :each example or before :all examples
|
|
52
|
-
#
|
|
53
|
-
# describe "..." do
|
|
54
|
-
# before :all do
|
|
55
|
-
# ...
|
|
56
|
-
# end
|
|
57
|
-
#
|
|
58
|
-
# before :each do
|
|
59
|
-
# ...
|
|
60
|
-
# end
|
|
61
|
-
#
|
|
62
|
-
# it "should do something" do
|
|
63
|
-
# ...
|
|
64
|
-
# end
|
|
65
|
-
#
|
|
66
|
-
# it "should do something else" do
|
|
67
|
-
# ...
|
|
68
|
-
# end
|
|
69
|
-
#
|
|
70
|
-
# after :each do
|
|
71
|
-
# ...
|
|
72
|
-
# end
|
|
73
|
-
#
|
|
74
|
-
# after :all do
|
|
75
|
-
# ...
|
|
76
|
-
# end
|
|
77
|
-
#
|
|
78
|
-
# end
|
|
79
|
-
#
|
|
80
|
-
# The <tt>before :each</tt> block will run before each of the examples, once for each example. Likewise,
|
|
81
|
-
# the <tt>after :each</tt> block will run after each of the examples.
|
|
82
|
-
#
|
|
83
|
-
# It is also possible to specify a <tt>before :all</tt> and <tt>after :all</tt>
|
|
84
|
-
# block that will run only once for each behaviour, respectively before the first <code>before :each</code>
|
|
85
|
-
# and after the last <code>after :each</code>. The use of these is generally discouraged, because it
|
|
86
|
-
# introduces dependencies between the examples. Still, it might prove useful for very expensive operations
|
|
87
|
-
# if you know what you are doing.
|
|
88
|
-
#
|
|
89
|
-
# == Local helper methods
|
|
90
|
-
#
|
|
91
|
-
# You can include local helper methods by simply expressing them within a context:
|
|
92
|
-
#
|
|
93
|
-
# describe "..." do
|
|
94
|
-
#
|
|
95
|
-
# it "..." do
|
|
96
|
-
# helper_method
|
|
97
|
-
# end
|
|
98
|
-
#
|
|
99
|
-
# def helper_method
|
|
100
|
-
# ...
|
|
101
|
-
# end
|
|
102
|
-
#
|
|
103
|
-
# end
|
|
104
|
-
#
|
|
105
|
-
# == Included helper methods
|
|
106
|
-
#
|
|
107
|
-
# You can include helper methods in multiple contexts by expressing them within
|
|
108
|
-
# a module, and then including that module in your context:
|
|
109
|
-
#
|
|
110
|
-
# module AccountExampleHelperMethods
|
|
111
|
-
# def helper_method
|
|
112
|
-
# ...
|
|
113
|
-
# end
|
|
114
|
-
# end
|
|
115
|
-
#
|
|
116
|
-
# describe "A new account" do
|
|
117
|
-
# include AccountExampleHelperMethods
|
|
118
|
-
# before do
|
|
119
|
-
# @account = Account.new
|
|
120
|
-
# end
|
|
121
|
-
#
|
|
122
|
-
# it "should have a balance of $0" do
|
|
123
|
-
# helper_method
|
|
124
|
-
# @account.balance.should eql(Money.new(0, :dollars))
|
|
125
|
-
# end
|
|
126
|
-
# end
|
|
127
|
-
#
|
|
128
|
-
# == Shared behaviour
|
|
129
|
-
#
|
|
130
|
-
# You can define a shared behaviour, that may be used on other behaviours
|
|
131
|
-
#
|
|
132
|
-
# describe "All Editions", :shared => true do
|
|
133
|
-
# it "all editions behaviour" ...
|
|
134
|
-
# end
|
|
135
|
-
#
|
|
136
|
-
# describe SmallEdition do
|
|
137
|
-
# it_should_behave_like "All Editions"
|
|
138
|
-
#
|
|
139
|
-
# it "should do small edition stuff" do
|
|
140
|
-
# ...
|
|
141
|
-
# end
|
|
142
|
-
# end
|
|
143
14
|
module Runner
|
|
15
|
+
|
|
16
|
+
class ExampleGroupCreationListener
|
|
17
|
+
def register_example_group(klass)
|
|
18
|
+
Spec::Runner.options.add_example_group klass
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
Spec::Example::ExampleGroupFactory.example_group_creation_listeners << ExampleGroupCreationListener.new
|
|
23
|
+
|
|
144
24
|
class << self
|
|
145
25
|
def configuration # :nodoc:
|
|
146
|
-
@configuration ||= Spec::
|
|
26
|
+
@configuration ||= Spec::Runner::Configuration.new
|
|
147
27
|
end
|
|
148
|
-
|
|
28
|
+
|
|
149
29
|
# Use this to configure various configurable aspects of
|
|
150
30
|
# RSpec:
|
|
151
31
|
#
|
|
@@ -154,12 +34,33 @@ module Spec
|
|
|
154
34
|
# end
|
|
155
35
|
#
|
|
156
36
|
# The yielded <tt>configuration</tt> object is a
|
|
157
|
-
# Spec::
|
|
37
|
+
# Spec::Runner::Configuration instance. See its RDoc
|
|
158
38
|
# for details about what you can do with it.
|
|
159
39
|
#
|
|
160
40
|
def configure
|
|
161
|
-
yield configuration
|
|
41
|
+
yield configuration
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def autorun # :nodoc:
|
|
45
|
+
at_exit {exit run unless $!}
|
|
162
46
|
end
|
|
47
|
+
|
|
48
|
+
def options # :nodoc:
|
|
49
|
+
@options ||= begin
|
|
50
|
+
parser = ::Spec::Runner::OptionParser.new($stderr, $stdout)
|
|
51
|
+
parser.order!(ARGV)
|
|
52
|
+
parser.options
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def use options
|
|
57
|
+
@options = options
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def run
|
|
61
|
+
options.examples_run? || options.run_examples
|
|
62
|
+
end
|
|
63
|
+
|
|
163
64
|
end
|
|
164
65
|
end
|
|
165
|
-
end
|
|
66
|
+
end
|
data/lib/spec/version.rb
CHANGED
|
@@ -1,22 +1,14 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module VERSION
|
|
3
|
-
unless defined? MAJOR
|
|
4
|
-
MAJOR = 1
|
|
5
|
-
MINOR =
|
|
6
|
-
TINY =
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
NAME = "RSpec"
|
|
17
|
-
URL = "http://rspec.rubyforge.org/"
|
|
18
|
-
|
|
19
|
-
DESCRIPTION = "#{NAME}-#{FULL_VERSION} - BDD for Ruby\n#{URL}"
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
1
|
+
module Spec # :nodoc:
|
|
2
|
+
module VERSION # :nodoc:
|
|
3
|
+
unless defined? MAJOR
|
|
4
|
+
MAJOR = 1
|
|
5
|
+
MINOR = 3
|
|
6
|
+
TINY = 1
|
|
7
|
+
PRE = nil
|
|
8
|
+
|
|
9
|
+
STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
|
|
10
|
+
|
|
11
|
+
SUMMARY = "rspec #{STRING}"
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
data/lib/spec.rb
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
require 'spec/
|
|
2
|
-
require 'spec/
|
|
1
|
+
require 'spec/deprecation'
|
|
2
|
+
require 'spec/ruby'
|
|
3
3
|
require 'spec/matchers'
|
|
4
4
|
require 'spec/expectations'
|
|
5
|
-
require 'spec/
|
|
6
|
-
require 'spec/dsl'
|
|
5
|
+
require 'spec/example'
|
|
7
6
|
require 'spec/runner'
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def metaclass
|
|
11
|
-
class << self; self; end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
7
|
+
require 'spec/version'
|
|
8
|
+
require 'spec/dsl'
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
require 'rake'
|
|
2
|
+
require 'spec/rake/spectask'
|
|
3
|
+
|
|
4
|
+
desc "Generate HTML report for failing examples"
|
|
5
|
+
Spec::Rake::SpecTask.new('failing_examples_with_html') do |t|
|
|
6
|
+
t.spec_files = FileList['failing_examples/**/*.rb']
|
|
7
|
+
t.spec_opts = ["--format", "html:doc/reports/tools/failing_examples.html", "--diff"]
|
|
8
|
+
t.fail_on_error = false
|
|
9
|
+
end
|
data/spec/README.jruby
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
= Running specs on JRuby =
|
|
2
|
+
|
|
3
|
+
svn co http://svn.codehaus.org/jruby/trunk jruby
|
|
4
|
+
cd jruby/jruby
|
|
5
|
+
ant clean
|
|
6
|
+
ant
|
|
7
|
+
# put JRuby's bin dir on your PATH
|
|
8
|
+
jruby -S gem install rake --no-ri --no-rdoc
|
|
9
|
+
jruby -S gem install diff-lcs
|
|
10
|
+
jruby -S gem install syntax
|
|
11
|
+
cd ../testsuites/rspec
|
|
12
|
+
mkdir target
|
|
13
|
+
jruby -S rake checkout_code
|
|
14
|
+
cd target/rspec
|
|
15
|
+
jruby bin/spec spec -c
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Matchers
|
|
3
|
+
class AutotestMappingMatcher
|
|
4
|
+
def initialize(specs)
|
|
5
|
+
@specs = specs
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def to(file)
|
|
9
|
+
@file = file
|
|
10
|
+
self
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def matches?(autotest)
|
|
14
|
+
@autotest = prepare(autotest)
|
|
15
|
+
@actual = autotest.test_files_for(@file)
|
|
16
|
+
@actual == @specs
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def failure_message
|
|
20
|
+
"expected #{@autotest.class} to map #{@specs.inspect} to #{@file.inspect}\ngot #{@actual.inspect}"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
def prepare(autotest)
|
|
26
|
+
find_order = @specs.dup << @file
|
|
27
|
+
autotest.instance_eval { @find_order = find_order }
|
|
28
|
+
autotest
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def map_specs(specs)
|
|
34
|
+
AutotestMappingMatcher.new(specs)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require 'autotest/autotest_helper'
|
|
2
|
+
|
|
3
|
+
describe "failed_results_re" do
|
|
4
|
+
it "should match a failure" do
|
|
5
|
+
re = Autotest::Rspec.new.failed_results_re
|
|
6
|
+
re =~ "1)\n'this example' FAILED\nreason\n/path.rb:37:\n\n"
|
|
7
|
+
$1.should == "this example"
|
|
8
|
+
$2.should == "reason\n/path.rb:37:"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should match a failure when matcher outputs multiple lines" do
|
|
12
|
+
re = Autotest::Rspec.new.failed_results_re
|
|
13
|
+
re =~ "1)\n'other example' FAILED\n\nreason line 1\nreason line 2\n\n(additional info)\n/path.rb:37:\n\n"
|
|
14
|
+
$1.should == "other example"
|
|
15
|
+
$2.should == "reason line 1\nreason line 2\n\n(additional info)\n/path.rb:37:"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should match an Error" do
|
|
19
|
+
re = Autotest::Rspec.new.failed_results_re
|
|
20
|
+
re =~ "1)\nRuntimeError in 'this example'\nreason\n/path.rb:37:\n\n"
|
|
21
|
+
$1.should == "this example"
|
|
22
|
+
$2.should == "reason\n/path.rb:37:"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "should match an Error that doesn't end in Error" do
|
|
26
|
+
re = Autotest::Rspec.new.failed_results_re
|
|
27
|
+
re =~ "1)\nInvalidArgument in 'this example'\nreason\n/path.rb:37:\n\n"
|
|
28
|
+
$1.should == "this example"
|
|
29
|
+
$2.should == "reason\n/path.rb:37:"
|
|
30
|
+
end
|
|
31
|
+
end
|