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,25 +1,80 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'spec/runner/resources/custom_example_group_runner'
|
|
3
|
+
require 'fakefs/spec_helpers'
|
|
2
4
|
|
|
3
|
-
describe "OptionParser" do
|
|
5
|
+
describe "OptionParser" do
|
|
4
6
|
before(:each) do
|
|
5
7
|
@out = StringIO.new
|
|
6
8
|
@err = StringIO.new
|
|
7
|
-
@parser = Spec::Runner::OptionParser.new
|
|
9
|
+
@parser = Spec::Runner::OptionParser.new(@err, @out)
|
|
8
10
|
end
|
|
9
11
|
|
|
10
12
|
def parse(args)
|
|
11
|
-
@parser.parse(args
|
|
13
|
+
@parser.parse(args)
|
|
14
|
+
@parser.options
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe "with fakefs" do
|
|
18
|
+
include FakeFS::SpecHelpers
|
|
19
|
+
|
|
20
|
+
it "should not use colour by default" do
|
|
21
|
+
options = parse([])
|
|
22
|
+
options.colour.should == false
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "should use progress bar formatter by default" do
|
|
26
|
+
options = parse([])
|
|
27
|
+
options.formatters[0].class.should equal(Spec::Runner::Formatter::ProgressBarFormatter)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should leave the submitted argv alone" do
|
|
32
|
+
args = ["--pattern", "foo"]
|
|
33
|
+
@parser.order!(args)
|
|
34
|
+
args.should == ["--pattern", "foo"]
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "should accept files to include" do
|
|
38
|
+
options = parse(["--pattern", "foo"])
|
|
39
|
+
options.filename_pattern.should == "foo"
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "should accept debugger option" do
|
|
43
|
+
options = parse(["--debugger"])
|
|
44
|
+
options.debug.should be_true
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "should accept -u form of debugger option" do
|
|
48
|
+
options = parse(["-u"])
|
|
49
|
+
options.debug.should be_true
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it "should turn off the debugger option if drb is specified later" do
|
|
53
|
+
@parser.stub!(:parse_drb).with(no_args).and_return(true)
|
|
54
|
+
options = parse(["-u", "--drb"])
|
|
55
|
+
options.debug.should be_false
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "should turn off the debugger option if drb is specified first" do
|
|
59
|
+
@parser.stub!(:parse_drb).with(no_args).and_return(true)
|
|
60
|
+
options = parse(["--drb", "-u"])
|
|
61
|
+
options.debug.should be_false
|
|
12
62
|
end
|
|
13
63
|
|
|
14
|
-
|
|
15
|
-
|
|
64
|
+
it "should accept port option" do
|
|
65
|
+
options = parse(["--port", "9000"])
|
|
66
|
+
options.drb_port.should == 9000
|
|
16
67
|
end
|
|
17
68
|
|
|
69
|
+
it 'should require argument to port option' do
|
|
70
|
+
lambda { parse(["--port"]) }.should raise_error(OptionParser::MissingArgument)
|
|
71
|
+
end
|
|
72
|
+
|
|
18
73
|
it "should accept dry run option" do
|
|
19
74
|
options = parse(["--dry-run"])
|
|
20
75
|
options.dry_run.should be_true
|
|
21
76
|
end
|
|
22
|
-
|
|
77
|
+
|
|
23
78
|
it "should eval and use custom formatter when none of the builtins" do
|
|
24
79
|
options = parse(["--format", "Custom::Formatter"])
|
|
25
80
|
options.formatters[0].class.should be(Custom::Formatter)
|
|
@@ -37,37 +92,44 @@ describe "OptionParser" do
|
|
|
37
92
|
options.formatters[2].where.should eql("foo\\bar")
|
|
38
93
|
options.formatters[3].where.should eql("/foo/bar")
|
|
39
94
|
end
|
|
40
|
-
|
|
95
|
+
|
|
41
96
|
it "should not be verbose by default" do
|
|
42
97
|
options = parse([])
|
|
43
98
|
options.verbose.should be_nil
|
|
44
99
|
end
|
|
45
|
-
|
|
46
|
-
it "should
|
|
100
|
+
|
|
101
|
+
it "should print help to stdout if no args and spec_comand?" do
|
|
102
|
+
Spec::Runner::OptionParser.stub!(:spec_command?).and_return(true)
|
|
47
103
|
options = parse([])
|
|
48
|
-
|
|
104
|
+
@out.rewind
|
|
105
|
+
@out.read.should match(/Usage: spec \(FILE\(:LINE\)\?\|DIRECTORY\|GLOB\)\+ \[options\]/m)
|
|
49
106
|
end
|
|
50
|
-
|
|
107
|
+
|
|
108
|
+
it "should not print help to stdout if no args and NOT spec_command?" do
|
|
109
|
+
Spec::Runner::OptionParser.stub!(:spec_command?).and_return(false)
|
|
110
|
+
options = parse([])
|
|
111
|
+
@out.rewind
|
|
112
|
+
@out.read.should == ""
|
|
113
|
+
end
|
|
114
|
+
|
|
51
115
|
it "should print help to stdout" do
|
|
52
116
|
options = parse(["--help"])
|
|
53
117
|
@out.rewind
|
|
54
|
-
@out.read.should match(/Usage: spec \(FILE
|
|
118
|
+
@out.read.should match(/Usage: spec \(FILE\(:LINE\)\?\|DIRECTORY\|GLOB\)\+ \[options\]/m)
|
|
55
119
|
end
|
|
56
|
-
|
|
57
|
-
it "should print instructions about how to
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
options = parse([])
|
|
64
|
-
@err.string.should match(/Usage: spec/)
|
|
120
|
+
|
|
121
|
+
it "should print instructions about how to require missing formatter" do
|
|
122
|
+
lambda do
|
|
123
|
+
options = parse(["--format", "Custom::MissingFormatter"])
|
|
124
|
+
options.formatters
|
|
125
|
+
end.should raise_error(NameError)
|
|
126
|
+
@err.string.should match(/Couldn't find formatter class Custom::MissingFormatter/n)
|
|
65
127
|
end
|
|
66
|
-
|
|
128
|
+
|
|
67
129
|
it "should print version to stdout" do
|
|
68
130
|
options = parse(["--version"])
|
|
69
131
|
@out.rewind
|
|
70
|
-
@out.read.should match(/
|
|
132
|
+
@out.read.should match(/rspec \d+\.\d+\.\d+/n)
|
|
71
133
|
end
|
|
72
134
|
|
|
73
135
|
it "should require file when require specified" do
|
|
@@ -75,37 +137,37 @@ describe "OptionParser" do
|
|
|
75
137
|
parse(["--require", "whatever"])
|
|
76
138
|
end.should raise_error(LoadError)
|
|
77
139
|
end
|
|
78
|
-
|
|
140
|
+
|
|
79
141
|
it "should support c option" do
|
|
80
142
|
options = parse(["-c"])
|
|
81
143
|
options.colour.should be_true
|
|
82
144
|
end
|
|
83
|
-
|
|
145
|
+
|
|
84
146
|
it "should support queens colour option" do
|
|
85
147
|
options = parse(["--colour"])
|
|
86
148
|
options.colour.should be_true
|
|
87
149
|
end
|
|
88
|
-
|
|
150
|
+
|
|
89
151
|
it "should support us color option" do
|
|
90
152
|
options = parse(["--color"])
|
|
91
153
|
options.colour.should be_true
|
|
92
154
|
end
|
|
93
|
-
|
|
155
|
+
|
|
94
156
|
it "should support single example with -e option" do
|
|
95
157
|
options = parse(["-e", "something or other"])
|
|
96
158
|
options.examples.should eql(["something or other"])
|
|
97
159
|
end
|
|
98
|
-
|
|
160
|
+
|
|
99
161
|
it "should support single example with -s option (will be removed when autotest supports -e)" do
|
|
100
162
|
options = parse(["-s", "something or other"])
|
|
101
163
|
options.examples.should eql(["something or other"])
|
|
102
164
|
end
|
|
103
|
-
|
|
165
|
+
|
|
104
166
|
it "should support single example with --example option" do
|
|
105
167
|
options = parse(["--example", "something or other"])
|
|
106
168
|
options.examples.should eql(["something or other"])
|
|
107
169
|
end
|
|
108
|
-
|
|
170
|
+
|
|
109
171
|
it "should read several example names from file if --example is given an existing file name" do
|
|
110
172
|
options = parse(["--example", File.dirname(__FILE__) + '/examples.txt'])
|
|
111
173
|
options.examples.should eql([
|
|
@@ -117,232 +179,373 @@ describe "OptionParser" do
|
|
|
117
179
|
options = parse(["--example", File.dirname(__FILE__) + '/empty_file.txt'])
|
|
118
180
|
options.examples.should eql([])
|
|
119
181
|
end
|
|
120
|
-
|
|
182
|
+
|
|
121
183
|
it "should use html formatter when format is h" do
|
|
122
184
|
options = parse(["--format", "h"])
|
|
123
185
|
options.formatters[0].class.should equal(Spec::Runner::Formatter::HtmlFormatter)
|
|
124
186
|
end
|
|
125
|
-
|
|
187
|
+
|
|
126
188
|
it "should use html formatter when format is html" do
|
|
127
189
|
options = parse(["--format", "html"])
|
|
128
190
|
options.formatters[0].class.should equal(Spec::Runner::Formatter::HtmlFormatter)
|
|
129
191
|
end
|
|
130
|
-
|
|
192
|
+
|
|
193
|
+
it "should use silent formatter when format is s" do
|
|
194
|
+
options = parse(["--format", "l"])
|
|
195
|
+
options.formatters[0].class.should equal(Spec::Runner::Formatter::SilentFormatter)
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
it "should use silent formatter when format is silent" do
|
|
199
|
+
options = parse(["--format", "silent"])
|
|
200
|
+
options.formatters[0].class.should equal(Spec::Runner::Formatter::SilentFormatter)
|
|
201
|
+
end
|
|
202
|
+
|
|
131
203
|
it "should use html formatter with explicit output when format is html:test.html" do
|
|
132
204
|
FileUtils.rm 'test.html' if File.exist?('test.html')
|
|
133
205
|
options = parse(["--format", "html:test.html"])
|
|
134
|
-
|
|
206
|
+
options.formatters # creates the file
|
|
207
|
+
File.should exist('test.html')
|
|
135
208
|
options.formatters[0].class.should equal(Spec::Runner::Formatter::HtmlFormatter)
|
|
136
|
-
|
|
209
|
+
options.formatters[0].close
|
|
210
|
+
FileUtils.rm 'test.html'
|
|
137
211
|
end
|
|
138
|
-
|
|
212
|
+
|
|
139
213
|
it "should use noisy backtrace tweaker with b option" do
|
|
140
214
|
options = parse(["-b"])
|
|
141
215
|
options.backtrace_tweaker.should be_instance_of(Spec::Runner::NoisyBacktraceTweaker)
|
|
142
216
|
end
|
|
143
|
-
|
|
217
|
+
|
|
144
218
|
it "should use noisy backtrace tweaker with backtrace option" do
|
|
145
219
|
options = parse(["--backtrace"])
|
|
146
220
|
options.backtrace_tweaker.should be_instance_of(Spec::Runner::NoisyBacktraceTweaker)
|
|
147
221
|
end
|
|
148
|
-
|
|
222
|
+
|
|
149
223
|
it "should use quiet backtrace tweaker by default" do
|
|
150
224
|
options = parse([])
|
|
151
225
|
options.backtrace_tweaker.should be_instance_of(Spec::Runner::QuietBacktraceTweaker)
|
|
152
226
|
end
|
|
153
|
-
|
|
154
|
-
it "should use progress bar formatter by default" do
|
|
155
|
-
options = parse([])
|
|
156
|
-
options.formatters[0].class.should equal(Spec::Runner::Formatter::ProgressBarFormatter)
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
it "should use rdoc formatter when format is r" do
|
|
160
|
-
options = parse(["--format", "r"])
|
|
161
|
-
options.formatters[0].class.should equal(Spec::Runner::Formatter::RdocFormatter)
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
it "should use rdoc formatter when format is rdoc" do
|
|
165
|
-
options = parse(["--format", "rdoc"])
|
|
166
|
-
options.formatters[0].class.should equal(Spec::Runner::Formatter::RdocFormatter)
|
|
167
|
-
end
|
|
168
|
-
|
|
227
|
+
|
|
169
228
|
it "should use specdoc formatter when format is s" do
|
|
170
229
|
options = parse(["--format", "s"])
|
|
171
230
|
options.formatters[0].class.should equal(Spec::Runner::Formatter::SpecdocFormatter)
|
|
172
231
|
end
|
|
173
|
-
|
|
232
|
+
|
|
174
233
|
it "should use specdoc formatter when format is specdoc" do
|
|
175
234
|
options = parse(["--format", "specdoc"])
|
|
176
235
|
options.formatters[0].class.should equal(Spec::Runner::Formatter::SpecdocFormatter)
|
|
177
236
|
end
|
|
178
237
|
|
|
238
|
+
it "should use nested text formatter when format is s" do
|
|
239
|
+
options = parse(["--format", "n"])
|
|
240
|
+
options.formatters[0].class.should equal(Spec::Runner::Formatter::NestedTextFormatter)
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
it "should use nested text formatter when format is nested" do
|
|
244
|
+
options = parse(["--format", "nested"])
|
|
245
|
+
options.formatters[0].class.should equal(Spec::Runner::Formatter::NestedTextFormatter)
|
|
246
|
+
end
|
|
247
|
+
|
|
179
248
|
it "should support diff option when format is not specified" do
|
|
180
249
|
options = parse(["--diff"])
|
|
181
250
|
options.diff_format.should == :unified
|
|
182
251
|
end
|
|
183
|
-
|
|
252
|
+
|
|
184
253
|
it "should use unified diff format option when format is unified" do
|
|
185
254
|
options = parse(["--diff", "unified"])
|
|
186
255
|
options.diff_format.should == :unified
|
|
187
256
|
options.differ_class.should equal(Spec::Expectations::Differs::Default)
|
|
188
257
|
end
|
|
189
|
-
|
|
258
|
+
|
|
190
259
|
it "should use context diff format option when format is context" do
|
|
191
260
|
options = parse(["--diff", "context"])
|
|
192
261
|
options.diff_format.should == :context
|
|
193
262
|
options.differ_class.should == Spec::Expectations::Differs::Default
|
|
194
263
|
end
|
|
195
|
-
|
|
264
|
+
|
|
196
265
|
it "should use custom diff format option when format is a custom format" do
|
|
197
|
-
|
|
266
|
+
Spec::Expectations.differ.should_not be_instance_of(Custom::Differ)
|
|
267
|
+
|
|
268
|
+
options = parse(["--diff", "Custom::Differ"])
|
|
269
|
+
options.parse_diff "Custom::Differ"
|
|
198
270
|
options.diff_format.should == :custom
|
|
199
|
-
options.differ_class.should == Custom::
|
|
271
|
+
options.differ_class.should == Custom::Differ
|
|
272
|
+
Spec::Expectations.differ.should be_instance_of(Custom::Differ)
|
|
200
273
|
end
|
|
201
|
-
|
|
202
|
-
it "should print instructions about how to fix
|
|
203
|
-
|
|
204
|
-
@err.string.should match(/Couldn't find differ class Custom::
|
|
274
|
+
|
|
275
|
+
it "should print instructions about how to fix missing differ" do
|
|
276
|
+
lambda { parse(["--diff", "Custom::MissingFormatter"]) }.should raise_error(NameError)
|
|
277
|
+
@err.string.should match(/Couldn't find differ class Custom::MissingFormatter/n)
|
|
205
278
|
end
|
|
279
|
+
|
|
280
|
+
describe "when attempting a focussed spec" do
|
|
281
|
+
attr_reader :file, :dir
|
|
282
|
+
before(:each) do
|
|
283
|
+
@original_rspec_options = Spec::Runner.options
|
|
284
|
+
@file = "#{File.dirname(__FILE__)}/line_number_query/line_number_query_fixture.rb"
|
|
285
|
+
@dir = File.dirname(file)
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
after(:each) do
|
|
289
|
+
Spec::Runner.use @original_rspec_options
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
def parse(args)
|
|
293
|
+
options = super
|
|
294
|
+
Spec::Runner.use options
|
|
295
|
+
options.filename_pattern = "*_fixture.rb"
|
|
296
|
+
options
|
|
297
|
+
end
|
|
206
298
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
299
|
+
describe 'with the --line flag' do
|
|
300
|
+
it "should correctly identify the spec" do
|
|
301
|
+
options = parse([file, "--line", "13"])
|
|
302
|
+
options.line_number.should == 13
|
|
303
|
+
options.examples.should be_empty
|
|
304
|
+
options.run_examples
|
|
305
|
+
options.examples.should eql(["d"])
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
it "should fail with error message if specified file is a dir" do
|
|
309
|
+
options = parse([dir, "--line", "169"])
|
|
310
|
+
options.line_number.should == 169
|
|
311
|
+
options.run_examples
|
|
312
|
+
@err.string.should match(/You must specify one file, not a directory when providing a line number/n)
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
it "should fail with error message if file does not exist" do
|
|
317
|
+
options = parse(["some file", "--line", "169"])
|
|
318
|
+
proc do
|
|
319
|
+
options.run_examples
|
|
320
|
+
end.should raise_error
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
it "should fail with error message if more than one files are specified" do
|
|
324
|
+
options = parse([file, file, "--line", "169"])
|
|
325
|
+
options.run_examples
|
|
326
|
+
@err.string.should match(/Only one file can be specified when providing a line number/n)
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
it "should fail with error message if using simultaneously with --example" do
|
|
330
|
+
options = parse([file, "--example", "some example", "--line", "169"])
|
|
331
|
+
options.run_examples
|
|
332
|
+
@err.string.should match(/You cannot use --example and specify a line number/n)
|
|
333
|
+
end
|
|
334
|
+
end
|
|
215
335
|
|
|
216
|
-
|
|
336
|
+
describe 'with the colon syntax (filename:LINE_NUMBER)' do
|
|
337
|
+
|
|
338
|
+
it "should strip the line number from the file name" do
|
|
339
|
+
options = parse(["#{file}:13"])
|
|
340
|
+
options.files.should include(file)
|
|
341
|
+
end
|
|
342
|
+
|
|
343
|
+
it "should correctly identify the spec" do
|
|
344
|
+
options = parse(["#{file}:13"])
|
|
345
|
+
options.line_number.should == 13
|
|
346
|
+
options.examples.should be_empty
|
|
347
|
+
options.run_examples
|
|
348
|
+
options.examples.should eql(["d"])
|
|
349
|
+
end
|
|
350
|
+
|
|
351
|
+
it "should fail with error message if specified file is a dir" do
|
|
352
|
+
options = parse(["#{dir}:169"])
|
|
353
|
+
options.line_number.should == 169
|
|
354
|
+
options.run_examples
|
|
355
|
+
@err.string.should match(/You must specify one file, not a directory when providing a line number/n)
|
|
356
|
+
end
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
it "should fail with error message if file does not exist" do
|
|
360
|
+
options = parse(["some file:169"])
|
|
361
|
+
proc do
|
|
362
|
+
options.run_examples
|
|
363
|
+
end.should raise_error
|
|
364
|
+
end
|
|
365
|
+
|
|
366
|
+
it "should fail with error message if more than one files are specified" do
|
|
367
|
+
options = parse([file, "#{file}:169"])
|
|
368
|
+
options.run_examples
|
|
369
|
+
@err.string.should match(/Only one file can be specified when providing a line number/n)
|
|
370
|
+
end
|
|
371
|
+
|
|
372
|
+
it "should fail with error message if using simultaneously with --example" do
|
|
373
|
+
options = parse(["#{file}:169", "--example", "some example"])
|
|
374
|
+
options.run_examples
|
|
375
|
+
@err.string.should match(/You cannot use --example and specify a line number/n)
|
|
376
|
+
end
|
|
377
|
+
end
|
|
217
378
|
|
|
218
|
-
options = parse(["some file", "--line", "169"])
|
|
219
|
-
options.examples.should eql(["some spec"])
|
|
220
|
-
File.rspec_verify
|
|
221
379
|
end
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
380
|
+
|
|
381
|
+
if [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM}
|
|
382
|
+
it "should barf when --heckle is specified (and platform is windows)" do
|
|
383
|
+
lambda do
|
|
384
|
+
options = parse(["--heckle", "Spec"])
|
|
385
|
+
end.should raise_error(StandardError, /Heckle is not supported/)
|
|
386
|
+
end
|
|
387
|
+
elsif Spec::Ruby.version.to_f == 1.9
|
|
388
|
+
it "should barf when --heckle is specified (and platform is Ruby 1.9)" do
|
|
389
|
+
lambda do
|
|
390
|
+
options = parse(["--heckle", "Spec"])
|
|
391
|
+
end.should raise_error(StandardError, /Heckle is not supported/)
|
|
392
|
+
end
|
|
393
|
+
else
|
|
394
|
+
it "should heckle when --heckle is specified (and platform is not windows)" do
|
|
395
|
+
options = parse(["--heckle", "Spec"])
|
|
396
|
+
options.heckle_runner.should be_instance_of(Spec::Runner::HeckleRunner)
|
|
397
|
+
end
|
|
234
398
|
end
|
|
235
|
-
|
|
236
|
-
it "should
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
file_factory = mock("File")
|
|
241
|
-
file_factory.should_receive(:file?).and_return(false)
|
|
242
|
-
file_factory.should_receive(:directory?).and_return(false)
|
|
243
|
-
@parser.instance_variable_set('@file_factory', file_factory)
|
|
244
|
-
|
|
245
|
-
options = parse(["some file", "--line", "169"])
|
|
246
|
-
@err.string.should match(/some file does not exist/n)
|
|
399
|
+
|
|
400
|
+
it "should read options from file when --options is specified" do
|
|
401
|
+
options = parse(["--options", File.dirname(__FILE__) + "/spec.opts"])
|
|
402
|
+
options.diff_format.should_not be_nil
|
|
403
|
+
options.colour.should be_true
|
|
247
404
|
end
|
|
248
|
-
|
|
249
|
-
it "should
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
options = parse(["some file", "some other file", "--line", "169"])
|
|
254
|
-
@err.string.should match(/Only one file can be specified when using the --line option/n)
|
|
405
|
+
|
|
406
|
+
it "should default the formatter to ProgressBarFormatter when using options file" do
|
|
407
|
+
options = parse(["--options", File.dirname(__FILE__) + "/spec.opts"])
|
|
408
|
+
options.formatters.first.should be_instance_of(::Spec::Runner::Formatter::ProgressBarFormatter)
|
|
255
409
|
end
|
|
256
410
|
|
|
257
|
-
it "should
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
options = parse(["some file", "--example", "some example", "--line", "169"])
|
|
262
|
-
@err.string.should match(/You cannot use both --line and --example/n)
|
|
411
|
+
it "should run parse drb after parsing options" do
|
|
412
|
+
@parser.should_receive(:parse_drb).with(no_args).and_return(true)
|
|
413
|
+
options = parse(["--options", File.dirname(__FILE__) + "/spec_drb.opts"])
|
|
263
414
|
end
|
|
264
415
|
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
options
|
|
268
|
-
options.heckle_runner.should be_instance_of(Spec::Runner::HeckleRunner)
|
|
269
|
-
end
|
|
270
|
-
else
|
|
271
|
-
it "should barf when --heckle is specified (and platform is windows)" do
|
|
272
|
-
lambda do
|
|
273
|
-
options = parse(["--heckle", "Spec"])
|
|
274
|
-
end.should raise_error(StandardError, "Heckle not supported on Windows")
|
|
416
|
+
it "should send all the arguments other than --drb back to the parser after parsing options" do
|
|
417
|
+
Spec::Runner::DrbCommandLine.should_receive(:run).and_return do |options|
|
|
418
|
+
options.argv.should == ["example_file.rb", "--colour"]
|
|
275
419
|
end
|
|
420
|
+
options = parse(["example_file.rb", "--options", File.dirname(__FILE__) + "/spec_drb.opts"])
|
|
421
|
+
end
|
|
422
|
+
|
|
423
|
+
it "runs specs locally if no drb is running when --drb is specified" do
|
|
424
|
+
Spec::Runner::DrbCommandLine.should_receive(:run).and_return(false)
|
|
425
|
+
options = parse(["example_file.rb", "--options", File.dirname(__FILE__) + "/spec_drb.opts"])
|
|
426
|
+
options.__send__(:examples_should_be_run?).should be_true
|
|
276
427
|
end
|
|
277
428
|
|
|
278
|
-
it "
|
|
279
|
-
Spec::Runner::
|
|
280
|
-
options = parse(["--options", File.dirname(__FILE__) + "/
|
|
429
|
+
it "says its running specs locally if no drb is running when --drb is specified" do
|
|
430
|
+
Spec::Runner::DrbCommandLine.should_receive(:run).and_return(false)
|
|
431
|
+
options = parse(["example_file.rb", "--options", File.dirname(__FILE__) + "/spec_drb.opts"])
|
|
432
|
+
options.error_stream.rewind
|
|
433
|
+
options.error_stream.string.should =~ /Running specs locally/
|
|
281
434
|
end
|
|
282
435
|
|
|
283
|
-
it "
|
|
284
|
-
Spec::Runner::
|
|
285
|
-
options = parse(["
|
|
436
|
+
it "does not run specs locally if drb is running when --drb is specified" do
|
|
437
|
+
Spec::Runner::DrbCommandLine.should_receive(:run).and_return(true)
|
|
438
|
+
options = parse(["example_file.rb", "--options", File.dirname(__FILE__) + "/spec_drb.opts"])
|
|
439
|
+
options.__send__(:examples_should_be_run?).should be_false
|
|
286
440
|
end
|
|
287
|
-
|
|
441
|
+
|
|
288
442
|
it "should read spaced and multi-line options from file when --options is specified" do
|
|
289
|
-
Spec::Runner::CommandLine.should_receive(:run).with(["--diff", "--colour", "--format", "s"], @err, @out, true, true)
|
|
290
443
|
options = parse(["--options", File.dirname(__FILE__) + "/spec_spaced.opts"])
|
|
444
|
+
options.diff_format.should_not be_nil
|
|
445
|
+
options.colour.should be_true
|
|
446
|
+
options.formatters.first.should be_instance_of(::Spec::Runner::Formatter::SpecdocFormatter)
|
|
291
447
|
end
|
|
292
448
|
|
|
293
449
|
it "should save config to file when --generate-options is specified" do
|
|
294
|
-
FileUtils.rm 'test.spec.opts'
|
|
450
|
+
FileUtils.rm 'test.spec.opts' if File.exist?('test.spec.opts')
|
|
295
451
|
options = parse(["--colour", "--generate-options", "test.spec.opts", "--diff"])
|
|
296
|
-
|
|
297
|
-
FileUtils.rm 'test.spec.opts'
|
|
452
|
+
IO.read('test.spec.opts').should == "--colour\n--diff\n"
|
|
453
|
+
FileUtils.rm 'test.spec.opts'
|
|
298
454
|
end
|
|
299
|
-
|
|
300
|
-
it "should
|
|
301
|
-
|
|
302
|
-
options = parse(["
|
|
455
|
+
|
|
456
|
+
it "should save config to file when -G is specified" do
|
|
457
|
+
FileUtils.rm 'test.spec.opts' if File.exist?('test.spec.opts')
|
|
458
|
+
options = parse(["--colour", "-G", "test.spec.opts", "--diff"])
|
|
459
|
+
IO.read('test.spec.opts').should == "--colour\n--diff\n"
|
|
460
|
+
FileUtils.rm 'test.spec.opts'
|
|
303
461
|
end
|
|
304
462
|
|
|
305
|
-
it "
|
|
306
|
-
Spec::Runner::
|
|
307
|
-
|
|
463
|
+
it "when --drb is specified, calls DrbCommandLine all of the other ARGV arguments" do
|
|
464
|
+
options = Spec::Runner::OptionParser.parse([
|
|
465
|
+
"some/spec.rb", "--diff", "--colour"
|
|
466
|
+
], @err, @out)
|
|
467
|
+
Spec::Runner::DrbCommandLine.should_receive(:run).and_return do |options|
|
|
468
|
+
options.argv.should == ["some/spec.rb", "--diff", "--colour"]
|
|
469
|
+
end
|
|
470
|
+
parse(["some/spec.rb", "--diff", "--drb", "--colour"])
|
|
308
471
|
end
|
|
309
|
-
|
|
472
|
+
|
|
310
473
|
it "should reverse spec order when --reverse is specified" do
|
|
311
474
|
options = parse(["some/spec.rb", "--reverse"])
|
|
312
475
|
end
|
|
313
|
-
|
|
476
|
+
|
|
314
477
|
it "should set an mtime comparator when --loadby mtime" do
|
|
315
|
-
|
|
478
|
+
options = parse(["--loadby", 'mtime'])
|
|
479
|
+
runner = Spec::Runner::ExampleGroupRunner.new(options)
|
|
480
|
+
Spec::Runner::ExampleGroupRunner.should_receive(:new).
|
|
481
|
+
with(options).
|
|
482
|
+
and_return(runner)
|
|
483
|
+
runner.should_receive(:load_files).with(["most_recent_spec.rb", "command_line_spec.rb"])
|
|
484
|
+
|
|
316
485
|
Dir.chdir(File.dirname(__FILE__)) do
|
|
486
|
+
options.files << 'command_line_spec.rb'
|
|
487
|
+
options.files << 'most_recent_spec.rb'
|
|
317
488
|
FileUtils.touch "most_recent_spec.rb"
|
|
318
|
-
|
|
319
|
-
sorted_files = behaviour_runner.sort_paths(all_files)
|
|
320
|
-
sorted_files.should == ["most_recent_spec.rb", "command_line_spec.rb"]
|
|
489
|
+
options.run_examples
|
|
321
490
|
FileUtils.rm "most_recent_spec.rb"
|
|
322
491
|
end
|
|
323
492
|
end
|
|
324
|
-
|
|
325
|
-
it "should
|
|
493
|
+
|
|
494
|
+
it "should use the standard runner by default" do
|
|
495
|
+
runner = ::Spec::Runner::ExampleGroupRunner.new(@parser.options)
|
|
496
|
+
::Spec::Runner::ExampleGroupRunner.should_receive(:new).
|
|
497
|
+
with(@parser.options).
|
|
498
|
+
and_return(runner)
|
|
326
499
|
options = parse([])
|
|
327
|
-
options.
|
|
500
|
+
options.run_examples
|
|
328
501
|
end
|
|
329
|
-
|
|
502
|
+
|
|
330
503
|
it "should use a custom runner when given" do
|
|
331
|
-
|
|
332
|
-
|
|
504
|
+
runner = Custom::ExampleGroupRunner.new(@parser.options, nil)
|
|
505
|
+
Custom::ExampleGroupRunner.should_receive(:new).
|
|
506
|
+
with(@parser.options, nil).
|
|
507
|
+
and_return(runner)
|
|
508
|
+
options = parse(["--runner", "Custom::ExampleGroupRunner"])
|
|
509
|
+
options.run_examples
|
|
333
510
|
end
|
|
334
|
-
|
|
335
|
-
it "should
|
|
336
|
-
|
|
337
|
-
|
|
511
|
+
|
|
512
|
+
it "should use a custom runner with extra options" do
|
|
513
|
+
runner = Custom::ExampleGroupRunner.new(@parser.options, 'something')
|
|
514
|
+
Custom::ExampleGroupRunner.should_receive(:new).
|
|
515
|
+
with(@parser.options, 'something').
|
|
516
|
+
and_return(runner)
|
|
517
|
+
options = parse(["--runner", "Custom::ExampleGroupRunner:something"])
|
|
518
|
+
options.run_examples
|
|
338
519
|
end
|
|
339
|
-
|
|
340
|
-
it "
|
|
341
|
-
|
|
520
|
+
|
|
521
|
+
it "sets options.autospec to true with --autospec" do
|
|
522
|
+
options = parse(["--autospec"])
|
|
523
|
+
options.autospec.should be(true)
|
|
342
524
|
end
|
|
525
|
+
|
|
526
|
+
describe "implicitly loading spec/spec.opts" do
|
|
527
|
+
include FakeFS::SpecHelpers
|
|
343
528
|
|
|
344
|
-
|
|
345
|
-
|
|
529
|
+
it "uses spec/spec.opts if present" do
|
|
530
|
+
File.open('spec/spec.opts', 'w') { |f| f.write "--colour" }
|
|
531
|
+
options = parse(['ignore.rb'])
|
|
532
|
+
options.colour.should be(true)
|
|
533
|
+
end
|
|
534
|
+
|
|
535
|
+
it "does not try to load spec/spec.opts if not present" do
|
|
536
|
+
FileUtils.rm 'spec/spec.opts'
|
|
537
|
+
options = parse(['ignore.rb'])
|
|
538
|
+
options.colour.should be(false)
|
|
539
|
+
end
|
|
540
|
+
|
|
541
|
+
it "uses specified opts if supplied" do
|
|
542
|
+
options = nil
|
|
543
|
+
File.open("spec/spec.opts",'w') { |f| f.write "" }
|
|
544
|
+
File.open("spec/alternate.opts",'w') { |f| f.write "--colour" }
|
|
545
|
+
options = parse(['-O','spec/alternate.opts'])
|
|
546
|
+
options.colour.should be(true)
|
|
547
|
+
end
|
|
346
548
|
end
|
|
347
|
-
|
|
549
|
+
|
|
550
|
+
|
|
348
551
|
end
|