rspec-instructure 1.3.3
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/.autotest +5 -0
- data/.document +7 -0
- data/.gitignore +15 -0
- data/Gemfile +20 -0
- data/History.rdoc +1565 -0
- data/License.txt +22 -0
- data/README.rdoc +44 -0
- data/Rakefile +110 -0
- 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 -0
- data/cucumber.yml +5 -0
- data/example_spec.rb +4 -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/passing/custom_formatter.rb +11 -0
- data/examples/passing/custom_matchers.rb +54 -0
- data/examples/passing/dynamic_spec.rb +7 -0
- data/examples/passing/file_accessor.rb +18 -0
- data/examples/passing/file_accessor_spec.rb +37 -0
- data/examples/passing/filtered_formatter.rb +17 -0
- data/examples/passing/filtered_formatter_example.rb +31 -0
- data/examples/passing/greeter_spec.rb +30 -0
- data/examples/passing/helper_method_example.rb +12 -0
- data/examples/passing/implicit_docstrings_example.rb +16 -0
- data/examples/passing/io_processor.rb +8 -0
- data/examples/passing/io_processor_spec.rb +20 -0
- data/examples/passing/mocking_example.rb +25 -0
- data/examples/passing/multi_threaded_example_group_runner.rb +26 -0
- 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/passing/partial_mock_example.rb +27 -0
- data/examples/passing/pending_example.rb +18 -0
- data/examples/passing/predicate_example.rb +25 -0
- data/examples/passing/shared_example_group_example.rb +43 -0
- data/examples/passing/shared_stack_examples.rb +36 -0
- data/examples/passing/simple_matcher_example.rb +29 -0
- data/examples/passing/stack.rb +36 -0
- data/examples/passing/stack_spec.rb +63 -0
- data/examples/passing/stack_spec_with_nested_example_groups.rb +66 -0
- data/examples/passing/stubbing_example.rb +67 -0
- data/examples/passing/yielding_example.rb +31 -0
- data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +85 -0
- data/features-pending/cli/conditional_exclusion.feature +39 -0
- data/features-pending/heckle/heckle.feature +56 -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 +37 -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/init.rb +9 -0
- data/lib/autotest/discover.rb +3 -0
- data/lib/autotest/rspec.rb +54 -0
- data/lib/spec.rb +8 -0
- data/lib/spec/adapters/mock_frameworks/flexmock.rb +24 -0
- data/lib/spec/adapters/mock_frameworks/mocha.rb +25 -0
- 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.rb +1 -0
- data/lib/spec/dsl/main.rb +93 -0
- data/lib/spec/example.rb +164 -0
- 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/expectations.rb +35 -0
- data/lib/spec/expectations/errors.rb +12 -0
- data/lib/spec/expectations/extensions.rb +1 -0
- data/lib/spec/expectations/extensions/kernel.rb +52 -0
- data/lib/spec/expectations/fail_with.rb +45 -0
- data/lib/spec/expectations/handler.rb +50 -0
- data/lib/spec/extensions/instance_exec.rb +31 -0
- data/lib/spec/interop/test.rb +44 -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/matchers.rb +214 -0
- data/lib/spec/matchers/be.rb +249 -0
- data/lib/spec/matchers/be_close.rb +32 -0
- 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 +151 -0
- data/lib/spec/matchers/compatibility.rb +14 -0
- data/lib/spec/matchers/dsl.rb +20 -0
- data/lib/spec/matchers/eql.rb +42 -0
- data/lib/spec/matchers/equal.rb +53 -0
- 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 +35 -0
- data/lib/spec/matchers/have.rb +152 -0
- data/lib/spec/matchers/include.rb +44 -0
- data/lib/spec/matchers/match.rb +21 -0
- 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 +83 -0
- data/lib/spec/matchers/pretty.rb +37 -0
- data/lib/spec/matchers/raise_exception.rb +131 -0
- data/lib/spec/matchers/respond_to.rb +71 -0
- data/lib/spec/matchers/satisfy.rb +47 -0
- data/lib/spec/matchers/simple_matcher.rb +134 -0
- data/lib/spec/matchers/throw_symbol.rb +100 -0
- data/lib/spec/matchers/wrap_expectation.rb +55 -0
- data/lib/spec/mocks.rb +200 -0
- data/lib/spec/mocks/argument_expectation.rb +51 -0
- data/lib/spec/mocks/argument_matchers.rb +237 -0
- data/lib/spec/mocks/error_generator.rb +92 -0
- data/lib/spec/mocks/errors.rb +10 -0
- data/lib/spec/mocks/example_methods.rb +69 -0
- data/lib/spec/mocks/extensions.rb +1 -0
- data/lib/spec/mocks/extensions/object.rb +3 -0
- data/lib/spec/mocks/framework.rb +15 -0
- data/lib/spec/mocks/message_expectation.rb +344 -0
- data/lib/spec/mocks/methods.rb +94 -0
- data/lib/spec/mocks/mock.rb +71 -0
- data/lib/spec/mocks/order_group.rb +29 -0
- data/lib/spec/mocks/proxy.rb +254 -0
- data/lib/spec/mocks/space.rb +28 -0
- data/lib/spec/rake/spectask.rb +230 -0
- data/lib/spec/rake/verify_rcov.rb +52 -0
- data/lib/spec/ruby.rb +9 -0
- data/lib/spec/runner.rb +66 -0
- data/lib/spec/runner/backtrace_tweaker.rb +78 -0
- data/lib/spec/runner/class_and_arguments_parser.rb +14 -0
- data/lib/spec/runner/command_line.rb +15 -0
- 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 +32 -0
- data/lib/spec/runner/example_group_runner.rb +62 -0
- data/lib/spec/runner/extensions/kernel.rb +9 -0
- data/lib/spec/runner/formatter/base_formatter.rb +139 -0
- data/lib/spec/runner/formatter/base_text_formatter.rb +142 -0
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +25 -0
- data/lib/spec/runner/formatter/failing_examples_formatter.rb +20 -0
- data/lib/spec/runner/formatter/html_formatter.rb +338 -0
- 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 +33 -0
- data/lib/spec/runner/formatter/silent_formatter.rb +10 -0
- data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
- data/lib/spec/runner/formatter/specdoc_formatter.rb +33 -0
- data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
- data/lib/spec/runner/heckle_runner.rb +77 -0
- data/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
- data/lib/spec/runner/line_number_query.rb +78 -0
- data/lib/spec/runner/option_parser.rb +225 -0
- data/lib/spec/runner/options.rb +406 -0
- data/lib/spec/runner/reporter.rb +171 -0
- data/lib/spec/stubs/cucumber.rb +5 -0
- data/lib/spec/test/unit.rb +10 -0
- data/lib/spec/version.rb +14 -0
- 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/rspec.gemspec +26 -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.opts +6 -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/example/nested_example_group_spec.rb +71 -0
- 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 +194 -0
- data/spec/spec/expectations/extensions/kernel_spec.rb +45 -0
- data/spec/spec/expectations/fail_with_spec.rb +96 -0
- 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 +50 -0
- 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 +460 -0
- data/spec/spec/matchers/change_spec.rb +349 -0
- data/spec/spec/matchers/compatibility_spec.rb +28 -0
- data/spec/spec/matchers/description_generation_spec.rb +160 -0
- data/spec/spec/matchers/dsl_spec.rb +34 -0
- data/spec/spec/matchers/eql_spec.rb +33 -0
- data/spec/spec/matchers/equal_spec.rb +57 -0
- data/spec/spec/matchers/exist_spec.rb +65 -0
- data/spec/spec/matchers/has_spec.rb +190 -0
- data/spec/spec/matchers/have_spec.rb +381 -0
- data/spec/spec/matchers/include_spec.rb +88 -0
- data/spec/spec/matchers/match_array_spec.rb +115 -0
- data/spec/spec/matchers/match_spec.rb +57 -0
- 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 +191 -0
- data/spec/spec/matchers/pretty_spec.rb +22 -0
- data/spec/spec/matchers/raise_exception_spec.rb +345 -0
- data/spec/spec/matchers/respond_to_spec.rb +116 -0
- data/spec/spec/matchers/satisfy_spec.rb +36 -0
- data/spec/spec/matchers/simple_matcher_spec.rb +100 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +121 -0
- data/spec/spec/mocks/and_yield_spec.rb +117 -0
- data/spec/spec/mocks/any_number_of_times_spec.rb +36 -0
- data/spec/spec/mocks/argument_expectation_spec.rb +23 -0
- data/spec/spec/mocks/argument_matchers_spec.rb +19 -0
- data/spec/spec/mocks/at_least_spec.rb +97 -0
- data/spec/spec/mocks/at_most_spec.rb +93 -0
- data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
- data/spec/spec/mocks/bug_report_10263_spec.rb +27 -0
- data/spec/spec/mocks/bug_report_1049_spec.rb +30 -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 +19 -0
- data/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
- data/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
- data/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
- data/spec/spec/mocks/bug_report_830_spec.rb +21 -0
- data/spec/spec/mocks/bug_report_957_spec.rb +22 -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 +94 -0
- data/spec/spec/mocks/mock_space_spec.rb +54 -0
- data/spec/spec/mocks/mock_spec.rb +601 -0
- data/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
- data/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
- data/spec/spec/mocks/null_object_mock_spec.rb +54 -0
- data/spec/spec/mocks/once_counts_spec.rb +53 -0
- data/spec/spec/mocks/options_hash_spec.rb +35 -0
- data/spec/spec/mocks/partial_mock_spec.rb +164 -0
- data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
- data/spec/spec/mocks/passing_argument_matchers_spec.rb +145 -0
- data/spec/spec/mocks/precise_counts_spec.rb +52 -0
- data/spec/spec/mocks/record_messages_spec.rb +26 -0
- 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 +203 -0
- data/spec/spec/mocks/stubbed_message_expectations_spec.rb +26 -0
- data/spec/spec/mocks/twice_counts_spec.rb +67 -0
- data/spec/spec/mocks/unstub_spec.rb +127 -0
- data/spec/spec/package/bin_spec_spec.rb +16 -0
- 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 +162 -0
- data/spec/spec/runner/configuration_spec.rb +320 -0
- data/spec/spec/runner/drb_command_line_spec.rb +146 -0
- 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 +33 -0
- 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_formatted-1.9.2.html +377 -0
- data/spec/spec/runner/formatter/html_formatter_spec.rb +118 -0
- 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 +149 -0
- data/spec/spec/runner/formatter/snippet_extractor_spec.rb +18 -0
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +159 -0
- 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_formatted-1.9.2.html +371 -0
- data/spec/spec/runner/formatter/text_mate_formatter_spec.rb +106 -0
- data/spec/spec/runner/heckle_runner_spec.rb +78 -0
- data/spec/spec/runner/heckler_spec.rb +20 -0
- 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 +51 -0
- data/spec/spec/runner/option_parser_spec.rb +552 -0
- data/spec/spec/runner/options_spec.rb +554 -0
- 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 +123 -0
- data/spec/spec/runner/reporter_spec.rb +244 -0
- 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_helper.rb +113 -0
- data/spec/support/macros.rb +29 -0
- data/spec/support/spec_classes.rb +133 -0
- metadata +727 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Example
|
|
3
|
+
# Lightweight proxy for an example. This is the object that is passed to
|
|
4
|
+
# example-related methods in Spec::Runner::Formatter::BaseFormatter
|
|
5
|
+
class ExampleProxy
|
|
6
|
+
|
|
7
|
+
def initialize(description=nil, options={}, location=nil) # :nodoc:
|
|
8
|
+
@description, @options, @location = description, options, location
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Optional hash passed to the example declaration
|
|
12
|
+
attr_reader :options
|
|
13
|
+
|
|
14
|
+
# This is the docstring passed to the <tt>it()</tt> method or any
|
|
15
|
+
# of its aliases
|
|
16
|
+
attr_reader :description
|
|
17
|
+
|
|
18
|
+
# The file and line number at which the represented example
|
|
19
|
+
# was declared. This is extracted from <tt>caller</tt>, and is therefore
|
|
20
|
+
# formatted as an individual line in a backtrace.
|
|
21
|
+
attr_reader :location
|
|
22
|
+
|
|
23
|
+
# Deprecated - use location()
|
|
24
|
+
def backtrace
|
|
25
|
+
Spec.deprecate("ExampleProxy#backtrace","ExampleProxy#location")
|
|
26
|
+
location
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Convenience method for example group - updates the value of
|
|
30
|
+
# <tt>description</tt> and returns self.
|
|
31
|
+
def update(description) # :nodoc:
|
|
32
|
+
@description = description
|
|
33
|
+
self
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def ==(other) # :nodoc:
|
|
37
|
+
(other.description == description) & (other.location == location)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Example
|
|
3
|
+
# When you reopen a module that is included in another module that is included in a class,
|
|
4
|
+
# the new material you define does not make it to the class. This fixes that.
|
|
5
|
+
#
|
|
6
|
+
# == Example
|
|
7
|
+
#
|
|
8
|
+
# module M1; end
|
|
9
|
+
#
|
|
10
|
+
# module M2
|
|
11
|
+
# def foo; "FOO"; end
|
|
12
|
+
# end
|
|
13
|
+
#
|
|
14
|
+
# class C
|
|
15
|
+
# include M1
|
|
16
|
+
# end
|
|
17
|
+
#
|
|
18
|
+
# module M1
|
|
19
|
+
# include M2
|
|
20
|
+
# end
|
|
21
|
+
#
|
|
22
|
+
# c = C.new
|
|
23
|
+
# c.foo
|
|
24
|
+
# NoMethodError: undefined method `foo' for #<C:0x5e89a4>
|
|
25
|
+
# from (irb):12
|
|
26
|
+
module ModuleReopeningFix
|
|
27
|
+
def child_modules
|
|
28
|
+
@child_modules ||= []
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def included(mod)
|
|
32
|
+
child_modules << mod
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def include(mod)
|
|
36
|
+
super
|
|
37
|
+
child_modules.each do |child_module|
|
|
38
|
+
child_module.__send__(:include, mod)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Example
|
|
3
|
+
module Pending
|
|
4
|
+
def pending(message = "TODO")
|
|
5
|
+
if block_given?
|
|
6
|
+
begin
|
|
7
|
+
yield
|
|
8
|
+
rescue Exception
|
|
9
|
+
raise Spec::Example::ExamplePendingError.new(message)
|
|
10
|
+
end
|
|
11
|
+
raise Spec::Example::PendingExampleFixedError.new("Expected pending '#{message}' to fail. No Error was raised.")
|
|
12
|
+
else
|
|
13
|
+
raise Spec::Example::ExamplePendingError.new(message)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Example
|
|
3
|
+
module PredicateMatchers
|
|
4
|
+
# :call-seq:
|
|
5
|
+
# predicate_matchers[matcher_name] = method_on_object
|
|
6
|
+
# predicate_matchers[matcher_name] = [method1_on_object, method2_on_object]
|
|
7
|
+
#
|
|
8
|
+
# Dynamically generates a custom matcher that will match
|
|
9
|
+
# a predicate on your class. RSpec provides a couple of these
|
|
10
|
+
# out of the box:
|
|
11
|
+
#
|
|
12
|
+
# exist (for state expectations)
|
|
13
|
+
# File.should exist("path/to/file")
|
|
14
|
+
#
|
|
15
|
+
# an_instance_of (for mock argument matchers)
|
|
16
|
+
# mock.should_receive(:message).with(an_instance_of(String))
|
|
17
|
+
#
|
|
18
|
+
# == Examples
|
|
19
|
+
#
|
|
20
|
+
# class Fish
|
|
21
|
+
# def can_swim?
|
|
22
|
+
# true
|
|
23
|
+
# end
|
|
24
|
+
# end
|
|
25
|
+
#
|
|
26
|
+
# describe Fish do
|
|
27
|
+
# predicate_matchers[:swim] = :can_swim?
|
|
28
|
+
# it "should swim" do
|
|
29
|
+
# Fish.new.should swim
|
|
30
|
+
# end
|
|
31
|
+
# end
|
|
32
|
+
def predicate_matchers
|
|
33
|
+
@predicate_matchers ||= Spec::HashWithDeprecationNotice.new("predicate_matchers", "the new Matcher DSL")
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def define_methods_from_predicate_matchers # :nodoc:
|
|
37
|
+
predicate_matchers.each_pair do |matcher_method, method_on_object|
|
|
38
|
+
define_method matcher_method do |*args|
|
|
39
|
+
eval("be_#{method_on_object.to_s.gsub('?','')}(*args)")
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Example
|
|
3
|
+
class SharedExampleGroup < Module
|
|
4
|
+
module ClassMethods
|
|
5
|
+
def register(*args, &block)
|
|
6
|
+
new_example_group = new(*args, &block)
|
|
7
|
+
shared_example_groups << new_example_group unless already_registered?(new_example_group)
|
|
8
|
+
new_example_group
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def find(example_group_description)
|
|
12
|
+
shared_example_groups.find {|b| b.description == example_group_description}
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def clear
|
|
16
|
+
shared_example_groups.clear
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def include?(group)
|
|
20
|
+
shared_example_groups.include?(group)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def count
|
|
24
|
+
shared_example_groups.length
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
def shared_example_groups
|
|
30
|
+
@shared_example_groups ||= []
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def already_registered?(new_example_group)
|
|
34
|
+
existing_example_group = find(new_example_group.description)
|
|
35
|
+
return false unless existing_example_group
|
|
36
|
+
return true if new_example_group.equal?(existing_example_group)
|
|
37
|
+
return true if expanded_path(new_example_group) == expanded_path(existing_example_group)
|
|
38
|
+
raise ArgumentError.new("Shared Example '#{existing_example_group.description}' already exists")
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def expanded_path(example_group)
|
|
42
|
+
File.expand_path(example_group.location)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
extend ClassMethods
|
|
47
|
+
include ExampleGroupMethods
|
|
48
|
+
|
|
49
|
+
def initialize(*args, &example_group_block)
|
|
50
|
+
set_description(*args)
|
|
51
|
+
@example_group_block = example_group_block
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def included(mod) # :nodoc:
|
|
55
|
+
mod.module_eval(&@example_group_block)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Example
|
|
3
|
+
module Subject
|
|
4
|
+
module ExampleGroupMethods
|
|
5
|
+
# Defines an explicit subject for an example group which can then be the
|
|
6
|
+
# implicit receiver (through delegation) of calls to +should+.
|
|
7
|
+
#
|
|
8
|
+
# == Examples
|
|
9
|
+
#
|
|
10
|
+
# describe CheckingAccount, "with $50" do
|
|
11
|
+
# subject { CheckingAccount.new(:amount => 50, :currency => :USD) }
|
|
12
|
+
# it { should have_a_balance_of(50, :USD) }
|
|
13
|
+
# it { should_not be_overdrawn }
|
|
14
|
+
# its(:currency) { should == :USD }
|
|
15
|
+
# end
|
|
16
|
+
#
|
|
17
|
+
# See +ExampleMethods#should+ for more information about this approach.
|
|
18
|
+
def subject(&block)
|
|
19
|
+
block.nil? ?
|
|
20
|
+
explicit_subject || implicit_subject : @explicit_subject_block = block
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def its(attribute, &block)
|
|
24
|
+
describe(attribute) do
|
|
25
|
+
example do
|
|
26
|
+
self.class.class_eval do
|
|
27
|
+
define_method(:subject) do
|
|
28
|
+
super().send(attribute)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
instance_eval(&block)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
attr_reader :explicit_subject_block # :nodoc:
|
|
37
|
+
|
|
38
|
+
private
|
|
39
|
+
|
|
40
|
+
def explicit_subject
|
|
41
|
+
group = self
|
|
42
|
+
while group.respond_to?(:explicit_subject_block)
|
|
43
|
+
return group.explicit_subject_block if group.explicit_subject_block
|
|
44
|
+
group = group.superclass
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def implicit_subject
|
|
49
|
+
(described_class ? proc {described_class.new} : proc {description_args.first})
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
module ExampleMethods
|
|
54
|
+
|
|
55
|
+
alias_method :__should_for_example_group__, :should
|
|
56
|
+
alias_method :__should_not_for_example_group__, :should_not
|
|
57
|
+
|
|
58
|
+
# Returns the subject defined in ExampleGroupMethods#subject. The
|
|
59
|
+
# subject block is only executed once per example, the result of which
|
|
60
|
+
# is cached and returned by any subsequent calls to +subject+.
|
|
61
|
+
#
|
|
62
|
+
# If a class is passed to +describe+ and no subject is explicitly
|
|
63
|
+
# declared in the example group, then +subject+ will return a new
|
|
64
|
+
# instance of that class.
|
|
65
|
+
#
|
|
66
|
+
# == Examples
|
|
67
|
+
#
|
|
68
|
+
# # explicit subject defined by the subject method
|
|
69
|
+
# describe Person do
|
|
70
|
+
# subject { Person.new(:birthdate => 19.years.ago) }
|
|
71
|
+
# it "should be eligible to vote" do
|
|
72
|
+
# subject.should be_eligible_to_vote
|
|
73
|
+
# end
|
|
74
|
+
# end
|
|
75
|
+
#
|
|
76
|
+
# # implicit subject => { Person.new }
|
|
77
|
+
# describe Person do
|
|
78
|
+
# it "should be eligible to vote" do
|
|
79
|
+
# subject.should be_eligible_to_vote
|
|
80
|
+
# end
|
|
81
|
+
# end
|
|
82
|
+
def subject
|
|
83
|
+
@subject ||= instance_eval(&self.class.subject)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# When +should+ is called with no explicit receiver, the call is
|
|
87
|
+
# delegated to the object returned by +subject+. Combined with
|
|
88
|
+
# an implicit subject (see +subject+), this supports very concise
|
|
89
|
+
# expressions.
|
|
90
|
+
#
|
|
91
|
+
# == Examples
|
|
92
|
+
#
|
|
93
|
+
# describe Person do
|
|
94
|
+
# it { should be_eligible_to_vote }
|
|
95
|
+
# end
|
|
96
|
+
def should(matcher=nil, message=nil)
|
|
97
|
+
self == subject ? self.__should_for_example_group__(matcher) : subject.should(matcher,message)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# Just like +should+, +should_not+ delegates to the subject (implicit or
|
|
101
|
+
# explicit) of the example group.
|
|
102
|
+
#
|
|
103
|
+
# == Examples
|
|
104
|
+
#
|
|
105
|
+
# describe Person do
|
|
106
|
+
# it { should_not be_eligible_to_vote }
|
|
107
|
+
# end
|
|
108
|
+
def should_not(matcher=nil, message=nil)
|
|
109
|
+
self == subject ? self.__should_not_for_example_group__(matcher) : subject.should_not(matcher,message)
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require 'spec/matchers'
|
|
2
|
+
require 'spec/expectations/fail_with'
|
|
3
|
+
require 'spec/expectations/errors'
|
|
4
|
+
require 'spec/expectations/extensions'
|
|
5
|
+
require 'spec/expectations/handler'
|
|
6
|
+
|
|
7
|
+
module Spec
|
|
8
|
+
|
|
9
|
+
# Spec::Expectations lets you set expectations on your objects.
|
|
10
|
+
#
|
|
11
|
+
# result.should == 37
|
|
12
|
+
# team.should have(11).players_on_the_field
|
|
13
|
+
#
|
|
14
|
+
# == How Expectations work.
|
|
15
|
+
#
|
|
16
|
+
# Spec::Expectations adds two methods to Object:
|
|
17
|
+
#
|
|
18
|
+
# should(matcher=nil)
|
|
19
|
+
# should_not(matcher=nil)
|
|
20
|
+
#
|
|
21
|
+
# Both methods take an optional Expression Matcher (See Spec::Matchers).
|
|
22
|
+
#
|
|
23
|
+
# When +should+ receives an Expression Matcher, it calls <tt>matches?(self)</tt>. If
|
|
24
|
+
# it returns +true+, the spec passes and execution continues. If it returns
|
|
25
|
+
# +false+, then the spec fails with the message returned by <tt>matcher.failure_message</tt>.
|
|
26
|
+
#
|
|
27
|
+
# Similarly, when +should_not+ receives a matcher, it calls <tt>matches?(self)</tt>. If
|
|
28
|
+
# it returns +false+, the spec passes and execution continues. If it returns
|
|
29
|
+
# +true+, then the spec fails with the message returned by <tt>matcher.negative_failure_message</tt>.
|
|
30
|
+
#
|
|
31
|
+
# RSpec ships with a standard set of useful matchers, and writing your own
|
|
32
|
+
# matchers is quite simple. See Spec::Matchers for details.
|
|
33
|
+
module Expectations
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Expectations
|
|
3
|
+
# If Test::Unit is loaed, we'll use its error as baseclass, so that Test::Unit
|
|
4
|
+
# will report unmet RSpec expectations as failures rather than errors.
|
|
5
|
+
superclass = ['Test::Unit::AssertionFailedError', '::StandardError'].map do |c|
|
|
6
|
+
eval(c) rescue nil
|
|
7
|
+
end.compact.first
|
|
8
|
+
|
|
9
|
+
class ExpectationNotMetError < superclass
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'spec/expectations/extensions/kernel'
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
module Kernel
|
|
2
|
+
# :call-seq:
|
|
3
|
+
# should(matcher)
|
|
4
|
+
# should == expected
|
|
5
|
+
# should === expected
|
|
6
|
+
# should =~ expected
|
|
7
|
+
#
|
|
8
|
+
# receiver.should(matcher)
|
|
9
|
+
# => Passes if matcher.matches?(receiver)
|
|
10
|
+
#
|
|
11
|
+
# receiver.should == expected #any value
|
|
12
|
+
# => Passes if (receiver == expected)
|
|
13
|
+
#
|
|
14
|
+
# receiver.should === expected #any value
|
|
15
|
+
# => Passes if (receiver === expected)
|
|
16
|
+
#
|
|
17
|
+
# receiver.should =~ regexp
|
|
18
|
+
# => Passes if (receiver =~ regexp)
|
|
19
|
+
#
|
|
20
|
+
# See Spec::Matchers for more information about matchers
|
|
21
|
+
#
|
|
22
|
+
# == Warning
|
|
23
|
+
#
|
|
24
|
+
# NOTE that this does NOT support receiver.should != expected.
|
|
25
|
+
# Instead, use receiver.should_not == expected
|
|
26
|
+
def should(matcher=nil, message=nil, &block)
|
|
27
|
+
Spec::Expectations::PositiveExpectationHandler.handle_matcher(self, matcher, message, &block)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# :call-seq:
|
|
31
|
+
# should_not(matcher)
|
|
32
|
+
# should_not == expected
|
|
33
|
+
# should_not === expected
|
|
34
|
+
# should_not =~ expected
|
|
35
|
+
#
|
|
36
|
+
# receiver.should_not(matcher)
|
|
37
|
+
# => Passes unless matcher.matches?(receiver)
|
|
38
|
+
#
|
|
39
|
+
# receiver.should_not == expected
|
|
40
|
+
# => Passes unless (receiver == expected)
|
|
41
|
+
#
|
|
42
|
+
# receiver.should_not === expected
|
|
43
|
+
# => Passes unless (receiver === expected)
|
|
44
|
+
#
|
|
45
|
+
# receiver.should_not =~ regexp
|
|
46
|
+
# => Passes unless (receiver =~ regexp)
|
|
47
|
+
#
|
|
48
|
+
# See Spec::Matchers for more information about matchers
|
|
49
|
+
def should_not(matcher=nil, message=nil, &block)
|
|
50
|
+
Spec::Expectations::NegativeExpectationHandler.handle_matcher(self, matcher, message, &block)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Expectations
|
|
3
|
+
class << self
|
|
4
|
+
attr_accessor :differ
|
|
5
|
+
|
|
6
|
+
# raises a Spec::Expectations::ExpectationNotMetError with message
|
|
7
|
+
#
|
|
8
|
+
# When a differ has been assigned and fail_with is passed
|
|
9
|
+
# <code>expected</code> and <code>target</code>, passes them
|
|
10
|
+
# to the differ to append a diff message to the failure message.
|
|
11
|
+
def fail_with(message, expected=nil, target=nil) # :nodoc:
|
|
12
|
+
if message.nil?
|
|
13
|
+
raise ArgumentError, "Failure message is nil. Does your matcher define the " +
|
|
14
|
+
"appropriate failure_message_for_* method to return a string?"
|
|
15
|
+
end
|
|
16
|
+
if (Array === message) & (message.length == 3)
|
|
17
|
+
::Spec.warn(<<-NOTICE
|
|
18
|
+
|
|
19
|
+
*****************************************************************
|
|
20
|
+
DEPRECATION WARNING: you are using deprecated behaviour that will
|
|
21
|
+
be removed from a future version of RSpec.
|
|
22
|
+
|
|
23
|
+
* Support for matchers that return arrays from failure message
|
|
24
|
+
methods is deprecated.
|
|
25
|
+
* Instead, the matcher should return a string, and expose methods
|
|
26
|
+
for the expected() and actual() values.
|
|
27
|
+
*****************************************************************
|
|
28
|
+
NOTICE
|
|
29
|
+
)
|
|
30
|
+
message, expected, target = message[0], message[1], message[2]
|
|
31
|
+
end
|
|
32
|
+
unless (differ.nil? || expected.nil? || target.nil?)
|
|
33
|
+
if expected.is_a?(String)
|
|
34
|
+
message << "\n\n Diff:" << self.differ.diff_as_string(target.to_s, expected)
|
|
35
|
+
elsif expected.is_a?(Hash) && target.is_a?(Hash)
|
|
36
|
+
message << "\n\n Diff:" << self.differ.diff_as_hash(target, expected)
|
|
37
|
+
elsif !target.is_a?(Proc)
|
|
38
|
+
message << "\n\n Diff:" << self.differ.diff_as_object(target, expected)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
Kernel::raise(Spec::Expectations::ExpectationNotMetError.new(message))
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|