rspec 1.0.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +7 -0
- data/History.rdoc +1546 -0
- data/{MIT-LICENSE → License.txt} +3 -1
- data/Manifest.txt +384 -0
- data/README.rdoc +41 -0
- data/Rakefile +94 -229
- data/Ruby1.9.rdoc +31 -0
- data/TODO.txt +17 -0
- data/Upgrade.rdoc +260 -0
- data/bin/autospec +4 -0
- data/bin/spec +5 -3
- data/cucumber.yml +5 -0
- data/examples/failing/README.txt +11 -0
- data/examples/failing/diffing_spec.rb +36 -0
- data/examples/failing/failing_implicit_docstrings_example.rb +17 -0
- data/examples/failing/failure_in_after.rb +10 -0
- data/examples/failing/failure_in_before.rb +10 -0
- data/examples/failing/mocking_example.rb +38 -0
- data/examples/failing/mocking_with_flexmock.rb +26 -0
- data/examples/failing/mocking_with_mocha.rb +25 -0
- data/examples/failing/mocking_with_rr.rb +27 -0
- data/examples/failing/partial_mock_example.rb +18 -0
- data/examples/failing/pending_example.rb +7 -0
- data/examples/failing/predicate_example.rb +32 -0
- data/examples/failing/raising_example.rb +47 -0
- data/examples/failing/syntax_error_example.rb +7 -0
- data/examples/failing/team_spec.rb +41 -0
- data/examples/failing/timeout_behaviour.rb +5 -0
- data/examples/{custom_formatter.rb → passing/custom_formatter.rb} +1 -1
- data/examples/passing/dynamic_spec.rb +7 -0
- data/examples/{file_accessor.rb → passing/file_accessor.rb} +18 -18
- data/examples/{file_accessor_spec.rb → passing/file_accessor_spec.rb} +37 -38
- data/examples/passing/filtered_formatter.rb +17 -0
- data/examples/passing/filtered_formatter_example.rb +31 -0
- data/examples/{greeter_spec.rb → passing/greeter_spec.rb} +1 -1
- data/examples/passing/helper_method_example.rb +12 -0
- data/examples/passing/implicit_docstrings_example.rb +16 -0
- data/examples/{io_processor.rb → passing/io_processor.rb} +8 -8
- data/examples/{io_processor_spec.rb → passing/io_processor_spec.rb} +2 -3
- data/examples/{mocking_example.rb → passing/mocking_example.rb} +0 -2
- data/examples/{multi_threaded_behaviour_runner.rb → passing/multi_threaded_example_group_runner.rb} +10 -9
- data/examples/passing/nested_classes_example.rb +35 -0
- data/examples/passing/options_example.rb +29 -0
- data/examples/passing/options_formatter.rb +20 -0
- data/examples/{partial_mock_example.rb → passing/partial_mock_example.rb} +2 -3
- data/examples/passing/pending_example.rb +18 -0
- data/examples/{predicate_example.rb → passing/predicate_example.rb} +1 -3
- data/examples/{shared_behaviours_example.rb → passing/shared_example_group_example.rb} +15 -11
- data/examples/passing/shared_stack_examples.rb +36 -0
- data/examples/passing/simple_matcher_example.rb +29 -0
- data/examples/{stack.rb → passing/stack.rb} +1 -1
- data/examples/{stack_spec.rb → passing/stack_spec.rb} +6 -40
- data/examples/passing/stack_spec_with_nested_example_groups.rb +66 -0
- data/examples/{stubbing_example.rb → passing/stubbing_example.rb} +1 -3
- data/examples/passing/yielding_example.rb +31 -0
- data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +85 -0
- data/features/before_and_after_blocks/before_and_after_blocks.feature +167 -0
- data/features/command_line/line_number_option.feature +56 -0
- data/features/command_line/line_number_option_with_example_with_no_name.feature +22 -0
- data/features/example_groups/define_example_attribute.feature +41 -0
- data/features/example_groups/example_group_with_should_methods.feature +29 -0
- data/features/example_groups/implicit_docstrings.feature +59 -0
- data/features/example_groups/nested_groups.feature +32 -0
- data/features/expectations/customized_message.feature +54 -0
- data/features/expectations/expect_change.feature +65 -0
- data/features/expectations/expect_error.feature +44 -0
- data/features/extensions/custom_example_group.feature +19 -0
- data/features/formatters/custom_formatter.feature +30 -0
- data/features/formatters/nested_formatter.feature +32 -0
- data/features/interop/cucumber_stubs_dont_leak.feature +11 -0
- data/features/interop/examples_and_tests_together.feature +84 -0
- data/features/interop/rspec_output.feature +25 -0
- data/features/interop/test_but_not_test_unit.feature +26 -0
- data/features/interop/test_case_with_should_methods.feature +46 -0
- data/features/load_paths/add_lib_to_load_path.feature +20 -0
- data/features/load_paths/add_spec_to_load_path.feature +20 -0
- data/features/matchers/define_diffable_matcher.feature +26 -0
- data/features/matchers/define_matcher.feature +179 -0
- data/features/matchers/define_matcher_outside_rspec.feature +38 -0
- data/features/matchers/define_matcher_with_fluent_interface.feature +48 -0
- data/features/matchers/define_wrapped_matcher.feature +56 -0
- data/features/matchers/match_unless_raises.feature +60 -0
- data/features/matchers/match_unless_raises_unexpected_error.feature +39 -0
- data/features/mock_framework_integration/use_flexmock.feature +27 -0
- data/features/mock_framework_integration/use_mocha.feature +27 -0
- data/features/mock_framework_integration/use_rr.feature +27 -0
- data/features/mocks/block_local_expectations.feature +62 -0
- data/features/mocks/mix_stubs_and_mocks.feature +22 -0
- data/features/mocks/stub_implementation.feature +26 -0
- data/features/pending/pending_examples.feature +81 -0
- data/features/runner/specify_line_number.feature +32 -0
- data/features/spec_helper/spec_helper.feature +25 -0
- data/features/step_definitions/running_rspec_steps.rb +52 -0
- data/features/step_definitions/stubbing_steps.rb +16 -0
- data/features/subject/explicit_subject.feature +31 -0
- data/features/subject/implicit_subject.feature +43 -0
- data/features/support/env.rb +83 -0
- data/features/support/matchers/smart_match.rb +31 -0
- data/geminstaller.yml +29 -0
- data/init.rb +9 -0
- data/lib/autotest/discover.rb +3 -0
- data/lib/autotest/rspec.rb +54 -0
- data/lib/spec/adapters/mock_frameworks/flexmock.rb +24 -0
- data/{plugins → lib/spec/adapters}/mock_frameworks/mocha.rb +8 -4
- data/lib/spec/adapters/mock_frameworks/rr.rb +22 -0
- data/lib/spec/adapters/mock_frameworks/rspec.rb +21 -0
- data/lib/spec/autorun.rb +3 -0
- data/lib/spec/deprecation.rb +41 -0
- data/lib/spec/dsl/main.rb +93 -0
- data/lib/spec/dsl.rb +1 -10
- data/lib/spec/example/args_and_options.rb +27 -0
- data/lib/spec/example/before_and_after_hooks.rb +93 -0
- data/lib/spec/example/errors.rb +25 -0
- data/lib/spec/example/example_group.rb +10 -0
- data/lib/spec/example/example_group_factory.rb +82 -0
- data/lib/spec/example/example_group_hierarchy.rb +53 -0
- data/lib/spec/example/example_group_methods.rb +287 -0
- data/lib/spec/example/example_group_proxy.rb +61 -0
- data/lib/spec/example/example_matcher.rb +43 -0
- data/lib/spec/example/example_methods.rb +152 -0
- data/lib/spec/example/example_proxy.rb +41 -0
- data/lib/spec/example/module_reopening_fix.rb +43 -0
- data/lib/spec/example/pending.rb +18 -0
- data/lib/spec/example/predicate_matchers.rb +46 -0
- data/lib/spec/example/shared_example_group.rb +59 -0
- data/lib/spec/example/subject.rb +114 -0
- data/lib/spec/example.rb +164 -0
- data/lib/spec/expectations/errors.rb +7 -1
- data/lib/spec/expectations/extensions/kernel.rb +52 -0
- data/lib/spec/expectations/extensions.rb +1 -2
- data/lib/spec/expectations/fail_with.rb +45 -0
- data/lib/spec/expectations/handler.rb +37 -30
- data/lib/spec/expectations.rb +2 -23
- data/lib/spec/extensions/instance_exec.rb +31 -0
- data/lib/spec/interop/test/unit/autorunner.rb +6 -0
- data/lib/spec/interop/test/unit/testcase.rb +56 -0
- data/lib/spec/interop/test/unit/testresult.rb +6 -0
- data/lib/spec/interop/test/unit/testsuite_adapter.rb +36 -0
- data/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
- data/lib/spec/interop/test.rb +44 -0
- data/lib/spec/matchers/be.rb +183 -140
- data/lib/spec/matchers/be_close.rb +18 -23
- data/lib/spec/matchers/be_instance_of.rb +26 -0
- data/lib/spec/matchers/be_kind_of.rb +26 -0
- data/lib/spec/matchers/change.rb +72 -41
- data/lib/spec/matchers/compatibility.rb +14 -0
- data/lib/spec/matchers/dsl.rb +20 -0
- data/lib/spec/matchers/eql.rb +25 -26
- data/lib/spec/matchers/equal.rb +35 -25
- data/lib/spec/matchers/errors.rb +5 -0
- data/lib/spec/matchers/exist.rb +16 -0
- data/lib/spec/matchers/generated_descriptions.rb +36 -0
- data/lib/spec/matchers/has.rb +17 -26
- data/lib/spec/matchers/have.rb +36 -24
- data/lib/spec/matchers/include.rb +22 -48
- data/lib/spec/matchers/match.rb +11 -31
- data/lib/spec/matchers/match_array.rb +71 -0
- data/lib/spec/matchers/matcher.rb +132 -0
- data/lib/spec/matchers/method_missing.rb +9 -0
- data/lib/spec/matchers/operator_matcher.rb +55 -44
- data/lib/spec/matchers/pretty.rb +37 -0
- data/lib/spec/matchers/raise_exception.rb +131 -0
- data/lib/spec/matchers/respond_to.rb +35 -9
- data/lib/spec/matchers/satisfy.rb +2 -2
- data/lib/spec/matchers/simple_matcher.rb +134 -0
- data/lib/spec/matchers/throw_symbol.rb +56 -31
- data/lib/spec/matchers/wrap_expectation.rb +55 -0
- data/lib/spec/matchers.rb +104 -48
- data/lib/spec/mocks/argument_expectation.rb +28 -112
- data/lib/spec/mocks/argument_matchers.rb +237 -0
- data/lib/spec/mocks/error_generator.rb +20 -13
- data/lib/spec/mocks/errors.rb +1 -1
- data/lib/spec/mocks/example_methods.rb +69 -0
- data/lib/spec/mocks/extensions.rb +1 -0
- data/lib/spec/mocks/framework.rb +15 -0
- data/lib/spec/mocks/message_expectation.rb +206 -93
- data/lib/spec/mocks/methods.rb +66 -7
- data/lib/spec/mocks/mock.rb +53 -11
- data/lib/spec/mocks/proxy.rb +160 -55
- data/lib/spec/mocks/space.rb +2 -2
- data/lib/spec/mocks.rb +14 -23
- data/lib/spec/rake/spectask.rb +108 -53
- data/lib/spec/rake/verify_rcov.rb +4 -4
- data/lib/spec/ruby.rb +9 -0
- data/lib/spec/runner/backtrace_tweaker.rb +45 -23
- data/lib/spec/runner/class_and_arguments_parser.rb +14 -0
- data/lib/spec/runner/command_line.rb +7 -14
- data/lib/spec/runner/configuration.rb +202 -0
- data/lib/spec/runner/differs/default.rb +93 -0
- data/lib/spec/runner/differs/load-diff-lcs.rb +12 -0
- data/lib/spec/runner/drb_command_line.rb +18 -7
- data/lib/spec/runner/example_group_runner.rb +58 -0
- data/lib/spec/runner/extensions/kernel.rb +5 -46
- data/lib/spec/runner/formatter/base_formatter.rb +97 -26
- data/lib/spec/runner/formatter/base_text_formatter.rb +79 -39
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +25 -0
- data/lib/spec/runner/formatter/failing_examples_formatter.rb +6 -8
- data/lib/spec/runner/formatter/html_formatter.rb +101 -75
- data/lib/spec/runner/formatter/nested_text_formatter.rb +50 -0
- data/lib/spec/runner/formatter/no_op_method_missing.rb +21 -0
- data/lib/spec/runner/formatter/profile_formatter.rb +47 -0
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +11 -8
- data/lib/spec/runner/formatter/silent_formatter.rb +10 -0
- data/lib/spec/runner/formatter/snippet_extractor.rb +2 -2
- data/lib/spec/runner/formatter/specdoc_formatter.rb +20 -15
- data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
- data/lib/spec/runner/heckle_runner.rb +56 -56
- data/lib/spec/runner/{heckle_runner_win.rb → heckle_runner_unsupported.rb} +10 -10
- data/lib/spec/runner/line_number_query.rb +78 -0
- data/lib/spec/runner/option_parser.rb +147 -148
- data/lib/spec/runner/options.rb +343 -95
- data/lib/spec/runner/reporter.rb +117 -60
- data/lib/spec/runner.rb +39 -138
- data/lib/spec/stubs/cucumber.rb +5 -0
- data/lib/spec/test/unit.rb +10 -0
- data/lib/spec/version.rb +14 -22
- data/lib/spec.rb +5 -10
- data/resources/helpers/cmdline.rb +8 -0
- data/resources/rake/examples.rake +7 -0
- data/resources/rake/examples_with_rcov.rake +9 -0
- data/resources/rake/failing_examples_with_html.rake +9 -0
- data/resources/rake/verify_rcov.rake +7 -0
- data/spec/README.jruby +15 -0
- data/spec/autotest/autotest_helper.rb +8 -0
- data/spec/autotest/autotest_matchers.rb +38 -0
- data/spec/autotest/discover_spec.rb +8 -0
- data/spec/autotest/failed_results_re_spec.rb +31 -0
- data/spec/autotest/rspec_spec.rb +126 -0
- data/spec/ruby_forker.rb +13 -0
- data/spec/spec/dsl/main_spec.rb +103 -0
- data/spec/spec/example/example_group_class_definition_spec.rb +51 -0
- data/spec/spec/example/example_group_factory_spec.rb +180 -0
- data/spec/spec/example/example_group_methods_spec.rb +778 -0
- data/spec/spec/example/example_group_proxy_spec.rb +107 -0
- data/spec/spec/example/example_group_spec.rb +632 -0
- data/spec/spec/example/example_matcher_spec.rb +85 -0
- data/spec/spec/example/example_methods_spec.rb +162 -0
- data/spec/spec/example/example_proxy_spec.rb +57 -0
- data/spec/spec/example/helper_method_spec.rb +24 -0
- data/spec/spec/{dsl/behaviour_eval_spec.rb → example/nested_example_group_spec.rb} +25 -3
- data/spec/spec/example/pending_module_spec.rb +58 -0
- data/spec/spec/example/predicate_matcher_spec.rb +41 -0
- data/spec/spec/example/shared_example_group_spec.rb +257 -0
- data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
- data/spec/spec/example/subject_spec.rb +110 -0
- data/spec/spec/expectations/differs/default_spec.rb +100 -13
- data/spec/spec/expectations/extensions/{object_spec.rb → kernel_spec.rb} +13 -14
- data/spec/spec/expectations/fail_with_spec.rb +42 -17
- data/spec/spec/expectations/handler_spec.rb +206 -0
- data/spec/spec/expectations/wrap_expectation_spec.rb +31 -0
- data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
- data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
- data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
- data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
- data/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb +22 -0
- data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
- data/spec/spec/interop/test/unit/spec_spec.rb +48 -0
- data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +18 -0
- data/spec/spec/interop/test/unit/testcase_spec.rb +50 -0
- data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
- data/spec/spec/matchers/be_close_spec.rb +32 -21
- data/spec/spec/matchers/be_instance_of_spec.rb +36 -0
- data/spec/spec/matchers/be_kind_of_spec.rb +33 -0
- data/spec/spec/matchers/be_spec.rb +261 -10
- data/spec/spec/matchers/change_spec.rb +178 -61
- data/spec/spec/matchers/compatibility_spec.rb +28 -0
- data/spec/spec/matchers/description_generation_spec.rb +47 -46
- data/spec/spec/matchers/dsl_spec.rb +34 -0
- data/spec/spec/matchers/eql_spec.rb +14 -9
- data/spec/spec/matchers/equal_spec.rb +43 -14
- data/spec/spec/matchers/exist_spec.rb +41 -24
- data/spec/spec/matchers/has_spec.rb +154 -1
- data/spec/spec/matchers/have_spec.rb +311 -189
- data/spec/spec/matchers/include_spec.rb +45 -2
- data/spec/spec/matchers/match_array_spec.rb +115 -0
- data/spec/spec/matchers/match_spec.rb +25 -5
- data/spec/spec/matchers/matcher_spec.rb +289 -0
- data/spec/spec/matchers/matchers_spec.rb +2 -0
- data/spec/spec/matchers/operator_matcher_spec.rb +48 -15
- data/spec/spec/matchers/raise_exception_spec.rb +345 -0
- data/spec/spec/matchers/respond_to_spec.rb +78 -16
- data/spec/spec/matchers/satisfy_spec.rb +1 -1
- data/spec/spec/matchers/simple_matcher_spec.rb +100 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +111 -41
- data/spec/spec/mocks/and_yield_spec.rb +117 -0
- data/spec/spec/mocks/any_number_of_times_spec.rb +9 -2
- data/spec/spec/mocks/argument_expectation_spec.rb +19 -15
- data/spec/spec/mocks/argument_matchers_spec.rb +19 -0
- data/spec/spec/mocks/at_least_spec.rb +2 -2
- data/spec/spec/mocks/at_most_spec.rb +3 -3
- data/spec/spec/mocks/bug_report_10260_spec.rb +1 -1
- data/spec/spec/mocks/bug_report_10263_spec.rb +27 -0
- data/spec/spec/mocks/bug_report_11545_spec.rb +32 -0
- data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
- data/spec/spec/mocks/bug_report_496_spec.rb +17 -0
- data/spec/spec/mocks/bug_report_600_spec.rb +22 -0
- data/spec/spec/mocks/bug_report_7611_spec.rb +2 -2
- data/spec/spec/mocks/bug_report_7805_spec.rb +2 -2
- data/spec/spec/mocks/bug_report_8165_spec.rb +4 -4
- data/spec/spec/mocks/bug_report_8302_spec.rb +2 -2
- data/spec/spec/mocks/bug_report_830_spec.rb +21 -0
- data/spec/spec/mocks/double_spec.rb +12 -0
- data/spec/spec/mocks/failing_argument_matchers_spec.rb +95 -0
- data/spec/spec/mocks/hash_including_matcher_spec.rb +90 -0
- data/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
- data/spec/spec/mocks/mock_ordering_spec.rb +15 -5
- data/spec/spec/mocks/mock_space_spec.rb +1 -1
- data/spec/spec/mocks/mock_spec.rb +346 -129
- data/spec/spec/mocks/multiple_return_value_spec.rb +9 -9
- data/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
- data/spec/spec/mocks/null_object_mock_spec.rb +15 -1
- data/spec/spec/mocks/once_counts_spec.rb +2 -2
- data/spec/spec/mocks/options_hash_spec.rb +19 -17
- data/spec/spec/mocks/partial_mock_spec.rb +124 -12
- data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +2 -2
- data/spec/spec/mocks/passing_argument_matchers_spec.rb +145 -0
- data/spec/spec/mocks/precise_counts_spec.rb +2 -2
- data/spec/spec/mocks/record_messages_spec.rb +2 -2
- data/spec/spec/mocks/stub_chain_spec.rb +42 -0
- data/spec/spec/mocks/stub_implementation_spec.rb +31 -0
- data/spec/spec/mocks/stub_spec.rb +147 -103
- data/spec/spec/mocks/stubbed_message_expectations_spec.rb +26 -0
- data/spec/spec/mocks/twice_counts_spec.rb +2 -2
- data/spec/spec/mocks/unstub_spec.rb +127 -0
- data/spec/spec/package/bin_spec_spec.rb +11 -7
- data/spec/spec/rake/spectask_spec.rb +150 -0
- data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
- data/spec/spec/runner/command_line_spec.rb +158 -29
- data/spec/spec/runner/configuration_spec.rb +320 -0
- data/spec/spec/runner/drb_command_line_spec.rb +137 -72
- data/spec/spec/runner/empty_file.txt +0 -0
- data/spec/spec/runner/example_group_runner_spec.rb +26 -0
- data/spec/spec/runner/examples.txt +2 -0
- data/spec/spec/runner/failed.txt +3 -0
- data/spec/spec/runner/formatter/base_formatter_spec.rb +30 -0
- data/spec/spec/runner/formatter/base_text_formatter_spec.rb +113 -0
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +17 -12
- data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +377 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +377 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.7.html +377 -0
- data/spec/spec/runner/formatter/html_formatted-1.9.1.html +377 -0
- data/spec/spec/runner/formatter/html_formatter_spec.rb +112 -52
- data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +329 -0
- data/spec/spec/runner/formatter/profile_formatter_spec.rb +70 -0
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +87 -16
- data/spec/spec/runner/formatter/snippet_extractor_spec.rb +14 -7
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +153 -50
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +371 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +371 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +371 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +371 -0
- data/spec/spec/runner/formatter/text_mate_formatter_spec.rb +106 -0
- data/spec/spec/runner/heckle_runner_spec.rb +32 -17
- data/spec/spec/runner/heckler_spec.rb +17 -11
- data/spec/spec/runner/line_number_query/line_number_query_fixture.rb +70 -0
- data/spec/spec/runner/line_number_query_spec.rb +129 -0
- data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +27 -21
- data/spec/spec/runner/option_parser_spec.rb +367 -164
- data/spec/spec/runner/options_spec.rb +506 -94
- data/spec/spec/runner/output_one_time_fixture.rb +7 -0
- data/spec/spec/runner/output_one_time_fixture_runner.rb +7 -0
- data/spec/spec/runner/output_one_time_spec.rb +15 -0
- data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +94 -27
- data/spec/spec/runner/reporter_spec.rb +212 -121
- data/spec/spec/runner/resources/a_bar.rb +0 -0
- data/spec/spec/runner/resources/a_foo.rb +0 -0
- data/spec/spec/runner/resources/a_spec.rb +1 -0
- data/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
- data/spec/spec/runner/resources/utf8_encoded.rb +8 -0
- data/spec/spec/runner/spec.opts +2 -0
- data/spec/spec/runner/spec_drb.opts +2 -0
- data/spec/spec/runner/spec_spaced.opts +2 -0
- data/spec/spec/runner_spec.rb +13 -0
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +87 -45
- data/spec/support/macros.rb +29 -0
- data/spec/{spec → support}/spec_classes.rb +26 -4
- metadata +461 -141
- data/CHANGES +0 -748
- data/EXAMPLES.rd +0 -108
- data/README +0 -70
- data/UPGRADE +0 -31
- data/bin/spec_translator +0 -8
- data/examples/auto_spec_description_example.rb +0 -19
- data/examples/before_and_after_example.rb +0 -39
- data/examples/behave_as_example.rb +0 -45
- data/examples/dynamic_spec.rb +0 -9
- data/examples/helper_method_example.rb +0 -11
- data/examples/legacy_spec.rb +0 -10
- data/examples/not_yet_implemented_spec.rb +0 -12
- data/examples/priority.txt +0 -1
- data/examples/spec_helper.rb +0 -1
- data/examples/test_case_adapter_example.rb +0 -26
- data/examples/test_case_spec.rb +0 -65
- data/lib/spec/dsl/behaviour.rb +0 -204
- data/lib/spec/dsl/behaviour_callbacks.rb +0 -77
- data/lib/spec/dsl/behaviour_eval.rb +0 -177
- data/lib/spec/dsl/behaviour_factory.rb +0 -42
- data/lib/spec/dsl/composite_proc_builder.rb +0 -28
- data/lib/spec/dsl/configuration.rb +0 -119
- data/lib/spec/dsl/description.rb +0 -46
- data/lib/spec/dsl/example.rb +0 -127
- data/lib/spec/dsl/example_matcher.rb +0 -28
- data/lib/spec/dsl/example_should_raise_handler.rb +0 -74
- data/lib/spec/expectations/differs/default.rb +0 -61
- data/lib/spec/expectations/extensions/object.rb +0 -66
- data/lib/spec/expectations/extensions/string_and_symbol.rb +0 -17
- data/lib/spec/extensions/object.rb +0 -6
- data/lib/spec/extensions.rb +0 -1
- data/lib/spec/matchers/raise_error.rb +0 -100
- data/lib/spec/mocks/argument_constraint_matchers.rb +0 -12
- data/lib/spec/mocks/spec_methods.rb +0 -30
- data/lib/spec/runner/behaviour_runner.rb +0 -102
- data/lib/spec/runner/extensions/object.rb +0 -32
- data/lib/spec/runner/formatter/failing_behaviours_formatter.rb +0 -25
- data/lib/spec/runner/formatter/rdoc_formatter.rb +0 -24
- data/lib/spec/runner/formatter.rb +0 -9
- data/lib/spec/runner/spec_parser.rb +0 -50
- data/lib/spec/test_case_adapter.rb +0 -10
- data/lib/spec/translator.rb +0 -106
- data/plugins/mock_frameworks/flexmock.rb +0 -27
- data/plugins/mock_frameworks/rspec.rb +0 -18
- data/spec/spec/dsl/behaviour_factory_spec.rb +0 -30
- data/spec/spec/dsl/behaviour_spec.rb +0 -604
- data/spec/spec/dsl/composite_proc_builder_spec.rb +0 -57
- data/spec/spec/dsl/configuration_spec.rb +0 -50
- data/spec/spec/dsl/description_spec.rb +0 -81
- data/spec/spec/dsl/example_class_spec.rb +0 -24
- data/spec/spec/dsl/example_instance_spec.rb +0 -162
- data/spec/spec/dsl/example_should_raise_spec.rb +0 -137
- data/spec/spec/dsl/predicate_matcher_spec.rb +0 -21
- data/spec/spec/dsl/shared_behaviour_spec.rb +0 -208
- data/spec/spec/matchers/handler_spec.rb +0 -88
- data/spec/spec/matchers/matcher_methods_spec.rb +0 -78
- data/spec/spec/matchers/raise_error_spec.rb +0 -147
- data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +0 -73
- data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +0 -92
- data/spec/spec/runner/behaviour_runner_spec.rb +0 -118
- data/spec/spec/runner/context_matching_spec.rb +0 -27
- data/spec/spec/runner/execution_context_spec.rb +0 -31
- data/spec/spec/runner/extensions/kernel_spec.rb +0 -36
- data/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +0 -27
- data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +0 -21
- data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +0 -36
- data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +0 -19
- data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +0 -46
- data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +0 -21
- data/spec/spec/runner/object_ext_spec.rb +0 -11
- data/spec/spec/runner/spec_matcher_spec.rb +0 -102
- data/spec/spec/runner/spec_parser_spec.rb +0 -93
- data/spec/spec/translator_spec.rb +0 -216
- /data/examples/{custom_expectation_matchers.rb → passing/custom_matchers.rb} +0 -0
data/Rakefile
CHANGED
|
@@ -1,121 +1,105 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
require '
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
# -*- ruby -*-
|
|
2
|
+
gem 'hoe', '>=2.0.0'
|
|
3
|
+
require 'hoe'
|
|
4
|
+
|
|
5
|
+
$:.unshift 'lib'
|
|
6
|
+
|
|
7
7
|
require 'spec/version'
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
require "pre_commit"
|
|
8
|
+
require 'spec/rake/spectask'
|
|
9
|
+
require 'spec/ruby'
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
Hoe.spec 'rspec' do
|
|
12
|
+
self.version = Spec::VERSION::STRING
|
|
13
|
+
self.summary = Spec::VERSION::SUMMARY
|
|
14
|
+
self.description = "Behaviour Driven Development for Ruby."
|
|
15
|
+
self.rubyforge_name = 'rspec'
|
|
16
|
+
self.developer('RSpec Development Team', 'rspec-devel@rubyforge.org')
|
|
17
|
+
self.extra_dev_deps << ["cucumber",">=0.3"] << ["fakefs",">=0.2.1"] << ["syntax",">=1.0"] << ["diff-lcs",">=1.1.2"]
|
|
18
|
+
self.extra_dev_deps << ["heckle",">=1.4.3"] unless Spec::Ruby.version >= "1.9"
|
|
19
|
+
self.remote_rdoc_dir = "rspec/#{Spec::VERSION::STRING}"
|
|
20
|
+
self.rspec_options = ['--options', 'spec/spec.opts']
|
|
21
|
+
self.history_file = 'History.rdoc'
|
|
22
|
+
self.readme_file = 'README.rdoc'
|
|
23
|
+
self.post_install_message = <<-POST_INSTALL_MESSAGE
|
|
24
|
+
#{'*'*50}
|
|
18
25
|
|
|
19
|
-
|
|
20
|
-
PKG_VERSION = Spec::VERSION::STRING
|
|
21
|
-
PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
|
|
22
|
-
PKG_FILES = FileList[
|
|
23
|
-
'[A-Z]*',
|
|
24
|
-
'lib/**/*.rb',
|
|
25
|
-
'spec/**/*.rb',
|
|
26
|
-
'examples/**/*',
|
|
27
|
-
'plugins/**/*'
|
|
28
|
-
]
|
|
29
|
-
FileUtils.touch(File.dirname(__FILE__) + '/previous_failures.txt')
|
|
26
|
+
Thank you for installing rspec-#{Spec::VERSION::STRING}
|
|
30
27
|
|
|
31
|
-
|
|
28
|
+
Please be sure to read History.rdoc and Upgrade.rdoc
|
|
29
|
+
for useful information about this release.
|
|
32
30
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
t.spec_files = FileList[
|
|
36
|
-
'spec/**/*_spec.rb',
|
|
37
|
-
'../RSpec.tmbundle/Support/spec/*_spec.rb'
|
|
38
|
-
# TODO: get these in too - need to fix coverage
|
|
39
|
-
# '../spec_ui/spec/**/*_spec.rb'
|
|
40
|
-
]
|
|
41
|
-
t.spec_opts = ['--options', 'spec.opts']
|
|
42
|
-
t.rcov = true
|
|
43
|
-
t.rcov_dir = '../doc/output/coverage'
|
|
44
|
-
t.rcov_opts = ['--exclude', 'spec\/spec,bin\/spec,examples']
|
|
31
|
+
#{'*'*50}
|
|
32
|
+
POST_INSTALL_MESSAGE
|
|
45
33
|
end
|
|
46
34
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
t.spec_files = FileList['translated_specs/**/*_spec.rb'].exclude( # These translate, but have other quirks
|
|
50
|
-
'translated_specs/spec/translator_spec.rb',
|
|
51
|
-
'translated_specs/spec/runner/formatter/html_formatter_spec.rb',
|
|
52
|
-
'translated_specs/spec/runner/option_parser_spec.rb'
|
|
53
|
-
)
|
|
54
|
-
t.spec_opts = ['--options', 'spec.opts']
|
|
55
|
-
t.rcov = true
|
|
56
|
-
t.rcov_dir = '../doc/output/coverage'
|
|
57
|
-
t.rcov_opts = ['--exclude', 'spec\/spec,bin\/spec,examples']
|
|
35
|
+
['audit','test','test_deps','default','post_blog'].each do |task|
|
|
36
|
+
Rake.application.instance_variable_get('@tasks').delete(task)
|
|
58
37
|
end
|
|
59
38
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
t.spec_files = FileList['spec/**/*_spec.rb', 'vendor/RSpec.tmbundle/Support/spec/*_spec.rb']
|
|
63
|
-
t.spec_opts = ['--format html:../doc/output/report.html','--backtrace']
|
|
39
|
+
task :post_blog do
|
|
40
|
+
# no-op
|
|
64
41
|
end
|
|
65
42
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
43
|
+
# Some of the tasks are in separate files since they are also part of the website documentation
|
|
44
|
+
load 'resources/rake/examples.rake'
|
|
45
|
+
load 'resources/rake/examples_with_rcov.rake'
|
|
46
|
+
load 'resources/rake/failing_examples_with_html.rake'
|
|
47
|
+
load 'resources/rake/verify_rcov.rake'
|
|
70
48
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
core.webgen
|
|
49
|
+
task :cleanup_rcov_files do
|
|
50
|
+
rm_rf 'coverage.data'
|
|
74
51
|
end
|
|
75
52
|
|
|
76
|
-
desc 'Generate RDoc'
|
|
77
|
-
rd = Rake::RDocTask.new do |rdoc|
|
|
78
|
-
rdoc.rdoc_dir = '../doc/output/rdoc'
|
|
79
|
-
rdoc.options << '--title' << 'RSpec' << '--line-numbers' << '--inline-source' << '--main' << 'README'
|
|
80
|
-
rdoc.rdoc_files.include('README', 'CHANGES', 'MIT-LICENSE', 'EXAMPLES.rd', 'UPGRADE', 'lib/**/*.rb')
|
|
81
|
-
end
|
|
82
53
|
|
|
83
|
-
|
|
84
|
-
task :
|
|
85
|
-
|
|
54
|
+
if RUBY_VERSION =~ /^1.8/
|
|
55
|
+
task :default => [:cleanup_rcov_files, :features, :verify_rcov]
|
|
56
|
+
else
|
|
57
|
+
task :default => [:spec, :features]
|
|
86
58
|
end
|
|
87
59
|
|
|
88
|
-
spec
|
|
89
|
-
s.name = PKG_NAME
|
|
90
|
-
s.version = PKG_VERSION
|
|
91
|
-
s.summary = Spec::VERSION::DESCRIPTION
|
|
92
|
-
s.description = <<-EOF
|
|
93
|
-
RSpec is a behaviour driven development (BDD) framework for Ruby. RSpec was
|
|
94
|
-
created in response to Dave Astels' article _A New Look at Test Driven Development_
|
|
95
|
-
which can be read at: http://daveastels.com/index.php?p=5 RSpec is intended to
|
|
96
|
-
provide the features discussed in Dave's article.
|
|
97
|
-
EOF
|
|
98
|
-
|
|
99
|
-
s.files = PKG_FILES.to_a
|
|
100
|
-
s.require_path = 'lib'
|
|
60
|
+
namespace :spec do
|
|
101
61
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
62
|
+
desc "Run all specs with rcov"
|
|
63
|
+
Spec::Rake::SpecTask.new(:rcov) do |t|
|
|
64
|
+
t.spec_files = FileList['spec/**/*_spec.rb']
|
|
65
|
+
t.spec_opts = ['--options', 'spec/spec.opts']
|
|
66
|
+
t.rcov = true
|
|
67
|
+
t.rcov_dir = 'coverage'
|
|
68
|
+
t.rcov_opts = ['--exclude', "features,kernel,load-diff-lcs\.rb,instance_exec\.rb,lib/spec.rb,lib/spec/runner.rb,^spec/*,bin/spec,examples,/gems,/Library/Ruby,\.autotest,#{ENV['GEM_HOME']}"]
|
|
69
|
+
t.rcov_opts << '--sort coverage --text-summary --aggregate coverage.data'
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
desc "Run files listed in spec/spec_files.txt"
|
|
73
|
+
Spec::Rake::SpecTask.new(:focus) do |t|
|
|
74
|
+
if File.exists?('spec/spec_files.txt')
|
|
75
|
+
t.spec_files = File.readlines('spec/spec_files.txt').collect{|f| f.chomp}
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
105
79
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
80
|
+
begin
|
|
81
|
+
require 'cucumber/rake/task'
|
|
82
|
+
desc "Run Cucumber features"
|
|
83
|
+
if RUBY_VERSION =~ /^1.8/
|
|
84
|
+
Cucumber::Rake::Task.new :features do |t|
|
|
85
|
+
t.rcov = true
|
|
86
|
+
t.rcov_opts = ['--exclude', "features,kernel,load-diff-lcs\.rb,instance_exec\.rb,lib/spec.rb,lib/spec/runner.rb,^spec/*,bin/spec,examples,/gems,/Library/Ruby,\.autotest,#{ENV['GEM_HOME']}"]
|
|
87
|
+
t.rcov_opts << '--no-html --aggregate coverage.data'
|
|
88
|
+
t.cucumber_opts = %w{--format progress}
|
|
89
|
+
end
|
|
90
|
+
else
|
|
91
|
+
task :features do
|
|
92
|
+
sh 'cucumber --profile no_heckle'
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
rescue LoadError
|
|
96
|
+
puts "You need cucumber installed to run cucumber tasks"
|
|
114
97
|
end
|
|
115
98
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
99
|
+
desc "Run failing examples (see failure output)"
|
|
100
|
+
Spec::Rake::SpecTask.new('failing_examples') do |t|
|
|
101
|
+
t.spec_files = FileList['failing_examples/**/*_spec.rb']
|
|
102
|
+
t.spec_opts = ['--options', 'spec/spec.opts']
|
|
119
103
|
end
|
|
120
104
|
|
|
121
105
|
def egrep(pattern)
|
|
@@ -137,148 +121,29 @@ task :todo do
|
|
|
137
121
|
egrep /(FIXME|TODO|TBD)/
|
|
138
122
|
end
|
|
139
123
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
task :release => [:clobber, :verify_committed, :verify_user, :spec, :publish_packages, :tag, :publish_website, :publish_news]
|
|
124
|
+
desc "verify_committed, verify_rcov, post_news, release"
|
|
125
|
+
task :complete_release => [:verify_committed, :verify_rcov, :post_news, :release]
|
|
145
126
|
|
|
146
127
|
desc "Verifies that there is no uncommitted code"
|
|
147
128
|
task :verify_committed do
|
|
148
|
-
IO.popen('
|
|
129
|
+
IO.popen('git status') do |io|
|
|
149
130
|
io.each_line do |line|
|
|
150
|
-
raise "\n!!! Do a
|
|
131
|
+
raise "\n!!! Do a git commit first !!!\n\n" if line =~ /^#\s*modified:/
|
|
151
132
|
end
|
|
152
133
|
end
|
|
153
134
|
end
|
|
154
135
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
tag_cmd = "svn cp #{from} #{to} -m \"Tag release #{Spec::VERSION::FULL_VERSION}\""
|
|
160
|
-
raise "Can't tag to the same place: #{tag_cmd}" if to == from
|
|
161
|
-
puts "Creating tag in SVN"
|
|
162
|
-
`#{tag_cmd}`
|
|
163
|
-
raise "Tagging failed" unless $? == 0
|
|
164
|
-
end
|
|
165
|
-
|
|
166
|
-
desc "Run this task before you commit. You should see 'OK TO COMMIT'"
|
|
167
|
-
task(:pre_commit) {core.pre_commit}
|
|
168
|
-
|
|
169
|
-
desc "Build the website, but do not publish it"
|
|
170
|
-
task(:website) {core.website}
|
|
171
|
-
|
|
172
|
-
task :rdoc_rails do
|
|
173
|
-
core.rdoc_rails
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
task :verify_user do
|
|
177
|
-
raise "RUBYFORGE_USER environment variable not set!" unless ENV['RUBYFORGE_USER']
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
desc "Upload Website to RubyForge"
|
|
181
|
-
task :publish_website => [:verify_user, :website] do
|
|
182
|
-
unless Spec::VERSION::RELEASE_CANDIDATE
|
|
183
|
-
publisher = Rake::SshDirPublisher.new(
|
|
184
|
-
"rspec-website@rubyforge.org",
|
|
185
|
-
"/var/www/gforge-projects/#{PKG_NAME}",
|
|
186
|
-
"../doc/output"
|
|
187
|
-
)
|
|
188
|
-
publisher.upload
|
|
189
|
-
else
|
|
190
|
-
puts "** Not publishing packages to RubyForge - this is a prerelease"
|
|
191
|
-
end
|
|
192
|
-
end
|
|
193
|
-
|
|
194
|
-
desc "Upload Website archive to RubyForge"
|
|
195
|
-
task :archive_website => [:verify_user, :website] do
|
|
196
|
-
publisher = Rake::SshDirPublisher.new(
|
|
197
|
-
"rspec-website@rubyforge.org",
|
|
198
|
-
"/var/www/gforge-projects/#{PKG_NAME}/#{Spec::VERSION::TAG}",
|
|
199
|
-
"../doc/output"
|
|
200
|
-
)
|
|
201
|
-
publisher.upload
|
|
202
|
-
end
|
|
203
|
-
|
|
204
|
-
desc "Package the RSpec.tmbundle"
|
|
205
|
-
task :package_tmbundle do
|
|
206
|
-
mkdir 'pkg' rescue nil
|
|
207
|
-
rm_rf 'pkg/RSpec.tmbundle' rescue nil
|
|
208
|
-
`svn export ../RSpec.tmbundle pkg/RSpec.tmbundle`
|
|
209
|
-
Dir.chdir 'pkg' do
|
|
210
|
-
`tar cvzf RSpec-#{PKG_VERSION}.tmbundle.tgz RSpec.tmbundle`
|
|
211
|
-
end
|
|
212
|
-
end
|
|
213
|
-
task :pkg => :package_tmbundle
|
|
214
|
-
|
|
215
|
-
desc "Package the Spec::Ui gem"
|
|
216
|
-
task :package_spec_ui do
|
|
217
|
-
Dir.chdir '../spec_ui' do
|
|
218
|
-
`rake clobber gem`
|
|
219
|
-
end
|
|
220
|
-
end
|
|
221
|
-
task :pkg => :package_spec_ui
|
|
222
|
-
|
|
223
|
-
desc "Publish gem+tgz+zip on RubyForge. You must make sure lib/version.rb is aligned with the CHANGELOG file"
|
|
224
|
-
task :publish_packages => [:verify_user, :package] do
|
|
225
|
-
require File.dirname(__FILE__) + '/../spec_ui/lib/spec/ui/version'
|
|
226
|
-
release_files = FileList[
|
|
227
|
-
"pkg/#{PKG_FILE_NAME}.gem",
|
|
228
|
-
"pkg/#{PKG_FILE_NAME}.tgz",
|
|
229
|
-
"pkg/#{PKG_FILE_NAME}.zip",
|
|
230
|
-
"pkg/RSpec-#{PKG_VERSION}.tmbundle.tgz",
|
|
231
|
-
"../spec_ui/pkg/spec_ui-#{Spec::Ui::VERSION::STRING}.gem"
|
|
232
|
-
]
|
|
233
|
-
unless Spec::VERSION::RELEASE_CANDIDATE
|
|
234
|
-
require 'meta_project'
|
|
235
|
-
require 'rake/contrib/xforge'
|
|
236
|
-
|
|
237
|
-
Rake::XForge::Release.new(MetaProject::Project::XForge::RubyForge.new(PKG_NAME)) do |xf|
|
|
238
|
-
# Never hardcode user name and password in the Rakefile!
|
|
239
|
-
xf.user_name = ENV['RUBYFORGE_USER']
|
|
240
|
-
xf.files = release_files.to_a
|
|
241
|
-
xf.release_name = "RSpec #{PKG_VERSION}"
|
|
242
|
-
end
|
|
243
|
-
else
|
|
244
|
-
puts "SINCE THIS IS A PRERELEASE, FILES ARE UPLOADED WITH SSH, NOT TO THE RUBYFORGE FILE SECTION"
|
|
245
|
-
puts "YOU MUST TYPE THE PASSWORD #{release_files.length} TIMES..."
|
|
246
|
-
|
|
247
|
-
host = "rspec-website@rubyforge.org"
|
|
248
|
-
remote_dir = "/var/www/gforge-projects/#{PKG_NAME}"
|
|
249
|
-
|
|
250
|
-
publisher = Rake::SshFilePublisher.new(
|
|
251
|
-
host,
|
|
252
|
-
remote_dir,
|
|
253
|
-
File.dirname(__FILE__),
|
|
254
|
-
*release_files
|
|
255
|
-
)
|
|
256
|
-
publisher.upload
|
|
257
|
-
|
|
258
|
-
puts "UPLADED THE FOLLOWING FILES:"
|
|
259
|
-
release_files.each do |file|
|
|
260
|
-
name = file.match(/pkg\/(.*)/)[1]
|
|
261
|
-
puts "* http://rspec.rubyforge.org/#{name}"
|
|
262
|
-
end
|
|
263
|
-
|
|
264
|
-
puts "They are not linked to anywhere, so don't forget to tell people!"
|
|
136
|
+
namespace :update do
|
|
137
|
+
desc "update the manifest"
|
|
138
|
+
task :manifest do
|
|
139
|
+
system %q[touch Manifest.txt; rake check_manifest | grep -v "(in " | patch]
|
|
265
140
|
end
|
|
266
141
|
end
|
|
267
142
|
|
|
268
|
-
|
|
269
|
-
task :publish_news => [:verify_user] do
|
|
270
|
-
unless Spec::VERSION::RELEASE_CANDIDATE
|
|
271
|
-
require 'meta_project'
|
|
272
|
-
require 'rake/contrib/xforge'
|
|
273
|
-
Rake::XForge::NewsPublisher.new(MetaProject::Project::XForge::RubyForge.new(PKG_NAME)) do |news|
|
|
274
|
-
# Never hardcode user name and password in the Rakefile!
|
|
275
|
-
news.user_name = ENV['RUBYFORGE_USER']
|
|
276
|
-
end
|
|
277
|
-
else
|
|
278
|
-
puts "** Not publishing news to RubyForge - this is a prerelease"
|
|
279
|
-
end
|
|
280
|
-
end
|
|
143
|
+
task :clobber => :clobber_tmp
|
|
281
144
|
|
|
282
|
-
|
|
283
|
-
|
|
145
|
+
task :clobber_tmp do
|
|
146
|
+
cmd = %q[rm -r tmp]
|
|
147
|
+
puts cmd
|
|
148
|
+
system cmd if test ?d, 'tmp'
|
|
284
149
|
end
|
data/Ruby1.9.rdoc
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
= RSpec and Ruby 1.9
|
|
2
|
+
|
|
3
|
+
RSpec runs on Ruby 1.9.1 with the following caveats.
|
|
4
|
+
|
|
5
|
+
== Test::Unit
|
|
6
|
+
|
|
7
|
+
RSpec/Test::Unit interop will run with the test-unit-1.2.3 gem, but you must install it.
|
|
8
|
+
|
|
9
|
+
== Class Variables
|
|
10
|
+
|
|
11
|
+
Due to changes in scoping rules, class variables within example groups are not
|
|
12
|
+
supported in Ruby 1.9.
|
|
13
|
+
|
|
14
|
+
describe "a class variable" do
|
|
15
|
+
@@class_variable = "a class variable"
|
|
16
|
+
|
|
17
|
+
it "can access class variables in examples in Ruby 1.8" do
|
|
18
|
+
with_ruby 1.8 do
|
|
19
|
+
@@class_variable.should == "a class variable"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "can NOT access class variables in examples in Ruby 1.9" do
|
|
24
|
+
with_ruby 1.9 do
|
|
25
|
+
lambda do
|
|
26
|
+
@@class_variable.should == "a class variable"
|
|
27
|
+
end.should raise_error(NameError)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
data/TODO.txt
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
== Refactoring
|
|
2
|
+
|
|
3
|
+
** global predictate matchers should be stored in run_options
|
|
4
|
+
* eliminate dependency on global options and configuration
|
|
5
|
+
** the only place they should exist is in the Runner, which should manage them
|
|
6
|
+
|
|
7
|
+
== Future
|
|
8
|
+
|
|
9
|
+
* do SOMETHING with the website
|
|
10
|
+
* separate the underlying framework from the DSL
|
|
11
|
+
* be able to do everything with classes and methods
|
|
12
|
+
* tweak raise_error rdoc to show only one arg
|
|
13
|
+
|
|
14
|
+
== rspec-2.0
|
|
15
|
+
|
|
16
|
+
* rename top level namespace to Rspec and commands to 'rspec' and 'autorspec'
|
|
17
|
+
* continue to support Spec 'spec' and 'autospec' as aliases for a reasonable time
|
data/Upgrade.rdoc
ADDED
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
= Upgrade to 1.3.0
|
|
2
|
+
|
|
3
|
+
== What's changed
|
|
4
|
+
|
|
5
|
+
=== +be_true+ and +be_false+
|
|
6
|
+
|
|
7
|
+
These methods now align with Ruby's conditional semantics:
|
|
8
|
+
|
|
9
|
+
* +be_false+ passes for +false+ and +nil+
|
|
10
|
+
* +be_true+ passes for everything else
|
|
11
|
+
|
|
12
|
+
This is a change from the previous behaviour (which wasn't working correctly
|
|
13
|
+
anyway), which was supposed to treat +be_true+ as <tt>equal(true)</tt>, and +be_false+ as
|
|
14
|
+
<tt>equal(false)</tt>.
|
|
15
|
+
|
|
16
|
+
If the actual values +true+ and +false+ are meaningful to your examples, you'll
|
|
17
|
+
want to change the to use <tt>equal(true)</tt> and <tt>equal(false)</tt> (or
|
|
18
|
+
<tt>==(true)</tt> and <tt>==(false)</tt>).
|
|
19
|
+
|
|
20
|
+
=== +raise_exception+
|
|
21
|
+
|
|
22
|
+
We changed the +raise_error+ matcher to +raise_exception+, and aliased it with
|
|
23
|
+
+raise_error+. This maintains backward compatibility, and also gives you the
|
|
24
|
+
option of being more precise in specs about what is expected.
|
|
25
|
+
|
|
26
|
+
=== Matcher DSL
|
|
27
|
+
|
|
28
|
+
==== +match+ rescues from +ExpectationNotMetErrror+ by default
|
|
29
|
+
|
|
30
|
+
This allows you to wrap other expectations in the +match+ method. Consider
|
|
31
|
+
this matcher:
|
|
32
|
+
|
|
33
|
+
Spec::Matchers.define :teach do |subject|
|
|
34
|
+
match do |teacher|
|
|
35
|
+
teacher.subjects.should include(subject)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
The block passed to +match+ is called internally by Rspec, and is expected to
|
|
40
|
+
return a boolean value. In this case, if <tt>should include(subject)</tt>
|
|
41
|
+
fails, it raises an +ExpectationNotMetError+.
|
|
42
|
+
|
|
43
|
+
Beginning with rspec-1.3.0, when the match block raises an
|
|
44
|
+
+ExpectationNotMetError+, it is captured and the block returns +false+.
|
|
45
|
+
Otherwise it returns +true+, so it works like any other matcher.
|
|
46
|
+
|
|
47
|
+
==== match_unless_raises
|
|
48
|
+
|
|
49
|
+
The new +match_unless_raises+ method allows you to wrap <tt>Test::Unit</tt>
|
|
50
|
+
assertions by capturing +AssertionFailedError+ and returning false, just as the
|
|
51
|
+
+match+ method now does with +ExpectationNotMetError+.
|
|
52
|
+
|
|
53
|
+
Spec::Matchers.define :teach do |subject|
|
|
54
|
+
match_unless_raises Test::Unit::AssertionFailedError do |teacher|
|
|
55
|
+
assert teacher.subjects.include?(subject)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
= Upgrade to rspec-1.2.9
|
|
60
|
+
|
|
61
|
+
== What's new
|
|
62
|
+
|
|
63
|
+
=== spec/spec.opts
|
|
64
|
+
|
|
65
|
+
If you have a spec/spec.opts file, the spec command will now use that
|
|
66
|
+
automatically as long as you don't include any options on the command line.
|
|
67
|
+
|
|
68
|
+
=== let()
|
|
69
|
+
|
|
70
|
+
Writing specs tends to follow a regular pattern of using local variables,
|
|
71
|
+
discovering duplication, and then having to convert to local variables to
|
|
72
|
+
instance variables by adding an "@" symbol. The let() method assigns the result
|
|
73
|
+
of a lazy eval'd block as the return value of an instance method using the same
|
|
74
|
+
name. This way you can go from this:
|
|
75
|
+
|
|
76
|
+
describe Subscription do
|
|
77
|
+
it "does something" do
|
|
78
|
+
subscription = Subscription.create :limit => 1
|
|
79
|
+
subscription...
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it "does something else" do
|
|
83
|
+
subscription = Subscription.create :limit => 1
|
|
84
|
+
subscription...
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
to this:
|
|
89
|
+
|
|
90
|
+
describe Subscription do
|
|
91
|
+
let(:subscription) { Subscription.create :limit => 1 }
|
|
92
|
+
|
|
93
|
+
it "does something" do
|
|
94
|
+
subscription...
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it "does something else" do
|
|
98
|
+
subscription...
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
=== its()
|
|
103
|
+
|
|
104
|
+
If you're in the habit of writing one-liners using implicit subject, this new
|
|
105
|
+
its() feature is for you. Here's the basic idea:
|
|
106
|
+
|
|
107
|
+
describe Array do
|
|
108
|
+
its(:length) { should == 0 }
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
= Upgrade to rspec-1.2.3-1.2.7
|
|
112
|
+
|
|
113
|
+
== What's Changed
|
|
114
|
+
|
|
115
|
+
=== Matcher DSL
|
|
116
|
+
|
|
117
|
+
Use Spec::Matchers.define instead of Spec::Matchers.create (which is now
|
|
118
|
+
deprecated).
|
|
119
|
+
|
|
120
|
+
=== Explicit Predicate Matchers are deprecated
|
|
121
|
+
|
|
122
|
+
With the addition of the new Matcher DSL the old, confusing, and
|
|
123
|
+
almost-nobody-uses-it explicit predicate matcher functionality's days are now
|
|
124
|
+
numbered.
|
|
125
|
+
|
|
126
|
+
If you're not familiar with this feature, don't worry about it. If you have anything
|
|
127
|
+
that looks like this:
|
|
128
|
+
|
|
129
|
+
predicate_matchers[:swim] = :can_swim?
|
|
130
|
+
|
|
131
|
+
Or this
|
|
132
|
+
|
|
133
|
+
config.predicate_matchers[:swim] = :can_swim?
|
|
134
|
+
|
|
135
|
+
Change it to this:
|
|
136
|
+
|
|
137
|
+
Spec::Matchers.define :swim do
|
|
138
|
+
match do |potential_swimmer|
|
|
139
|
+
potential_swimmer.can_swim?
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
== Custom Formatters
|
|
144
|
+
|
|
145
|
+
If you have an custom formatter, the <tt>add_example_group</tt> method has
|
|
146
|
+
been changed to <tt>example_group_started</tt>, and kept as an alias so your
|
|
147
|
+
formatters will still work. Though not yet, <tt>add_example_group</tt> will be
|
|
148
|
+
deprecated in a future minor release, and removed in a future major release,
|
|
149
|
+
so we recommend you make this change now.
|
|
150
|
+
|
|
151
|
+
= Upgrade to rspec-1.2.2
|
|
152
|
+
|
|
153
|
+
== What's Changed
|
|
154
|
+
|
|
155
|
+
=== <tt>require 'rubygems' unless ENV['NO_RUBYGEMS']</tt>
|
|
156
|
+
|
|
157
|
+
After minor public outcry and confusion, we restored necessary references to
|
|
158
|
+
rubygems in rspec. If you use a different mechanism for managing gems, just
|
|
159
|
+
set a <tt>NO_RUBYGEMS</tt> environment variable (to any non-nil value).
|
|
160
|
+
|
|
161
|
+
=== Proxies and locations
|
|
162
|
+
|
|
163
|
+
This is probably only interesting to you if you use custom formatters.
|
|
164
|
+
|
|
165
|
+
Formatters now receive Spec::Example::ExampleGroupProxy and
|
|
166
|
+
Spec::Example::ExampleGroup objects with cohesive APIs for reporting. See the
|
|
167
|
+
RDoc for those classes and Spec::Runner::Formatter::BaseFormatter for more
|
|
168
|
+
information.
|
|
169
|
+
|
|
170
|
+
== What's new
|
|
171
|
+
|
|
172
|
+
=== The new matcher DSL works with test/unit (without the rest of rspec)
|
|
173
|
+
|
|
174
|
+
We'll be separating this out to its own gem for rspec 2.0, but for now, just install
|
|
175
|
+
rspec >= 1.2.1 and add the following to your <tt>test_helper</tt> file:
|
|
176
|
+
|
|
177
|
+
require 'spec/expectations'
|
|
178
|
+
class Test::Unit::TestCase
|
|
179
|
+
include Spec::Matchers
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
This will add <tt>should()</tt> and <tt>should_not()</tt> to your objects, make all of
|
|
183
|
+
rspec's built-in matchers available to your tests, INCLUDING rspec's DSL for
|
|
184
|
+
creating matchers (see below, under Upgrade to rspec-1.2.0)
|
|
185
|
+
|
|
186
|
+
=== debugger
|
|
187
|
+
|
|
188
|
+
If you have ruby-debug installed, you can set a breakpoint by adding <tt>debugger()</tt>
|
|
189
|
+
in your code:
|
|
190
|
+
|
|
191
|
+
# some code .....
|
|
192
|
+
debugger
|
|
193
|
+
# some more code ....
|
|
194
|
+
|
|
195
|
+
... and using the <tt>--debugger</tt> or <tt>-u</tt> command line option.
|
|
196
|
+
|
|
197
|
+
spec path/to/file.rb --debugger
|
|
198
|
+
|
|
199
|
+
= Upgrade to rspec-1.2.0
|
|
200
|
+
|
|
201
|
+
== What's Changed
|
|
202
|
+
|
|
203
|
+
=== WARNINGS
|
|
204
|
+
|
|
205
|
+
* If you use the ruby command to run specs instead of the spec command, you'll
|
|
206
|
+
need to require 'spec/autorun' or they won't run. This won't affect you if
|
|
207
|
+
you use the spec command or the Spec::Rake::SpecTask that ships with RSpec.
|
|
208
|
+
|
|
209
|
+
* require 'spec/test/unit' to invoke test/unit interop if you're using
|
|
210
|
+
RSpec's core (this is handled implicitly with spec-rails)
|
|
211
|
+
|
|
212
|
+
* setup and teardown are gone - use before and after instead
|
|
213
|
+
|
|
214
|
+
* you can still use setup and teardown if you're using
|
|
215
|
+
Test::Unit::TestCase as the base ExampleGroup class (which is implicit
|
|
216
|
+
in rspec-rails)
|
|
217
|
+
|
|
218
|
+
* The matcher protocol has been improved. The old protocol is still supported,
|
|
219
|
+
but we added support for two new methods that speak a bit more clearly:
|
|
220
|
+
|
|
221
|
+
failure_message => failure_message_for_should
|
|
222
|
+
negative_failure_message => failure_message_for_should_not
|
|
223
|
+
|
|
224
|
+
* All references to rubygems have been removed from within rspec's code.
|
|
225
|
+
|
|
226
|
+
* See http://gist.github.com/54177 for rationale and suggestions on
|
|
227
|
+
alternative approaches to loading rubygems
|
|
228
|
+
|
|
229
|
+
== What's New
|
|
230
|
+
|
|
231
|
+
=== Ruby 1.9
|
|
232
|
+
|
|
233
|
+
RSpec now works with Ruby 1.9.1. See http://wiki.github.com/dchelimsky/rspec/ruby-191
|
|
234
|
+
for useful information.
|
|
235
|
+
|
|
236
|
+
=== Improved heckle integration
|
|
237
|
+
|
|
238
|
+
RSpec works with heckle again! Gotta use heckle >= 1.4.2 for this to work
|
|
239
|
+
though, and it only works with ruby-1.8.6 and 1.8.7 (heckle doesn't support
|
|
240
|
+
1.9.1 yet).
|
|
241
|
+
|
|
242
|
+
[sudo] gem install heckle --version ">=1.4.2"
|
|
243
|
+
spec spec/game/mastermind.rb --heckle Game::Mastermind
|
|
244
|
+
|
|
245
|
+
=== New Matcher DSL
|
|
246
|
+
|
|
247
|
+
We've added a new DSL for generating custom matchers very simply and cleanly.
|
|
248
|
+
We'll still support the simple_matcher method, so never fear if you're using
|
|
249
|
+
that, but we recommend that you start developing your new matchers with this
|
|
250
|
+
new syntax.
|
|
251
|
+
|
|
252
|
+
Spec::Matchers.create :be_a_multiple_of do |smaller|
|
|
253
|
+
match do |bigger|
|
|
254
|
+
bigger % smaller == 0
|
|
255
|
+
end
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
9.should be_a_multiple_of(3)
|
|
259
|
+
|
|
260
|
+
See <tt>features/matchers/define_matcher.feature</tt> for more examples
|
data/bin/autospec
ADDED