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
data/lib/spec/example.rb
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
# == Example Groups and Code Examples
|
|
3
|
+
#
|
|
4
|
+
# A Code Example is an executable example of how a bit of code is expected
|
|
5
|
+
# to behave.
|
|
6
|
+
#
|
|
7
|
+
# An Example Group is a group of code examples.
|
|
8
|
+
#
|
|
9
|
+
# RSpec exposes a DSL to describe groups of examples.
|
|
10
|
+
#
|
|
11
|
+
# describe Account do
|
|
12
|
+
# it "should have a balance of $0" do
|
|
13
|
+
# account = Account.new
|
|
14
|
+
# account.balance.should == Money.new(0, :dollars)
|
|
15
|
+
# end
|
|
16
|
+
# end
|
|
17
|
+
#
|
|
18
|
+
# == Before and After
|
|
19
|
+
#
|
|
20
|
+
# You can use the <tt>before()</tt> and <tt>after()</tt> methods to extract
|
|
21
|
+
# common code within an Example Group. Both methods take an optional scope
|
|
22
|
+
# argument so you can run the block before :each example or before :all
|
|
23
|
+
# examples
|
|
24
|
+
#
|
|
25
|
+
# describe "..." do
|
|
26
|
+
# before :all do
|
|
27
|
+
# ...
|
|
28
|
+
# end
|
|
29
|
+
#
|
|
30
|
+
# before :each do
|
|
31
|
+
# ...
|
|
32
|
+
# end
|
|
33
|
+
#
|
|
34
|
+
# it "should do something" do
|
|
35
|
+
# ...
|
|
36
|
+
# end
|
|
37
|
+
#
|
|
38
|
+
# it "should do something else" do
|
|
39
|
+
# ...
|
|
40
|
+
# end
|
|
41
|
+
#
|
|
42
|
+
# after :each do
|
|
43
|
+
# ...
|
|
44
|
+
# end
|
|
45
|
+
#
|
|
46
|
+
# after :all do
|
|
47
|
+
# ...
|
|
48
|
+
# end
|
|
49
|
+
#
|
|
50
|
+
# end
|
|
51
|
+
#
|
|
52
|
+
# The <tt>before :each</tt> block will run before each of the examples, once
|
|
53
|
+
# for each example. Likewise, the <tt>after :each</tt> block will run after
|
|
54
|
+
# each of the examples.
|
|
55
|
+
#
|
|
56
|
+
# It is also possible to specify a <tt>before :all</tt> and <tt>after
|
|
57
|
+
# :all</tt> block that will run only once for each example group, before the
|
|
58
|
+
# first <code>before :each</code> and after the last <code>after
|
|
59
|
+
# :each</code> respectively. The use of these is generally discouraged,
|
|
60
|
+
# because it introduces dependencies between the examples. Still, it might
|
|
61
|
+
# prove useful for very expensive operations if you know what you are doing.
|
|
62
|
+
#
|
|
63
|
+
# == Local helper methods
|
|
64
|
+
#
|
|
65
|
+
# You can include local helper methods by simply expressing them within an
|
|
66
|
+
# example group:
|
|
67
|
+
#
|
|
68
|
+
# describe "..." do
|
|
69
|
+
#
|
|
70
|
+
# it "..." do
|
|
71
|
+
# helper_method
|
|
72
|
+
# end
|
|
73
|
+
#
|
|
74
|
+
# def helper_method
|
|
75
|
+
# ...
|
|
76
|
+
# end
|
|
77
|
+
#
|
|
78
|
+
# end
|
|
79
|
+
#
|
|
80
|
+
# == Included helper methods
|
|
81
|
+
#
|
|
82
|
+
# You can include helper methods in multiple example groups by expressing
|
|
83
|
+
# them within a module, and then including that module in your example
|
|
84
|
+
# groups:
|
|
85
|
+
#
|
|
86
|
+
# module AccountExampleHelperMethods
|
|
87
|
+
# def helper_method
|
|
88
|
+
# ...
|
|
89
|
+
# end
|
|
90
|
+
# end
|
|
91
|
+
#
|
|
92
|
+
# describe "A new account" do
|
|
93
|
+
# include AccountExampleHelperMethods
|
|
94
|
+
# before do
|
|
95
|
+
# @account = Account.new
|
|
96
|
+
# end
|
|
97
|
+
#
|
|
98
|
+
# it "should have a balance of $0" do
|
|
99
|
+
# helper_method
|
|
100
|
+
# @account.balance.should eql(Money.new(0, :dollars))
|
|
101
|
+
# end
|
|
102
|
+
# end
|
|
103
|
+
#
|
|
104
|
+
# == Shared Example Groups
|
|
105
|
+
#
|
|
106
|
+
# You can define a shared example group, that may be used on other groups
|
|
107
|
+
#
|
|
108
|
+
# share_examples_for "All Editions" do
|
|
109
|
+
# it "all editions behaviour" ...
|
|
110
|
+
# end
|
|
111
|
+
#
|
|
112
|
+
# describe SmallEdition do
|
|
113
|
+
# it_should_behave_like "All Editions"
|
|
114
|
+
#
|
|
115
|
+
# it "should do small edition stuff" do
|
|
116
|
+
# ...
|
|
117
|
+
# end
|
|
118
|
+
# end
|
|
119
|
+
#
|
|
120
|
+
# You can also assign the shared group to a module and include that
|
|
121
|
+
#
|
|
122
|
+
# share_as :AllEditions do
|
|
123
|
+
# it "should do all editions stuff" ...
|
|
124
|
+
# end
|
|
125
|
+
#
|
|
126
|
+
# describe SmallEdition do
|
|
127
|
+
# it_should_behave_like AllEditions
|
|
128
|
+
#
|
|
129
|
+
# it "should do small edition stuff" do
|
|
130
|
+
# ...
|
|
131
|
+
# end
|
|
132
|
+
# end
|
|
133
|
+
#
|
|
134
|
+
# And, for those of you who prefer to use something more like Ruby, you can
|
|
135
|
+
# just include the module directly
|
|
136
|
+
#
|
|
137
|
+
# describe SmallEdition do
|
|
138
|
+
# include AllEditions
|
|
139
|
+
#
|
|
140
|
+
# it "should do small edition stuff" do
|
|
141
|
+
# ...
|
|
142
|
+
# end
|
|
143
|
+
# end
|
|
144
|
+
module Example
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
require 'timeout'
|
|
149
|
+
require 'spec/example/args_and_options'
|
|
150
|
+
require 'spec/example/predicate_matchers'
|
|
151
|
+
require 'spec/example/example_group_proxy'
|
|
152
|
+
require 'spec/example/example_proxy'
|
|
153
|
+
require 'spec/example/subject'
|
|
154
|
+
require 'spec/example/before_and_after_hooks'
|
|
155
|
+
require 'spec/example/pending'
|
|
156
|
+
require 'spec/example/module_reopening_fix'
|
|
157
|
+
require 'spec/example/example_group_hierarchy'
|
|
158
|
+
require 'spec/example/example_group_methods'
|
|
159
|
+
require 'spec/example/example_methods'
|
|
160
|
+
require 'spec/example/example_group'
|
|
161
|
+
require 'spec/example/shared_example_group'
|
|
162
|
+
require 'spec/example/example_group_factory'
|
|
163
|
+
require 'spec/example/errors'
|
|
164
|
+
require 'spec/example/example_matcher'
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Example
|
|
3
|
+
module ArgsAndOptions
|
|
4
|
+
def args_and_options(*args) # :nodoc:
|
|
5
|
+
options = Hash === args.last ? args.pop : {}
|
|
6
|
+
return args, options
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def add_options(args, options={}) # :nodoc:
|
|
10
|
+
args << {} unless Hash === args.last
|
|
11
|
+
args.extend WithOptions
|
|
12
|
+
args.options.merge!(options)
|
|
13
|
+
args.options
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def set_location(options, location) # :nodoc:
|
|
17
|
+
options[:location] ||= location
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
module WithOptions # :nodoc:
|
|
21
|
+
def options
|
|
22
|
+
last
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Example
|
|
3
|
+
module BeforeAndAfterHooks
|
|
4
|
+
class << self
|
|
5
|
+
def before_suite_parts # :nodoc:
|
|
6
|
+
@before_suite_parts ||= []
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def after_suite_parts # :nodoc:
|
|
10
|
+
@after_suite_parts ||= []
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Registers a block to be executed before examples. <tt>scope</tt> can be
|
|
15
|
+
# <tt>:each</tt> (default), <tt>:all</tt>, or <tt>:suite</tt>. When
|
|
16
|
+
# <tt>:each</tt>, the block is executed before each example. When
|
|
17
|
+
# <tt>:all</tt>, the block is executed only once before any examples are
|
|
18
|
+
# run.
|
|
19
|
+
def append_before(scope = :each, &block)
|
|
20
|
+
before_parts(scope) << block
|
|
21
|
+
end
|
|
22
|
+
alias_method :before, :append_before
|
|
23
|
+
|
|
24
|
+
# Registers a block to be executed before each example.
|
|
25
|
+
# This method prepends +block+ to existing before blocks.
|
|
26
|
+
#
|
|
27
|
+
# See <tt>append_before</tt> for scoping semantics.
|
|
28
|
+
def prepend_before(scope = :each, &block)
|
|
29
|
+
before_parts(scope).unshift(block)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Registers a block to be executed after each example.
|
|
33
|
+
# This method prepends +block+ to existing after blocks.
|
|
34
|
+
#
|
|
35
|
+
# See <tt>append_before</tt> for scoping semantics.
|
|
36
|
+
def prepend_after(scope = :each, &block)
|
|
37
|
+
after_parts(scope).unshift(block)
|
|
38
|
+
end
|
|
39
|
+
alias_method :after, :prepend_after
|
|
40
|
+
|
|
41
|
+
# Registers a block to be executed after each example.
|
|
42
|
+
# This method appends +block+ to existing after blocks.
|
|
43
|
+
#
|
|
44
|
+
# See <tt>append_before</tt> for scoping semantics.
|
|
45
|
+
def append_after(scope = :each, &block)
|
|
46
|
+
after_parts(scope) << block
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def before_each_parts # :nodoc:
|
|
50
|
+
@before_each_parts ||= []
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def after_each_parts # :nodoc:
|
|
54
|
+
@after_each_parts ||= []
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def before_all_parts # :nodoc:
|
|
58
|
+
@before_all_parts ||= []
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def after_all_parts # :nodoc:
|
|
62
|
+
@after_all_parts ||= []
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def before_suite_parts # :nodoc:
|
|
66
|
+
BeforeAndAfterHooks.before_suite_parts
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def after_suite_parts # :nodoc:
|
|
70
|
+
BeforeAndAfterHooks.after_suite_parts
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
private
|
|
74
|
+
|
|
75
|
+
def before_parts(scope)
|
|
76
|
+
case scope
|
|
77
|
+
when :each; before_each_parts
|
|
78
|
+
when :all; before_all_parts
|
|
79
|
+
when :suite; before_suite_parts
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def after_parts(scope)
|
|
84
|
+
case scope
|
|
85
|
+
when :each; after_each_parts
|
|
86
|
+
when :all; after_all_parts
|
|
87
|
+
when :suite; after_suite_parts
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Example
|
|
3
|
+
class ExamplePendingError < StandardError; end
|
|
4
|
+
|
|
5
|
+
class NotYetImplementedError < ExamplePendingError
|
|
6
|
+
MESSAGE = "Not Yet Implemented"
|
|
7
|
+
def initialize
|
|
8
|
+
super(MESSAGE)
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
class PendingExampleFixedError < StandardError; end
|
|
13
|
+
|
|
14
|
+
class NoDescriptionError < ArgumentError
|
|
15
|
+
class << self
|
|
16
|
+
def message(kind, location)
|
|
17
|
+
"No description supplied for #{kind} declared on #{location}"
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
def initialize(kind, location)
|
|
21
|
+
super(self.class.message(kind, location))
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Example
|
|
3
|
+
|
|
4
|
+
class ExampleGroupFactory
|
|
5
|
+
module ClassMethods
|
|
6
|
+
include Spec::Example::ArgsAndOptions
|
|
7
|
+
|
|
8
|
+
def reset
|
|
9
|
+
@example_group_types = nil
|
|
10
|
+
default(ExampleGroup)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def example_group_creation_listeners
|
|
14
|
+
@example_group_creation_listeners ||= []
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def register_example_group(klass)
|
|
18
|
+
example_group_creation_listeners.each do |listener|
|
|
19
|
+
listener.register_example_group(klass)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def create_shared_example_group(*args, &example_group_block) # :nodoc:
|
|
24
|
+
::Spec::Example::SharedExampleGroup.register(*args, &example_group_block)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def create_example_group(*args, &block)
|
|
28
|
+
raise ArgumentError if args.empty? || block.nil?
|
|
29
|
+
add_options(args)
|
|
30
|
+
superclass = determine_superclass(args.last)
|
|
31
|
+
superclass.describe(*args, &block)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Registers an example group class +klass+ with the symbol +type+. For
|
|
35
|
+
# example:
|
|
36
|
+
#
|
|
37
|
+
# Spec::Example::ExampleGroupFactory.register(:farm, FarmExampleGroup)
|
|
38
|
+
#
|
|
39
|
+
# With that you can append a hash with :type => :farm to the describe
|
|
40
|
+
# method and it will load an instance of FarmExampleGroup.
|
|
41
|
+
#
|
|
42
|
+
# describe Pig, :type => :farm do
|
|
43
|
+
# ...
|
|
44
|
+
#
|
|
45
|
+
# If you don't use the hash explicitly, <tt>describe</tt> will
|
|
46
|
+
# implicitly use an instance of FarmExampleGroup for any file loaded
|
|
47
|
+
# from the <tt>./spec/farm</tt> directory.
|
|
48
|
+
def register(key, example_group_class)
|
|
49
|
+
@example_group_types[key.to_sym] = example_group_class
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Sets the default ExampleGroup class
|
|
53
|
+
def default(example_group_class)
|
|
54
|
+
Spec.__send__ :remove_const, :ExampleGroup if Spec.const_defined?(:ExampleGroup)
|
|
55
|
+
Spec.const_set(:ExampleGroup, example_group_class)
|
|
56
|
+
old = @example_group_types
|
|
57
|
+
@example_group_types = Hash.new(example_group_class)
|
|
58
|
+
@example_group_types.merge!(old) if old
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def [](key)
|
|
62
|
+
@example_group_types[key]
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
protected
|
|
66
|
+
|
|
67
|
+
def determine_superclass(opts)
|
|
68
|
+
if type = opts[:type]
|
|
69
|
+
self[type]
|
|
70
|
+
elsif opts[:location] =~ /spec(\\|\/)(#{@example_group_types.keys.sort_by{|k| k.to_s.length}.reverse.join('|')})/
|
|
71
|
+
self[$2 == '' ? nil : $2.to_sym]
|
|
72
|
+
else
|
|
73
|
+
self[nil]
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
end
|
|
78
|
+
extend ClassMethods
|
|
79
|
+
self.reset
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Example
|
|
3
|
+
class ExampleGroupHierarchy < Array
|
|
4
|
+
def initialize(example_group_class)
|
|
5
|
+
push example_group_class
|
|
6
|
+
if example_group_class.respond_to?(:superclass) && example_group_class.superclass.respond_to?(:example_group_hierarchy)
|
|
7
|
+
unshift example_group_class.superclass.example_group_hierarchy
|
|
8
|
+
flatten!
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def run_before_all(example)
|
|
13
|
+
example.eval_each_fail_fast(before_all_parts)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def run_before_each(example)
|
|
17
|
+
example.eval_each_fail_fast(before_each_parts)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def run_after_each(example)
|
|
21
|
+
example.eval_each_fail_slow(after_each_parts)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def run_after_all(example)
|
|
25
|
+
example.eval_each_fail_slow(after_all_parts)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def before_all_parts
|
|
29
|
+
@before_all_parts ||= collect {|klass| klass.before_all_parts}.flatten
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def before_each_parts
|
|
33
|
+
@before_each_parts ||= collect {|klass| klass.before_each_parts}.flatten
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def after_each_parts
|
|
37
|
+
@after_each_parts ||= reverse.collect {|klass| klass.after_each_parts}.flatten
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def after_all_parts
|
|
41
|
+
@after_all_parts ||= reverse.collect {|klass| klass.after_all_parts}.flatten
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def nested_descriptions
|
|
45
|
+
@nested_descriptions ||= collect {|eg| nested_description_from(eg) == "" ? nil : nested_description_from(eg) }.compact
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def nested_description_from(example_group)
|
|
49
|
+
example_group.description_args.join
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|