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,74 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module DSL
|
|
3
|
-
class ExampleShouldRaiseHandler
|
|
4
|
-
def initialize(file_and_line_number, opts)
|
|
5
|
-
@file_and_line_number = file_and_line_number
|
|
6
|
-
@options = opts
|
|
7
|
-
@expected_error_class = determine_error_class(opts)
|
|
8
|
-
@expected_error_message = determine_error_message(opts)
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def determine_error_class(opts)
|
|
12
|
-
if candidate = opts[:should_raise]
|
|
13
|
-
if candidate.is_a?(Class)
|
|
14
|
-
return candidate
|
|
15
|
-
elsif candidate.is_a?(Array)
|
|
16
|
-
return candidate[0]
|
|
17
|
-
else
|
|
18
|
-
return Exception
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def determine_error_message(opts)
|
|
24
|
-
if candidate = opts[:should_raise]
|
|
25
|
-
if candidate.is_a?(Array)
|
|
26
|
-
return candidate[1]
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
return nil
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def build_message(exception=nil)
|
|
33
|
-
if @expected_error_message.nil?
|
|
34
|
-
message = "example block expected #{@expected_error_class.to_s}"
|
|
35
|
-
else
|
|
36
|
-
message = "example block expected #{@expected_error_class.new(@expected_error_message.to_s).inspect}"
|
|
37
|
-
end
|
|
38
|
-
message << " but raised #{exception.inspect}" if exception
|
|
39
|
-
message << " but nothing was raised" unless exception
|
|
40
|
-
message << "\n"
|
|
41
|
-
message << @file_and_line_number
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def error_matches?(error)
|
|
45
|
-
return false unless error.kind_of?(@expected_error_class)
|
|
46
|
-
unless @expected_error_message.nil?
|
|
47
|
-
if @expected_error_message.is_a?(Regexp)
|
|
48
|
-
return false unless error.message =~ @expected_error_message
|
|
49
|
-
else
|
|
50
|
-
return false unless error.message == @expected_error_message
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
return true
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def handle(errors)
|
|
57
|
-
if @expected_error_class
|
|
58
|
-
if errors.empty?
|
|
59
|
-
errors << Spec::Expectations::ExpectationNotMetError.new(build_message)
|
|
60
|
-
else
|
|
61
|
-
error_to_remove = errors.detect do |error|
|
|
62
|
-
error_matches?(error)
|
|
63
|
-
end
|
|
64
|
-
if error_to_remove.nil?
|
|
65
|
-
errors.insert(0,Spec::Expectations::ExpectationNotMetError.new(build_message(errors[0])))
|
|
66
|
-
else
|
|
67
|
-
errors.delete(error_to_remove)
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
end
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
begin
|
|
2
|
-
require 'rubygems'
|
|
3
|
-
require 'diff/lcs' #necessary due to loading bug on some machines - not sure why - DaC
|
|
4
|
-
require 'diff/lcs/hunk'
|
|
5
|
-
rescue LoadError ; raise "You must gem install diff-lcs to use diffing" ; end
|
|
6
|
-
|
|
7
|
-
require 'pp'
|
|
8
|
-
|
|
9
|
-
module Spec
|
|
10
|
-
module Expectations
|
|
11
|
-
module Differs
|
|
12
|
-
|
|
13
|
-
# TODO add some rdoc
|
|
14
|
-
class Default
|
|
15
|
-
def initialize(format=:unified,context_lines=nil,colour=nil)
|
|
16
|
-
|
|
17
|
-
context_lines ||= 3
|
|
18
|
-
colour ||= false
|
|
19
|
-
|
|
20
|
-
@format,@context_lines,@colour = format,context_lines,colour
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
# This is snagged from diff/lcs/ldiff.rb (which is a commandline tool)
|
|
24
|
-
def diff_as_string(data_old, data_new)
|
|
25
|
-
data_old = data_old.split(/\n/).map! { |e| e.chomp }
|
|
26
|
-
data_new = data_new.split(/\n/).map! { |e| e.chomp }
|
|
27
|
-
output = ""
|
|
28
|
-
diffs = Diff::LCS.diff(data_old, data_new)
|
|
29
|
-
return output if diffs.empty?
|
|
30
|
-
oldhunk = hunk = nil
|
|
31
|
-
file_length_difference = 0
|
|
32
|
-
diffs.each do |piece|
|
|
33
|
-
begin
|
|
34
|
-
hunk = Diff::LCS::Hunk.new(data_old, data_new, piece, @context_lines,
|
|
35
|
-
file_length_difference)
|
|
36
|
-
file_length_difference = hunk.file_length_difference
|
|
37
|
-
next unless oldhunk
|
|
38
|
-
# Hunks may overlap, which is why we need to be careful when our
|
|
39
|
-
# diff includes lines of context. Otherwise, we might print
|
|
40
|
-
# redundant lines.
|
|
41
|
-
if (@context_lines > 0) and hunk.overlaps?(oldhunk)
|
|
42
|
-
hunk.unshift(oldhunk)
|
|
43
|
-
else
|
|
44
|
-
output << oldhunk.diff(@format)
|
|
45
|
-
end
|
|
46
|
-
ensure
|
|
47
|
-
oldhunk = hunk
|
|
48
|
-
output << "\n"
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
#Handle the last remaining hunk
|
|
52
|
-
output << oldhunk.diff(@format) << "\n"
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def diff_as_object(target,expected)
|
|
56
|
-
diff_as_string(PP.pp(target,""), PP.pp(expected,""))
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
end
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module Expectations
|
|
3
|
-
# rspec adds #should and #should_not to every Object (and,
|
|
4
|
-
# implicitly, every Class).
|
|
5
|
-
module ObjectExpectations
|
|
6
|
-
|
|
7
|
-
# :call-seq:
|
|
8
|
-
# should(matcher)
|
|
9
|
-
# should == expected
|
|
10
|
-
# should === expected
|
|
11
|
-
# should =~ expected
|
|
12
|
-
#
|
|
13
|
-
# receiver.should(matcher)
|
|
14
|
-
# => Passes if matcher.matches?(receiver)
|
|
15
|
-
#
|
|
16
|
-
# receiver.should == expected #any value
|
|
17
|
-
# => Passes if (receiver == expected)
|
|
18
|
-
#
|
|
19
|
-
# receiver.should === expected #any value
|
|
20
|
-
# => Passes if (receiver === expected)
|
|
21
|
-
#
|
|
22
|
-
# receiver.should =~ regexp
|
|
23
|
-
# => Passes if (receiver =~ regexp)
|
|
24
|
-
#
|
|
25
|
-
# See Spec::Matchers for more information about matchers
|
|
26
|
-
#
|
|
27
|
-
# == Warning
|
|
28
|
-
#
|
|
29
|
-
# NOTE that this does NOT support receiver.should != expected.
|
|
30
|
-
# Instead, use receiver.should_not == expected
|
|
31
|
-
def should(matcher=nil, &block)
|
|
32
|
-
return ExpectationMatcherHandler.handle_matcher(self, matcher, &block) if matcher
|
|
33
|
-
Spec::Matchers::PositiveOperatorMatcher.new(self)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
# :call-seq:
|
|
37
|
-
# should_not(matcher)
|
|
38
|
-
# should_not == expected
|
|
39
|
-
# should_not === expected
|
|
40
|
-
# should_not =~ expected
|
|
41
|
-
#
|
|
42
|
-
# receiver.should_not(matcher)
|
|
43
|
-
# => Passes unless matcher.matches?(receiver)
|
|
44
|
-
#
|
|
45
|
-
# receiver.should_not == expected
|
|
46
|
-
# => Passes unless (receiver == expected)
|
|
47
|
-
#
|
|
48
|
-
# receiver.should_not === expected
|
|
49
|
-
# => Passes unless (receiver === expected)
|
|
50
|
-
#
|
|
51
|
-
# receiver.should_not =~ regexp
|
|
52
|
-
# => Passes unless (receiver =~ regexp)
|
|
53
|
-
#
|
|
54
|
-
# See Spec::Matchers for more information about matchers
|
|
55
|
-
def should_not(matcher=nil, &block)
|
|
56
|
-
return NegativeExpectationMatcherHandler.handle_matcher(self, matcher, &block) if matcher
|
|
57
|
-
Spec::Matchers::NegativeOperatorMatcher.new(self)
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
class Object
|
|
65
|
-
include Spec::Expectations::ObjectExpectations
|
|
66
|
-
end
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module Expectations
|
|
3
|
-
module StringHelpers
|
|
4
|
-
def starts_with?(prefix)
|
|
5
|
-
to_s[0..(prefix.length - 1)] == prefix
|
|
6
|
-
end
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
class String
|
|
12
|
-
include Spec::Expectations::StringHelpers
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
class Symbol
|
|
16
|
-
include Spec::Expectations::StringHelpers
|
|
17
|
-
end
|
data/lib/spec/extensions.rb
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require 'spec/extensions/object'
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module Matchers
|
|
3
|
-
|
|
4
|
-
class RaiseError #:nodoc:
|
|
5
|
-
def initialize(exception=Exception, message=nil)
|
|
6
|
-
@expected_error = exception
|
|
7
|
-
@expected_message = message
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def matches?(proc)
|
|
11
|
-
@raised_expected_error = false
|
|
12
|
-
@raised_other = false
|
|
13
|
-
begin
|
|
14
|
-
proc.call
|
|
15
|
-
rescue @expected_error => @actual_error
|
|
16
|
-
if @expected_message.nil?
|
|
17
|
-
@raised_expected_error = true
|
|
18
|
-
else
|
|
19
|
-
case @expected_message
|
|
20
|
-
when Regexp
|
|
21
|
-
if @expected_message =~ @actual_error.message
|
|
22
|
-
@raised_expected_error = true
|
|
23
|
-
else
|
|
24
|
-
@raised_other = true
|
|
25
|
-
end
|
|
26
|
-
else
|
|
27
|
-
if @expected_message == @actual_error.message
|
|
28
|
-
@raised_expected_error = true
|
|
29
|
-
else
|
|
30
|
-
@raised_other = true
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
rescue => @actual_error
|
|
35
|
-
@raised_other = true
|
|
36
|
-
ensure
|
|
37
|
-
return @raised_expected_error
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def failure_message
|
|
42
|
-
return "expected #{expected_error}#{actual_error}" if @raised_other || !@raised_expected_error
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def negative_failure_message
|
|
46
|
-
"expected no #{expected_error}#{actual_error}"
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def description
|
|
50
|
-
"raise #{expected_error}"
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
private
|
|
54
|
-
def expected_error
|
|
55
|
-
case @expected_message
|
|
56
|
-
when nil
|
|
57
|
-
@expected_error
|
|
58
|
-
when Regexp
|
|
59
|
-
"#{@expected_error} with message matching #{@expected_message.inspect}"
|
|
60
|
-
else
|
|
61
|
-
"#{@expected_error} with #{@expected_message.inspect}"
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def actual_error
|
|
66
|
-
@actual_error.nil? ? " but nothing was raised" : ", got #{@actual_error.inspect}"
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
# :call-seq:
|
|
71
|
-
# should raise_error()
|
|
72
|
-
# should raise_error(NamedError)
|
|
73
|
-
# should raise_error(NamedError, String)
|
|
74
|
-
# should raise_error(NamedError, Regexp)
|
|
75
|
-
# should_not raise_error()
|
|
76
|
-
# should_not raise_error(NamedError)
|
|
77
|
-
# should_not raise_error(NamedError, String)
|
|
78
|
-
# should_not raise_error(NamedError, Regexp)
|
|
79
|
-
#
|
|
80
|
-
# With no args, matches if any error is raised.
|
|
81
|
-
# With a named error, matches only if that specific error is raised.
|
|
82
|
-
# With a named error and messsage specified as a String, matches only if both match.
|
|
83
|
-
# With a named error and messsage specified as a Regexp, matches only if both match.
|
|
84
|
-
#
|
|
85
|
-
# == Examples
|
|
86
|
-
#
|
|
87
|
-
# lambda { do_something_risky }.should raise_error
|
|
88
|
-
# lambda { do_something_risky }.should raise_error(PoorRiskDecisionError)
|
|
89
|
-
# lambda { do_something_risky }.should raise_error(PoorRiskDecisionError, "that was too risky")
|
|
90
|
-
# lambda { do_something_risky }.should raise_error(PoorRiskDecisionError, /oo ri/)
|
|
91
|
-
#
|
|
92
|
-
# lambda { do_something_risky }.should_not raise_error
|
|
93
|
-
# lambda { do_something_risky }.should_not raise_error(PoorRiskDecisionError)
|
|
94
|
-
# lambda { do_something_risky }.should_not raise_error(PoorRiskDecisionError, "that was too risky")
|
|
95
|
-
# lambda { do_something_risky }.should_not raise_error(PoorRiskDecisionError, /oo ri/)
|
|
96
|
-
def raise_error(error=Exception, message=nil)
|
|
97
|
-
Matchers::RaiseError.new(error, message)
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
end
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module Mocks
|
|
3
|
-
module SpecMethods
|
|
4
|
-
include Spec::Mocks::ArgumentConstraintMatchers
|
|
5
|
-
|
|
6
|
-
# Shortcut for creating an instance of Spec::Mocks::Mock.
|
|
7
|
-
def mock(name, options={})
|
|
8
|
-
Spec::Mocks::Mock.new(name, options)
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
# Shortcut for creating an instance of Spec::Mocks::Mock with
|
|
12
|
-
# predefined method stubs.
|
|
13
|
-
#
|
|
14
|
-
# == Examples
|
|
15
|
-
#
|
|
16
|
-
# stub_thing = stub("thing", :a => "A")
|
|
17
|
-
# stub_thing.a == "A" => true
|
|
18
|
-
#
|
|
19
|
-
# stub_person = stub("thing", :name => "Joe", :email => "joe@domain.com")
|
|
20
|
-
# stub_person.name => "Joe"
|
|
21
|
-
# stub_person.email => "joe@domain.com"
|
|
22
|
-
def stub(name, stubs={})
|
|
23
|
-
object_stub = mock(name)
|
|
24
|
-
stubs.each { |key, value| object_stub.stub!(key).and_return(value) }
|
|
25
|
-
object_stub
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module Runner
|
|
3
|
-
class BehaviourRunner
|
|
4
|
-
|
|
5
|
-
def initialize(options)
|
|
6
|
-
@behaviours = []
|
|
7
|
-
@options = options
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def add_behaviour(behaviour)
|
|
11
|
-
unless specified_examples.nil? || specified_examples.empty? #|| behaviour.matches?(specified_examples)
|
|
12
|
-
behaviour.retain_examples_matching!(specified_examples) #if behaviour.matches?(specified_examples)
|
|
13
|
-
end
|
|
14
|
-
@behaviours << behaviour if behaviour.number_of_examples != 0 && !behaviour.shared?
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
# Runs all contexts and returns the number of failures.
|
|
18
|
-
def run(paths, exit_when_done)
|
|
19
|
-
unless paths.nil? # It's nil when running single specs with ruby
|
|
20
|
-
paths = find_paths(paths)
|
|
21
|
-
sorted_paths = sort_paths(paths)
|
|
22
|
-
load_specs(sorted_paths)
|
|
23
|
-
end
|
|
24
|
-
@options.reporter.start(number_of_examples)
|
|
25
|
-
behaviours = @options.reverse ? @behaviours.reverse : @behaviours
|
|
26
|
-
begin
|
|
27
|
-
run_behaviours(behaviours)
|
|
28
|
-
rescue Interrupt
|
|
29
|
-
ensure
|
|
30
|
-
@options.reporter.end
|
|
31
|
-
end
|
|
32
|
-
failure_count = @options.reporter.dump
|
|
33
|
-
|
|
34
|
-
heckle if(failure_count == 0 && !@options.heckle_runner.nil?)
|
|
35
|
-
|
|
36
|
-
if(exit_when_done)
|
|
37
|
-
exit_code = (failure_count == 0) ? 0 : 1
|
|
38
|
-
exit(exit_code)
|
|
39
|
-
end
|
|
40
|
-
failure_count
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def run_behaviours(behaviours)
|
|
44
|
-
behaviours.each do |behaviour|
|
|
45
|
-
behaviour.run(@options.reporter, @options.dry_run, @options.reverse, @options.timeout)
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def number_of_examples
|
|
50
|
-
@behaviours.inject(0) {|sum, behaviour| sum + behaviour.number_of_examples}
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
FILE_SORTERS = {
|
|
54
|
-
'mtime' => lambda {|file_a, file_b| File.mtime(file_b) <=> File.mtime(file_a)}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
def sorter(paths)
|
|
58
|
-
FILE_SORTERS[@options.loadby]
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def sort_paths(paths)
|
|
62
|
-
sorter = sorter(paths)
|
|
63
|
-
paths = paths.sort(&sorter) unless sorter.nil?
|
|
64
|
-
paths
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
private
|
|
68
|
-
|
|
69
|
-
def find_paths(paths)
|
|
70
|
-
result = []
|
|
71
|
-
paths.each do |path|
|
|
72
|
-
if File.directory?(path)
|
|
73
|
-
result += Dir["#{path}/**/*.rb"]
|
|
74
|
-
elsif File.file?(path)
|
|
75
|
-
result << path
|
|
76
|
-
else
|
|
77
|
-
raise "File or directory not found: #{path}"
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
result
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
def load_specs(paths)
|
|
84
|
-
paths.each do |path|
|
|
85
|
-
require path
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
def specified_examples
|
|
90
|
-
@options.examples
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
def heckle
|
|
94
|
-
heckle_runner = @options.heckle_runner
|
|
95
|
-
@options.heckle_runner = nil
|
|
96
|
-
behaviour_runner = self.class.new(@options)
|
|
97
|
-
behaviour_runner.instance_variable_set(:@behaviours, @behaviours)
|
|
98
|
-
heckle_runner.heckle_with(behaviour_runner)
|
|
99
|
-
end
|
|
100
|
-
end
|
|
101
|
-
end
|
|
102
|
-
end
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# The following copyright applies to Object#copy_instance_variables_from,
|
|
2
|
-
# which we borrowed from active_support.
|
|
3
|
-
#
|
|
4
|
-
# Copyright (c) 2004 David Heinemeier Hansson
|
|
5
|
-
#
|
|
6
|
-
# Permission is hereby granted, free of charge, to any person obtaining
|
|
7
|
-
# a copy of this software and associated documentation files (the
|
|
8
|
-
# "Software"), to deal in the Software without restriction, including
|
|
9
|
-
# without limitation the rights to use, copy, modify, merge, publish,
|
|
10
|
-
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
11
|
-
# permit persons to whom the Software is furnished to do so, subject to
|
|
12
|
-
# the following conditions:
|
|
13
|
-
#
|
|
14
|
-
# The above copyright notice and this permission notice shall be
|
|
15
|
-
# included in all copies or substantial portions of the Software.
|
|
16
|
-
#
|
|
17
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
18
|
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
19
|
-
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
20
|
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
21
|
-
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
22
|
-
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
23
|
-
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
24
|
-
class Object
|
|
25
|
-
# From active_support
|
|
26
|
-
def copy_instance_variables_from(object, exclude = []) # :nodoc:
|
|
27
|
-
exclude += object.protected_instance_variables if object.respond_to? :protected_instance_variables
|
|
28
|
-
|
|
29
|
-
instance_variables = object.instance_variables - exclude.map { |name| name.to_s }
|
|
30
|
-
instance_variables.each { |name| instance_variable_set(name, object.instance_variable_get(name)) }
|
|
31
|
-
end
|
|
32
|
-
end
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module Runner
|
|
3
|
-
module Formatter
|
|
4
|
-
class FailingBehavioursFormatter < BaseTextFormatter
|
|
5
|
-
def add_behaviour(behaviour_name)
|
|
6
|
-
@behaviour_name = behaviour_name
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def example_failed(name, counter, failure)
|
|
10
|
-
unless @behaviour_name.nil?
|
|
11
|
-
@output.puts @behaviour_name
|
|
12
|
-
@behaviour_name = nil
|
|
13
|
-
@output.flush
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def dump_failure(counter, failure)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def dump_summary(duration, example_count, failure_count, not_implemented_count)
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module Runner
|
|
3
|
-
module Formatter
|
|
4
|
-
class RdocFormatter < BaseTextFormatter
|
|
5
|
-
def add_behaviour(name)
|
|
6
|
-
@output.puts "# #{name}"
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def example_passed(name)
|
|
10
|
-
@output.puts "# * #{name}"
|
|
11
|
-
@output.flush
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def example_failed(name, counter, failure)
|
|
15
|
-
@output.puts "# * #{name} [#{counter} - FAILED]"
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def example_not_implemented(name)
|
|
19
|
-
@output.puts "# * #{name} [NOT IMPLEMENTED]"
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
require 'spec/runner/formatter/base_formatter'
|
|
2
|
-
require 'spec/runner/formatter/base_text_formatter'
|
|
3
|
-
require 'spec/runner/formatter/progress_bar_formatter'
|
|
4
|
-
require 'spec/runner/formatter/rdoc_formatter'
|
|
5
|
-
require 'spec/runner/formatter/specdoc_formatter'
|
|
6
|
-
require 'spec/runner/formatter/html_formatter'
|
|
7
|
-
require 'spec/runner/formatter/failing_examples_formatter'
|
|
8
|
-
require 'spec/runner/formatter/failing_behaviours_formatter'
|
|
9
|
-
require 'spec/runner/formatter/snippet_extractor'
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module Runner
|
|
3
|
-
# Parses a spec file and finds the nearest example for a given line number.
|
|
4
|
-
class SpecParser
|
|
5
|
-
def spec_name_for(io, line_number)
|
|
6
|
-
source = io.read
|
|
7
|
-
behaviour, behaviour_line = behaviour_at_line(source, line_number)
|
|
8
|
-
example, example_line = example_at_line(source, line_number)
|
|
9
|
-
if behaviour && example && (behaviour_line < example_line)
|
|
10
|
-
"#{behaviour} #{example}"
|
|
11
|
-
elsif behaviour
|
|
12
|
-
behaviour
|
|
13
|
-
else
|
|
14
|
-
nil
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
protected
|
|
19
|
-
|
|
20
|
-
def behaviour_at_line(source, line_number)
|
|
21
|
-
find_above(source, line_number, /^\s*(context|describe)\s+(.*)\s+do/)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def example_at_line(source, line_number)
|
|
25
|
-
find_above(source, line_number, /^\s*(specify|it)\s+(.*)\s+do/)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
# Returns the context/describe or specify/it name and the line number
|
|
29
|
-
def find_above(source, line_number, pattern)
|
|
30
|
-
lines_above_reversed(source, line_number).each_with_index do |line, n|
|
|
31
|
-
return [parse_description($2), line_number-n] if line =~ pattern
|
|
32
|
-
end
|
|
33
|
-
nil
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def lines_above_reversed(source, line_number)
|
|
37
|
-
lines = source.split("\n")
|
|
38
|
-
lines[0...line_number].reverse
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def parse_description(str)
|
|
42
|
-
return str[1..-2] if str =~ /^['"].*['"]$/
|
|
43
|
-
if matches = /^(.*)\s*,\s*['"](.*)['"]$/.match(str)
|
|
44
|
-
return ::Spec::DSL::Description.generate_description(matches[1], matches[2])
|
|
45
|
-
end
|
|
46
|
-
return str
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|