rspec 1.3.0 → 2.0.0
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 +1 -6
- data/.gitignore +7 -0
- data/Gemfile +6 -0
- data/License.txt +1 -1
- data/README.markdown +30 -0
- data/Rakefile +10 -143
- data/lib/rspec/version.rb +5 -0
- data/lib/rspec.rb +4 -0
- data/rspec.gemspec +29 -0
- metadata +69 -462
- data/History.rdoc +0 -1529
- data/Manifest.txt +0 -384
- data/README.rdoc +0 -54
- data/Ruby1.9.rdoc +0 -31
- data/TODO.txt +0 -17
- data/Upgrade.rdoc +0 -260
- data/bin/autospec +0 -4
- data/bin/spec +0 -5
- data/cucumber.yml +0 -5
- data/examples/failing/README.txt +0 -11
- data/examples/failing/diffing_spec.rb +0 -36
- data/examples/failing/failing_implicit_docstrings_example.rb +0 -17
- data/examples/failing/failure_in_after.rb +0 -10
- data/examples/failing/failure_in_before.rb +0 -10
- data/examples/failing/mocking_example.rb +0 -38
- data/examples/failing/mocking_with_flexmock.rb +0 -26
- data/examples/failing/mocking_with_mocha.rb +0 -25
- data/examples/failing/mocking_with_rr.rb +0 -27
- data/examples/failing/partial_mock_example.rb +0 -18
- data/examples/failing/pending_example.rb +0 -7
- data/examples/failing/predicate_example.rb +0 -32
- data/examples/failing/raising_example.rb +0 -47
- data/examples/failing/syntax_error_example.rb +0 -7
- data/examples/failing/team_spec.rb +0 -41
- data/examples/failing/timeout_behaviour.rb +0 -5
- data/examples/passing/custom_formatter.rb +0 -11
- data/examples/passing/custom_matchers.rb +0 -54
- data/examples/passing/dynamic_spec.rb +0 -7
- data/examples/passing/file_accessor.rb +0 -18
- data/examples/passing/file_accessor_spec.rb +0 -37
- data/examples/passing/filtered_formatter.rb +0 -17
- data/examples/passing/filtered_formatter_example.rb +0 -31
- data/examples/passing/greeter_spec.rb +0 -30
- data/examples/passing/helper_method_example.rb +0 -12
- data/examples/passing/implicit_docstrings_example.rb +0 -16
- data/examples/passing/io_processor.rb +0 -8
- data/examples/passing/io_processor_spec.rb +0 -20
- data/examples/passing/mocking_example.rb +0 -25
- data/examples/passing/multi_threaded_example_group_runner.rb +0 -26
- data/examples/passing/nested_classes_example.rb +0 -35
- data/examples/passing/options_example.rb +0 -29
- data/examples/passing/options_formatter.rb +0 -20
- data/examples/passing/partial_mock_example.rb +0 -27
- data/examples/passing/pending_example.rb +0 -18
- data/examples/passing/predicate_example.rb +0 -25
- data/examples/passing/shared_example_group_example.rb +0 -79
- data/examples/passing/shared_stack_examples.rb +0 -36
- data/examples/passing/simple_matcher_example.rb +0 -29
- data/examples/passing/stack.rb +0 -36
- data/examples/passing/stack_spec.rb +0 -63
- data/examples/passing/stack_spec_with_nested_example_groups.rb +0 -66
- data/examples/passing/stubbing_example.rb +0 -67
- data/examples/passing/yielding_example.rb +0 -31
- data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +0 -85
- data/features/before_and_after_blocks/before_and_after_blocks.feature +0 -167
- data/features/command_line/line_number_option.feature +0 -56
- data/features/command_line/line_number_option_with_example_with_no_name.feature +0 -22
- data/features/example_groups/define_example_attribute.feature +0 -41
- data/features/example_groups/example_group_with_should_methods.feature +0 -29
- data/features/example_groups/implicit_docstrings.feature +0 -59
- data/features/example_groups/nested_groups.feature +0 -32
- data/features/expectations/customized_message.feature +0 -54
- data/features/expectations/expect_change.feature +0 -65
- data/features/expectations/expect_error.feature +0 -44
- data/features/extensions/custom_example_group.feature +0 -19
- data/features/formatters/custom_formatter.feature +0 -30
- data/features/formatters/nested_formatter.feature +0 -32
- data/features/interop/cucumber_stubs_dont_leak.feature +0 -11
- data/features/interop/examples_and_tests_together.feature +0 -84
- data/features/interop/rspec_output.feature +0 -25
- data/features/interop/test_but_not_test_unit.feature +0 -26
- data/features/interop/test_case_with_should_methods.feature +0 -46
- data/features/load_paths/add_lib_to_load_path.feature +0 -20
- data/features/load_paths/add_spec_to_load_path.feature +0 -20
- data/features/matchers/define_diffable_matcher.feature +0 -26
- data/features/matchers/define_matcher.feature +0 -179
- data/features/matchers/define_matcher_outside_rspec.feature +0 -38
- data/features/matchers/define_matcher_with_fluent_interface.feature +0 -48
- data/features/matchers/define_wrapped_matcher.feature +0 -56
- data/features/matchers/match_unless_raises.feature +0 -60
- data/features/matchers/match_unless_raises_unexpected_error.feature +0 -39
- data/features/mock_framework_integration/use_flexmock.feature +0 -27
- data/features/mock_framework_integration/use_mocha.feature +0 -27
- data/features/mock_framework_integration/use_rr.feature +0 -27
- data/features/mocks/block_local_expectations.feature +0 -62
- data/features/mocks/mix_stubs_and_mocks.feature +0 -22
- data/features/mocks/stub_implementation.feature +0 -26
- data/features/pending/pending_examples.feature +0 -81
- data/features/runner/specify_line_number.feature +0 -32
- data/features/spec_helper/spec_helper.feature +0 -25
- data/features/step_definitions/running_rspec_steps.rb +0 -52
- data/features/step_definitions/stubbing_steps.rb +0 -16
- data/features/subject/explicit_subject.feature +0 -31
- data/features/subject/implicit_subject.feature +0 -43
- data/features/support/env.rb +0 -83
- data/features/support/matchers/smart_match.rb +0 -31
- data/geminstaller.yml +0 -28
- data/init.rb +0 -9
- data/lib/autotest/discover.rb +0 -3
- data/lib/autotest/rspec.rb +0 -54
- data/lib/spec/adapters/mock_frameworks/flexmock.rb +0 -24
- data/lib/spec/adapters/mock_frameworks/mocha.rb +0 -25
- data/lib/spec/adapters/mock_frameworks/rr.rb +0 -22
- data/lib/spec/adapters/mock_frameworks/rspec.rb +0 -21
- data/lib/spec/autorun.rb +0 -3
- data/lib/spec/deprecation.rb +0 -40
- data/lib/spec/dsl/main.rb +0 -92
- data/lib/spec/dsl.rb +0 -1
- data/lib/spec/example/args_and_options.rb +0 -27
- data/lib/spec/example/before_and_after_hooks.rb +0 -93
- data/lib/spec/example/errors.rb +0 -25
- data/lib/spec/example/example_group.rb +0 -10
- data/lib/spec/example/example_group_factory.rb +0 -82
- data/lib/spec/example/example_group_hierarchy.rb +0 -53
- data/lib/spec/example/example_group_methods.rb +0 -282
- data/lib/spec/example/example_group_proxy.rb +0 -61
- data/lib/spec/example/example_matcher.rb +0 -43
- data/lib/spec/example/example_methods.rb +0 -152
- data/lib/spec/example/example_proxy.rb +0 -41
- data/lib/spec/example/module_reopening_fix.rb +0 -43
- data/lib/spec/example/pending.rb +0 -18
- data/lib/spec/example/predicate_matchers.rb +0 -46
- data/lib/spec/example/shared_example_group.rb +0 -59
- data/lib/spec/example/subject.rb +0 -108
- data/lib/spec/example.rb +0 -164
- data/lib/spec/expectations/errors.rb +0 -12
- data/lib/spec/expectations/extensions/kernel.rb +0 -52
- data/lib/spec/expectations/extensions.rb +0 -1
- data/lib/spec/expectations/fail_with.rb +0 -45
- data/lib/spec/expectations/handler.rb +0 -50
- data/lib/spec/expectations.rb +0 -35
- data/lib/spec/extensions/instance_exec.rb +0 -31
- data/lib/spec/interop/test/unit/autorunner.rb +0 -6
- data/lib/spec/interop/test/unit/testcase.rb +0 -56
- data/lib/spec/interop/test/unit/testresult.rb +0 -6
- data/lib/spec/interop/test/unit/testsuite_adapter.rb +0 -34
- data/lib/spec/interop/test/unit/ui/console/testrunner.rb +0 -61
- data/lib/spec/interop/test.rb +0 -44
- data/lib/spec/matchers/be.rb +0 -249
- data/lib/spec/matchers/be_close.rb +0 -32
- data/lib/spec/matchers/be_instance_of.rb +0 -26
- data/lib/spec/matchers/be_kind_of.rb +0 -26
- data/lib/spec/matchers/change.rb +0 -151
- data/lib/spec/matchers/compatibility.rb +0 -14
- data/lib/spec/matchers/dsl.rb +0 -20
- data/lib/spec/matchers/eql.rb +0 -42
- data/lib/spec/matchers/equal.rb +0 -53
- data/lib/spec/matchers/errors.rb +0 -5
- data/lib/spec/matchers/exist.rb +0 -16
- data/lib/spec/matchers/generated_descriptions.rb +0 -36
- data/lib/spec/matchers/has.rb +0 -35
- data/lib/spec/matchers/have.rb +0 -152
- data/lib/spec/matchers/include.rb +0 -44
- data/lib/spec/matchers/match.rb +0 -21
- data/lib/spec/matchers/match_array.rb +0 -71
- data/lib/spec/matchers/matcher.rb +0 -132
- data/lib/spec/matchers/method_missing.rb +0 -9
- data/lib/spec/matchers/operator_matcher.rb +0 -78
- data/lib/spec/matchers/pretty.rb +0 -37
- data/lib/spec/matchers/raise_exception.rb +0 -131
- data/lib/spec/matchers/respond_to.rb +0 -71
- data/lib/spec/matchers/satisfy.rb +0 -47
- data/lib/spec/matchers/simple_matcher.rb +0 -133
- data/lib/spec/matchers/throw_symbol.rb +0 -100
- data/lib/spec/matchers/wrap_expectation.rb +0 -55
- data/lib/spec/matchers.rb +0 -214
- data/lib/spec/mocks/argument_expectation.rb +0 -51
- data/lib/spec/mocks/argument_matchers.rb +0 -237
- data/lib/spec/mocks/error_generator.rb +0 -92
- data/lib/spec/mocks/errors.rb +0 -10
- data/lib/spec/mocks/example_methods.rb +0 -69
- data/lib/spec/mocks/extensions/object.rb +0 -3
- data/lib/spec/mocks/extensions.rb +0 -1
- data/lib/spec/mocks/framework.rb +0 -15
- data/lib/spec/mocks/message_expectation.rb +0 -344
- data/lib/spec/mocks/methods.rb +0 -94
- data/lib/spec/mocks/mock.rb +0 -71
- data/lib/spec/mocks/order_group.rb +0 -29
- data/lib/spec/mocks/proxy.rb +0 -266
- data/lib/spec/mocks/space.rb +0 -28
- data/lib/spec/mocks.rb +0 -200
- data/lib/spec/rake/spectask.rb +0 -230
- data/lib/spec/rake/verify_rcov.rb +0 -52
- data/lib/spec/ruby.rb +0 -9
- data/lib/spec/runner/backtrace_tweaker.rb +0 -77
- data/lib/spec/runner/class_and_arguments_parser.rb +0 -14
- data/lib/spec/runner/command_line.rb +0 -15
- data/lib/spec/runner/configuration.rb +0 -194
- data/lib/spec/runner/differs/default.rb +0 -93
- data/lib/spec/runner/differs/load-diff-lcs.rb +0 -12
- data/lib/spec/runner/drb_command_line.rb +0 -32
- data/lib/spec/runner/example_group_runner.rb +0 -58
- data/lib/spec/runner/extensions/kernel.rb +0 -9
- data/lib/spec/runner/formatter/base_formatter.rb +0 -139
- data/lib/spec/runner/formatter/base_text_formatter.rb +0 -142
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +0 -25
- data/lib/spec/runner/formatter/failing_examples_formatter.rb +0 -20
- data/lib/spec/runner/formatter/html_formatter.rb +0 -338
- data/lib/spec/runner/formatter/nested_text_formatter.rb +0 -50
- data/lib/spec/runner/formatter/no_op_method_missing.rb +0 -21
- data/lib/spec/runner/formatter/profile_formatter.rb +0 -47
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +0 -33
- data/lib/spec/runner/formatter/silent_formatter.rb +0 -10
- data/lib/spec/runner/formatter/snippet_extractor.rb +0 -52
- data/lib/spec/runner/formatter/specdoc_formatter.rb +0 -33
- data/lib/spec/runner/formatter/text_mate_formatter.rb +0 -16
- data/lib/spec/runner/heckle_runner.rb +0 -72
- data/lib/spec/runner/heckle_runner_unsupported.rb +0 -10
- data/lib/spec/runner/line_number_query.rb +0 -78
- data/lib/spec/runner/option_parser.rb +0 -225
- data/lib/spec/runner/options.rb +0 -405
- data/lib/spec/runner/reporter.rb +0 -171
- data/lib/spec/runner.rb +0 -66
- data/lib/spec/stubs/cucumber.rb +0 -5
- data/lib/spec/test/unit.rb +0 -10
- data/lib/spec/version.rb +0 -14
- data/lib/spec.rb +0 -8
- data/resources/helpers/cmdline.rb +0 -8
- data/resources/rake/examples.rake +0 -7
- data/resources/rake/examples_with_rcov.rake +0 -9
- data/resources/rake/failing_examples_with_html.rake +0 -9
- data/resources/rake/verify_rcov.rake +0 -7
- data/spec/README.jruby +0 -15
- data/spec/autotest/autotest_helper.rb +0 -8
- data/spec/autotest/autotest_matchers.rb +0 -38
- data/spec/autotest/discover_spec.rb +0 -8
- data/spec/autotest/failed_results_re_spec.rb +0 -31
- data/spec/autotest/rspec_spec.rb +0 -126
- data/spec/ruby_forker.rb +0 -13
- data/spec/spec/dsl/main_spec.rb +0 -95
- data/spec/spec/example/example_group_class_definition_spec.rb +0 -51
- data/spec/spec/example/example_group_factory_spec.rb +0 -180
- data/spec/spec/example/example_group_methods_spec.rb +0 -759
- data/spec/spec/example/example_group_proxy_spec.rb +0 -107
- data/spec/spec/example/example_group_spec.rb +0 -643
- data/spec/spec/example/example_matcher_spec.rb +0 -86
- data/spec/spec/example/example_methods_spec.rb +0 -162
- data/spec/spec/example/example_proxy_spec.rb +0 -57
- data/spec/spec/example/helper_method_spec.rb +0 -24
- data/spec/spec/example/nested_example_group_spec.rb +0 -71
- data/spec/spec/example/pending_module_spec.rb +0 -58
- data/spec/spec/example/predicate_matcher_spec.rb +0 -41
- data/spec/spec/example/shared_example_group_spec.rb +0 -257
- data/spec/spec/example/subclassing_example_group_spec.rb +0 -25
- data/spec/spec/example/subject_spec.rb +0 -103
- data/spec/spec/expectations/differs/default_spec.rb +0 -194
- data/spec/spec/expectations/extensions/kernel_spec.rb +0 -45
- data/spec/spec/expectations/fail_with_spec.rb +0 -96
- data/spec/spec/expectations/handler_spec.rb +0 -206
- data/spec/spec/expectations/wrap_expectation_spec.rb +0 -30
- data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +0 -10
- data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +0 -10
- data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +0 -10
- data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +0 -13
- data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +0 -10
- data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +0 -10
- data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +0 -10
- data/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb +0 -22
- data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +0 -38
- data/spec/spec/interop/test/unit/spec_spec.rb +0 -48
- data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +0 -18
- data/spec/spec/interop/test/unit/testcase_spec.rb +0 -50
- data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +0 -9
- data/spec/spec/matchers/be_close_spec.rb +0 -50
- data/spec/spec/matchers/be_instance_of_spec.rb +0 -36
- data/spec/spec/matchers/be_kind_of_spec.rb +0 -33
- data/spec/spec/matchers/be_spec.rb +0 -460
- data/spec/spec/matchers/change_spec.rb +0 -349
- data/spec/spec/matchers/compatibility_spec.rb +0 -28
- data/spec/spec/matchers/description_generation_spec.rb +0 -160
- data/spec/spec/matchers/dsl_spec.rb +0 -34
- data/spec/spec/matchers/eql_spec.rb +0 -33
- data/spec/spec/matchers/equal_spec.rb +0 -57
- data/spec/spec/matchers/exist_spec.rb +0 -65
- data/spec/spec/matchers/has_spec.rb +0 -190
- data/spec/spec/matchers/have_spec.rb +0 -396
- data/spec/spec/matchers/include_spec.rb +0 -88
- data/spec/spec/matchers/match_array_spec.rb +0 -108
- data/spec/spec/matchers/match_spec.rb +0 -57
- data/spec/spec/matchers/matcher_spec.rb +0 -289
- data/spec/spec/matchers/matchers_spec.rb +0 -2
- data/spec/spec/matchers/operator_matcher_spec.rb +0 -191
- data/spec/spec/matchers/raise_exception_spec.rb +0 -345
- data/spec/spec/matchers/respond_to_spec.rb +0 -116
- data/spec/spec/matchers/satisfy_spec.rb +0 -36
- data/spec/spec/matchers/simple_matcher_spec.rb +0 -93
- data/spec/spec/matchers/throw_symbol_spec.rb +0 -121
- data/spec/spec/mocks/and_yield_spec.rb +0 -117
- data/spec/spec/mocks/any_number_of_times_spec.rb +0 -36
- data/spec/spec/mocks/argument_expectation_spec.rb +0 -23
- data/spec/spec/mocks/argument_matchers_spec.rb +0 -19
- data/spec/spec/mocks/at_least_spec.rb +0 -97
- data/spec/spec/mocks/at_most_spec.rb +0 -93
- data/spec/spec/mocks/bug_report_10260_spec.rb +0 -8
- data/spec/spec/mocks/bug_report_10263_spec.rb +0 -27
- data/spec/spec/mocks/bug_report_11545_spec.rb +0 -32
- data/spec/spec/mocks/bug_report_15719_spec.rb +0 -30
- data/spec/spec/mocks/bug_report_496_spec.rb +0 -19
- data/spec/spec/mocks/bug_report_600_spec.rb +0 -22
- data/spec/spec/mocks/bug_report_7611_spec.rb +0 -19
- data/spec/spec/mocks/bug_report_7805_spec.rb +0 -22
- data/spec/spec/mocks/bug_report_8165_spec.rb +0 -31
- data/spec/spec/mocks/bug_report_8302_spec.rb +0 -26
- data/spec/spec/mocks/bug_report_830_spec.rb +0 -21
- data/spec/spec/mocks/double_spec.rb +0 -12
- data/spec/spec/mocks/failing_argument_matchers_spec.rb +0 -95
- data/spec/spec/mocks/hash_including_matcher_spec.rb +0 -90
- data/spec/spec/mocks/hash_not_including_matcher_spec.rb +0 -67
- data/spec/spec/mocks/mock_ordering_spec.rb +0 -94
- data/spec/spec/mocks/mock_space_spec.rb +0 -54
- data/spec/spec/mocks/mock_spec.rb +0 -594
- data/spec/spec/mocks/multiple_return_value_spec.rb +0 -113
- data/spec/spec/mocks/nil_expectation_warning_spec.rb +0 -53
- data/spec/spec/mocks/null_object_mock_spec.rb +0 -54
- data/spec/spec/mocks/once_counts_spec.rb +0 -53
- data/spec/spec/mocks/options_hash_spec.rb +0 -35
- data/spec/spec/mocks/partial_mock_spec.rb +0 -164
- data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +0 -66
- data/spec/spec/mocks/passing_argument_matchers_spec.rb +0 -145
- data/spec/spec/mocks/precise_counts_spec.rb +0 -52
- data/spec/spec/mocks/record_messages_spec.rb +0 -26
- data/spec/spec/mocks/stub_chain_spec.rb +0 -42
- data/spec/spec/mocks/stub_implementation_spec.rb +0 -31
- data/spec/spec/mocks/stub_spec.rb +0 -203
- data/spec/spec/mocks/stubbed_message_expectations_spec.rb +0 -26
- data/spec/spec/mocks/twice_counts_spec.rb +0 -67
- data/spec/spec/mocks/unstub_spec.rb +0 -127
- data/spec/spec/package/bin_spec_spec.rb +0 -16
- data/spec/spec/rake/spectask_spec.rb +0 -150
- data/spec/spec/runner/class_and_argument_parser_spec.rb +0 -23
- data/spec/spec/runner/command_line_spec.rb +0 -162
- data/spec/spec/runner/configuration_spec.rb +0 -320
- data/spec/spec/runner/drb_command_line_spec.rb +0 -146
- data/spec/spec/runner/empty_file.txt +0 -0
- data/spec/spec/runner/example_group_runner_spec.rb +0 -26
- data/spec/spec/runner/examples.txt +0 -2
- data/spec/spec/runner/failed.txt +0 -3
- data/spec/spec/runner/formatter/base_formatter_spec.rb +0 -30
- data/spec/spec/runner/formatter/base_text_formatter_spec.rb +0 -113
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +0 -45
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +0 -33
- data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +0 -377
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +0 -377
- data/spec/spec/runner/formatter/html_formatted-1.8.7.html +0 -377
- data/spec/spec/runner/formatter/html_formatted-1.9.1.html +0 -377
- data/spec/spec/runner/formatter/html_formatter_spec.rb +0 -118
- data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +0 -329
- data/spec/spec/runner/formatter/profile_formatter_spec.rb +0 -70
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +0 -149
- data/spec/spec/runner/formatter/snippet_extractor_spec.rb +0 -18
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +0 -159
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +0 -371
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +0 -371
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +0 -371
- data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +0 -371
- data/spec/spec/runner/formatter/text_mate_formatter_spec.rb +0 -106
- data/spec/spec/runner/heckle_runner_spec.rb +0 -78
- data/spec/spec/runner/heckler_spec.rb +0 -20
- data/spec/spec/runner/line_number_query/line_number_query_fixture.rb +0 -70
- data/spec/spec/runner/line_number_query_spec.rb +0 -129
- data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +0 -51
- data/spec/spec/runner/option_parser_spec.rb +0 -551
- data/spec/spec/runner/options_spec.rb +0 -554
- data/spec/spec/runner/output_one_time_fixture.rb +0 -7
- data/spec/spec/runner/output_one_time_fixture_runner.rb +0 -7
- data/spec/spec/runner/output_one_time_spec.rb +0 -15
- data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +0 -123
- data/spec/spec/runner/reporter_spec.rb +0 -244
- 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 +0 -1
- data/spec/spec/runner/resources/custom_example_group_runner.rb +0 -14
- data/spec/spec/runner/resources/utf8_encoded.rb +0 -8
- data/spec/spec/runner/spec.opts +0 -2
- data/spec/spec/runner/spec_drb.opts +0 -2
- data/spec/spec/runner/spec_spaced.opts +0 -2
- data/spec/spec/runner_spec.rb +0 -13
- data/spec/spec.opts +0 -6
- data/spec/spec_helper.rb +0 -112
- data/spec/support/macros.rb +0 -29
- data/spec/support/spec_classes.rb +0 -133
data/lib/spec/dsl/main.rb
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module DSL
|
|
3
|
-
module Main
|
|
4
|
-
include Spec::Example::ArgsAndOptions
|
|
5
|
-
|
|
6
|
-
# Creates and returns a class that includes the ExampleGroupMethods
|
|
7
|
-
# module. Which ExampleGroup type is created depends on the directory of the file
|
|
8
|
-
# calling this method. For example, Spec::Rails will use different
|
|
9
|
-
# classes for specs living in <tt>spec/models</tt>,
|
|
10
|
-
# <tt>spec/helpers</tt>, <tt>spec/views</tt> and
|
|
11
|
-
# <tt>spec/controllers</tt>.
|
|
12
|
-
#
|
|
13
|
-
# It is also possible to override autodiscovery of the example group
|
|
14
|
-
# type with an options Hash as the last argument:
|
|
15
|
-
#
|
|
16
|
-
# describe "name", :type => :something_special do ...
|
|
17
|
-
#
|
|
18
|
-
# The reason for using different example group classes is to have different
|
|
19
|
-
# matcher methods available from within the <tt>describe</tt> block.
|
|
20
|
-
#
|
|
21
|
-
# See Spec::Example::ExampleGroupFactory#register for details about how to
|
|
22
|
-
# register special implementations.
|
|
23
|
-
#
|
|
24
|
-
def describe(*args, &block)
|
|
25
|
-
raise Spec::Example::NoDescriptionError.new("example group", caller(0)[1]) if args.empty?
|
|
26
|
-
add_options(args, :scope => self)
|
|
27
|
-
set_location(args.options, caller(0)[1])
|
|
28
|
-
Spec::Example::ExampleGroupFactory.create_example_group(*args, &block)
|
|
29
|
-
end
|
|
30
|
-
alias :context :describe unless defined?(IRB::Context)
|
|
31
|
-
|
|
32
|
-
# Creates an example group that can be shared by other example groups
|
|
33
|
-
#
|
|
34
|
-
# == Examples
|
|
35
|
-
#
|
|
36
|
-
# share_examples_for "All Editions" do
|
|
37
|
-
# it "all editions behaviour" ...
|
|
38
|
-
# end
|
|
39
|
-
#
|
|
40
|
-
# describe SmallEdition do
|
|
41
|
-
# it_should_behave_like "All Editions"
|
|
42
|
-
#
|
|
43
|
-
# it "should do small edition stuff" do
|
|
44
|
-
# ...
|
|
45
|
-
# end
|
|
46
|
-
# end
|
|
47
|
-
def share_examples_for(*args, &block)
|
|
48
|
-
add_options(args)
|
|
49
|
-
set_location(args.options, caller(0)[1])
|
|
50
|
-
Spec::Example::ExampleGroupFactory.create_shared_example_group(*args, &block)
|
|
51
|
-
end
|
|
52
|
-
alias :shared_examples_for :share_examples_for
|
|
53
|
-
|
|
54
|
-
# Creates a Shared Example Group and assigns it to a constant
|
|
55
|
-
#
|
|
56
|
-
# share_as :AllEditions do
|
|
57
|
-
# it "should do all editions stuff" ...
|
|
58
|
-
# end
|
|
59
|
-
#
|
|
60
|
-
# describe SmallEdition do
|
|
61
|
-
# it_should_behave_like AllEditions
|
|
62
|
-
#
|
|
63
|
-
# it "should do small edition stuff" do
|
|
64
|
-
# ...
|
|
65
|
-
# end
|
|
66
|
-
# end
|
|
67
|
-
#
|
|
68
|
-
# And, for those of you who prefer to use something more like Ruby, you
|
|
69
|
-
# can just include the module directly
|
|
70
|
-
#
|
|
71
|
-
# describe SmallEdition do
|
|
72
|
-
# include AllEditions
|
|
73
|
-
#
|
|
74
|
-
# it "should do small edition stuff" do
|
|
75
|
-
# ...
|
|
76
|
-
# end
|
|
77
|
-
# end
|
|
78
|
-
def share_as(name, &block)
|
|
79
|
-
begin
|
|
80
|
-
args = [name]
|
|
81
|
-
add_options(args)
|
|
82
|
-
set_location(args.options, caller(0)[1])
|
|
83
|
-
Object.const_set(name, Spec::Example::ExampleGroupFactory.create_shared_example_group(*args, &block))
|
|
84
|
-
rescue NameError => e
|
|
85
|
-
raise NameError.new(e.message + "\nThe first argument to share_as must be a legal name for a constant\n")
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
include Spec::DSL::Main
|
data/lib/spec/dsl.rb
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require 'spec/dsl/main'
|
|
@@ -1,27 +0,0 @@
|
|
|
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
|
|
@@ -1,93 +0,0 @@
|
|
|
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
|
data/lib/spec/example/errors.rb
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
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
|
|
@@ -1,82 +0,0 @@
|
|
|
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
|
|
@@ -1,53 +0,0 @@
|
|
|
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
|
|
@@ -1,282 +0,0 @@
|
|
|
1
|
-
module Spec
|
|
2
|
-
module Example
|
|
3
|
-
|
|
4
|
-
module ExampleGroupMethods
|
|
5
|
-
class << self
|
|
6
|
-
attr_accessor :matcher_class
|
|
7
|
-
|
|
8
|
-
def build_description_from(*args)
|
|
9
|
-
text = args.inject("") do |description, arg|
|
|
10
|
-
description << " " unless (description == "" || arg.to_s =~ /^(\s|\.|#)/)
|
|
11
|
-
description << arg.to_s
|
|
12
|
-
end
|
|
13
|
-
text == "" ? nil : text
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
include Spec::Example::BeforeAndAfterHooks
|
|
18
|
-
include Spec::Example::Subject::ExampleGroupMethods
|
|
19
|
-
include Spec::Example::PredicateMatchers
|
|
20
|
-
include Spec::Example::ArgsAndOptions
|
|
21
|
-
|
|
22
|
-
attr_reader :location
|
|
23
|
-
|
|
24
|
-
def options # :nodoc:
|
|
25
|
-
@options ||= {}
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def inherited(klass) # :nodoc:
|
|
29
|
-
super
|
|
30
|
-
ExampleGroupFactory.register_example_group(klass)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
# Makes the describe/it syntax available from a class. For example:
|
|
34
|
-
#
|
|
35
|
-
# class StackSpec < Spec::ExampleGroup
|
|
36
|
-
# describe Stack, "with no elements"
|
|
37
|
-
#
|
|
38
|
-
# before
|
|
39
|
-
# @stack = Stack.new
|
|
40
|
-
# end
|
|
41
|
-
#
|
|
42
|
-
# it "should raise on pop" do
|
|
43
|
-
# lambda{ @stack.pop }.should raise_error
|
|
44
|
-
# end
|
|
45
|
-
# end
|
|
46
|
-
#
|
|
47
|
-
def describe(*args, &example_group_block)
|
|
48
|
-
raise Spec::Example::NoDescriptionError.new("example group", caller(0)[1]) if args.empty?
|
|
49
|
-
if example_group_block
|
|
50
|
-
options = add_options(args)
|
|
51
|
-
set_location(options, caller(0)[1])
|
|
52
|
-
if options[:shared]
|
|
53
|
-
ExampleGroupFactory.create_shared_example_group(*args, &example_group_block)
|
|
54
|
-
else
|
|
55
|
-
subclass(*args, &example_group_block)
|
|
56
|
-
end
|
|
57
|
-
else
|
|
58
|
-
set_description(*args)
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
alias :context :describe
|
|
62
|
-
|
|
63
|
-
# Use this to pull in examples from shared example groups.
|
|
64
|
-
def it_should_behave_like(*shared_example_groups)
|
|
65
|
-
shared_example_groups.each do |group|
|
|
66
|
-
include_shared_example_group(group)
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
# Creates an instance of the current example group class and adds it to
|
|
71
|
-
# a collection of examples of the current example group.
|
|
72
|
-
def example(description=nil, options={}, backtrace=nil, &implementation)
|
|
73
|
-
example_proxy = ExampleProxy.new(description, options, backtrace || caller(0)[1])
|
|
74
|
-
example_proxies << example_proxy
|
|
75
|
-
example_implementations[example_proxy] = implementation || pending_implementation
|
|
76
|
-
example_proxy
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
def pending_implementation
|
|
80
|
-
lambda { raise(Spec::Example::NotYetImplementedError) }
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
alias_method :it, :example
|
|
84
|
-
alias_method :specify, :example
|
|
85
|
-
|
|
86
|
-
# Use this to temporarily disable an example.
|
|
87
|
-
def xexample(description=nil, opts={}, &block)
|
|
88
|
-
Kernel.warn("Example disabled: #{description}")
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
alias_method :xit, :xexample
|
|
92
|
-
alias_method :xspecify, :xexample
|
|
93
|
-
|
|
94
|
-
def run(run_options)
|
|
95
|
-
examples = examples_to_run(run_options)
|
|
96
|
-
notify(run_options.reporter) unless examples.empty?
|
|
97
|
-
return true if examples.empty?
|
|
98
|
-
return dry_run(examples, run_options) if run_options.dry_run?
|
|
99
|
-
|
|
100
|
-
define_methods_from_predicate_matchers
|
|
101
|
-
|
|
102
|
-
success, before_all_instance_variables = run_before_all(run_options)
|
|
103
|
-
success, after_all_instance_variables = run_examples(success, before_all_instance_variables, examples, run_options)
|
|
104
|
-
success = run_after_all(success, after_all_instance_variables, run_options)
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
def set_description(*args)
|
|
108
|
-
@description_args, @options = args_and_options(*args)
|
|
109
|
-
@backtrace = caller(1)
|
|
110
|
-
@location = File.expand_path(options[:location]) if options[:location]
|
|
111
|
-
self
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
def notify(reporter) # :nodoc:
|
|
115
|
-
reporter.example_group_started(ExampleGroupProxy.new(self))
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
def description
|
|
119
|
-
@description ||= ExampleGroupMethods.build_description_from(*description_parts) || to_s
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
def described_type
|
|
123
|
-
@described_type ||= description_parts.reverse.find {|part| part.is_a?(Module)}
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
def described_class
|
|
127
|
-
@described_class ||= Class === described_type ? described_type : nil
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
def description_args
|
|
131
|
-
@description_args ||= []
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
def description_parts #:nodoc:
|
|
135
|
-
@description_parts ||= example_group_hierarchy.inject([]) do |parts, example_group_class|
|
|
136
|
-
[parts << example_group_class.description_args].flatten
|
|
137
|
-
end
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
def example_proxies # :nodoc:
|
|
141
|
-
@example_proxies ||= []
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
def example_implementations # :nodoc:
|
|
145
|
-
@example_implementations ||= {}
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
def examples(run_options=nil) #:nodoc:
|
|
149
|
-
(run_options && run_options.reverse) ? example_proxies.reverse : example_proxies
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
def number_of_examples #:nodoc:
|
|
153
|
-
example_proxies.length
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
def example_group_hierarchy
|
|
157
|
-
@example_group_hierarchy ||= ExampleGroupHierarchy.new(self)
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
def nested_descriptions
|
|
161
|
-
example_group_hierarchy.nested_descriptions
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
def include_constants_in(mod)
|
|
165
|
-
include mod if (Spec::Ruby.version.to_f >= 1.9) & (Module === mod) & !(Class === mod)
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
def let(name, &block)
|
|
169
|
-
define_method name do
|
|
170
|
-
@assignments ||= {}
|
|
171
|
-
@assignments[name] ||= instance_eval(&block)
|
|
172
|
-
end
|
|
173
|
-
end
|
|
174
|
-
|
|
175
|
-
private
|
|
176
|
-
|
|
177
|
-
def subclass(*args, &example_group_block)
|
|
178
|
-
@class_count ||= 0
|
|
179
|
-
@class_count += 1
|
|
180
|
-
klass = const_set("Subclass_#{@class_count}", Class.new(self))
|
|
181
|
-
klass.set_description(*args)
|
|
182
|
-
klass.include_constants_in(args.last[:scope])
|
|
183
|
-
klass.module_eval(&example_group_block)
|
|
184
|
-
klass
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
def dry_run(examples, run_options)
|
|
188
|
-
examples.each do |example|
|
|
189
|
-
run_options.reporter.example_started(example)
|
|
190
|
-
run_options.reporter.example_finished(example)
|
|
191
|
-
end
|
|
192
|
-
end
|
|
193
|
-
|
|
194
|
-
def run_before_all(run_options)
|
|
195
|
-
return [true,{}] if example_group_hierarchy.before_all_parts.empty?
|
|
196
|
-
example_proxy = ExampleProxy.new("before(:all)")
|
|
197
|
-
before_all = new(example_proxy)
|
|
198
|
-
begin
|
|
199
|
-
example_group_hierarchy.run_before_all(before_all)
|
|
200
|
-
return [true, before_all.instance_variable_hash]
|
|
201
|
-
rescue Exception => e
|
|
202
|
-
run_options.reporter.example_failed(example_proxy, e)
|
|
203
|
-
return [false, before_all.instance_variable_hash]
|
|
204
|
-
end
|
|
205
|
-
end
|
|
206
|
-
|
|
207
|
-
def run_examples(success, instance_variables, examples, run_options)
|
|
208
|
-
return [success, instance_variables] unless success
|
|
209
|
-
|
|
210
|
-
after_all_instance_variables = instance_variables
|
|
211
|
-
|
|
212
|
-
examples.each do |example|
|
|
213
|
-
example_group_instance = new(example, &example_implementations[example])
|
|
214
|
-
success &= example_group_instance.execute(run_options, instance_variables)
|
|
215
|
-
after_all_instance_variables = example_group_instance.instance_variable_hash
|
|
216
|
-
end
|
|
217
|
-
|
|
218
|
-
return [success, after_all_instance_variables]
|
|
219
|
-
end
|
|
220
|
-
|
|
221
|
-
def run_after_all(success, instance_variables, run_options)
|
|
222
|
-
return success if example_group_hierarchy.after_all_parts.empty?
|
|
223
|
-
example_proxy = ExampleProxy.new("after(:all)")
|
|
224
|
-
after_all = new(example_proxy)
|
|
225
|
-
after_all.set_instance_variables_from_hash(instance_variables)
|
|
226
|
-
example_group_hierarchy.run_after_all(after_all)
|
|
227
|
-
success
|
|
228
|
-
rescue Exception => e
|
|
229
|
-
run_options.reporter.example_failed(example_proxy, e)
|
|
230
|
-
false
|
|
231
|
-
end
|
|
232
|
-
|
|
233
|
-
def examples_to_run(run_options)
|
|
234
|
-
return example_proxies unless examples_were_specified?(run_options)
|
|
235
|
-
if run_options.line_number_requested?
|
|
236
|
-
if location =~ /:#{run_options.example_line}:?/
|
|
237
|
-
example_proxies
|
|
238
|
-
else
|
|
239
|
-
example_proxies.select {|proxy| proxy.location =~ /:#{run_options.example_line}:?/}
|
|
240
|
-
end
|
|
241
|
-
else
|
|
242
|
-
example_proxies.reject do |proxy|
|
|
243
|
-
matcher = ExampleGroupMethods.matcher_class.
|
|
244
|
-
new(description.to_s, proxy.description)
|
|
245
|
-
!matcher.matches?(run_options.examples)
|
|
246
|
-
end
|
|
247
|
-
end
|
|
248
|
-
end
|
|
249
|
-
|
|
250
|
-
def examples_were_specified?(run_options)
|
|
251
|
-
!run_options.examples.empty?
|
|
252
|
-
end
|
|
253
|
-
|
|
254
|
-
def method_added(name) # :nodoc:
|
|
255
|
-
example(name.to_s, {}, caller(0)[1]) {__send__ name.to_s} if example_method?(name.to_s)
|
|
256
|
-
end
|
|
257
|
-
|
|
258
|
-
def example_method?(method_name)
|
|
259
|
-
should_method?(method_name)
|
|
260
|
-
end
|
|
261
|
-
|
|
262
|
-
def should_method?(method_name)
|
|
263
|
-
!(method_name =~ /^should(_not)?$/) &&
|
|
264
|
-
method_name =~ /^should/ &&
|
|
265
|
-
instance_method(method_name).arity < 1
|
|
266
|
-
end
|
|
267
|
-
|
|
268
|
-
def include_shared_example_group(shared_example_group)
|
|
269
|
-
case shared_example_group
|
|
270
|
-
when SharedExampleGroup
|
|
271
|
-
include shared_example_group
|
|
272
|
-
else
|
|
273
|
-
unless example_group = SharedExampleGroup.find(shared_example_group)
|
|
274
|
-
raise RuntimeError.new("Shared Example Group '#{shared_example_group}' can not be found")
|
|
275
|
-
end
|
|
276
|
-
include(example_group)
|
|
277
|
-
end
|
|
278
|
-
end
|
|
279
|
-
end
|
|
280
|
-
|
|
281
|
-
end
|
|
282
|
-
end
|