rspec 1.3.2 → 2.0.0.a2
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 +4 -6
- data/.gitignore +4 -14
- data/License.txt +1 -1
- data/README.markdown +46 -0
- data/Rakefile +26 -100
- data/lib/rspec.rb +4 -0
- data/lib/rspec/version.rb +14 -0
- data/rspec.gemspec +46 -19
- metadata +72 -673
- data/.autotest +0 -5
- data/Gemfile +0 -20
- data/History.rdoc +0 -1560
- data/README.rdoc +0 -44
- 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/example_spec.rb +0 -4
- 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 -43
- 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-pending/cli/conditional_exclusion.feature +0 -39
- data/features-pending/heckle/heckle.feature +0 -56
- 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 -37
- 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/init.rb +0 -9
- data/lib/autotest/discover.rb +0 -3
- data/lib/autotest/rspec.rb +0 -54
- data/lib/spec.rb +0 -8
- 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 -41
- data/lib/spec/dsl.rb +0 -1
- data/lib/spec/dsl/main.rb +0 -93
- data/lib/spec/example.rb +0 -164
- 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 -287
- 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 -114
- data/lib/spec/expectations.rb +0 -35
- data/lib/spec/expectations/errors.rb +0 -12
- data/lib/spec/expectations/extensions.rb +0 -1
- data/lib/spec/expectations/extensions/kernel.rb +0 -52
- data/lib/spec/expectations/fail_with.rb +0 -45
- data/lib/spec/expectations/handler.rb +0 -50
- data/lib/spec/extensions/instance_exec.rb +0 -31
- data/lib/spec/interop/test.rb +0 -44
- 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 -36
- data/lib/spec/interop/test/unit/ui/console/testrunner.rb +0 -61
- data/lib/spec/matchers.rb +0 -214
- 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 -83
- 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 -134
- data/lib/spec/matchers/throw_symbol.rb +0 -100
- data/lib/spec/matchers/wrap_expectation.rb +0 -55
- data/lib/spec/mocks.rb +0 -200
- 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.rb +0 -1
- data/lib/spec/mocks/extensions/object.rb +0 -3
- 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 -254
- data/lib/spec/mocks/space.rb +0 -28
- 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.rb +0 -66
- data/lib/spec/runner/backtrace_tweaker.rb +0 -78
- 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 -202
- 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 -77
- 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 -406
- data/lib/spec/runner/reporter.rb +0 -171
- data/lib/spec/stubs/cucumber.rb +0 -5
- data/lib/spec/test/unit.rb +0 -10
- data/lib/spec/version.rb +0 -14
- 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.opts +0 -6
- data/spec/spec/dsl/main_spec.rb +0 -103
- 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 -778
- data/spec/spec/example/example_group_proxy_spec.rb +0 -107
- data/spec/spec/example/example_group_spec.rb +0 -632
- data/spec/spec/example/example_matcher_spec.rb +0 -85
- 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 -110
- 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 -31
- 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 -381
- data/spec/spec/matchers/include_spec.rb +0 -88
- data/spec/spec/matchers/match_array_spec.rb +0 -115
- 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/pretty_spec.rb +0 -22
- 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 -100
- 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_1049_spec.rb +0 -30
- 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 -17
- 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/bug_report_957_spec.rb +0 -22
- 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 -601
- 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_formatted-1.9.2.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_formatted-1.9.2.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_helper.rb +0 -113
- data/spec/support/macros.rb +0 -29
- data/spec/support/spec_classes.rb +0 -133
@@ -1,180 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module Spec
|
4
|
-
module Example
|
5
|
-
describe ExampleGroupFactory do
|
6
|
-
describe "#get" do
|
7
|
-
attr_reader :example_group
|
8
|
-
before(:each) do
|
9
|
-
@example_group_class = Class.new(ExampleGroupDouble)
|
10
|
-
ExampleGroupFactory.register(:registered_type, @example_group_class)
|
11
|
-
end
|
12
|
-
|
13
|
-
after(:each) do
|
14
|
-
ExampleGroupFactory.reset
|
15
|
-
end
|
16
|
-
|
17
|
-
it "should return the default ExampleGroup type for nil" do
|
18
|
-
ExampleGroupFactory[nil].should == ExampleGroup
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should return the default ExampleGroup for an unregistered non-nil value" do
|
22
|
-
ExampleGroupFactory[:does_not_exist].should == ExampleGroup
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should return custom type if registered" do
|
26
|
-
ExampleGroupFactory[:registered_type].should == @example_group_class
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should get the custom type after setting the default" do
|
30
|
-
@alternate_example_group_class = Class.new(ExampleGroupDouble)
|
31
|
-
ExampleGroupFactory.default(@alternate_example_group_class)
|
32
|
-
ExampleGroupFactory[:registered_type].should == @example_group_class
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe "#create_example_group" do
|
37
|
-
attr_reader :parent_example_group
|
38
|
-
before do
|
39
|
-
@parent_example_group = Class.new(ExampleGroupDouble) do
|
40
|
-
def initialize(*args, &block)
|
41
|
-
;
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
it "should create a uniquely named class" do
|
47
|
-
example_group = Spec::Example::ExampleGroupFactory.create_example_group("example_group") {}
|
48
|
-
example_group.name.should =~ /Spec::Example::ExampleGroup::Subclass_\d+/
|
49
|
-
end
|
50
|
-
|
51
|
-
it "should create a Spec::Example::Example subclass by default" do
|
52
|
-
example_group = Spec::Example::ExampleGroupFactory.create_example_group("example_group") {}
|
53
|
-
example_group.superclass.should == Spec::Example::ExampleGroup
|
54
|
-
end
|
55
|
-
|
56
|
-
it "should raise when no description is given" do
|
57
|
-
lambda {
|
58
|
-
Spec::Example::ExampleGroupFactory.create_example_group do; end
|
59
|
-
}.should raise_error(ArgumentError)
|
60
|
-
end
|
61
|
-
|
62
|
-
it "should raise when no block is given" do
|
63
|
-
lambda { Spec::Example::ExampleGroupFactory.create_example_group "foo" }.should raise_error(ArgumentError)
|
64
|
-
end
|
65
|
-
|
66
|
-
it "should run registered ExampleGroups" do
|
67
|
-
example_group = Spec::Example::ExampleGroupFactory.create_example_group "The ExampleGroup" do end
|
68
|
-
Spec::Runner.options.example_groups.should include(example_group)
|
69
|
-
end
|
70
|
-
|
71
|
-
it "should not run unregistered ExampleGroups" do
|
72
|
-
example_group = Spec::Example::ExampleGroupFactory.create_example_group "The ExampleGroup" do Spec::Runner.options.remove_example_group self; end
|
73
|
-
Spec::Runner.options.example_groups.should_not include(example_group)
|
74
|
-
end
|
75
|
-
|
76
|
-
describe "with :type => :default" do
|
77
|
-
it "should create a Spec::Example::ExampleGroup" do
|
78
|
-
example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
79
|
-
"example_group", :type => :default
|
80
|
-
) {}
|
81
|
-
example_group.superclass.should == Spec::Example::ExampleGroup
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
describe "with :type => :something_other_than_default" do
|
86
|
-
it "should create the specified type" do
|
87
|
-
Spec::Example::ExampleGroupFactory.register(:something_other_than_default, parent_example_group)
|
88
|
-
non_default_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
89
|
-
"example_group", :type => :something_other_than_default
|
90
|
-
) {}
|
91
|
-
non_default_example_group.superclass.should == parent_example_group
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
it "should create a type indicated by :location" do
|
96
|
-
Spec::Example::ExampleGroupFactory.register(:something_other_than_default, parent_example_group)
|
97
|
-
custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
98
|
-
"example_group", :location => "./spec/something_other_than_default/some_spec.rb"
|
99
|
-
) {}
|
100
|
-
custom_example_group.superclass.should == parent_example_group
|
101
|
-
end
|
102
|
-
|
103
|
-
it "should create a type indicated by :location (with location generated by caller on windows)" do
|
104
|
-
Spec::Example::ExampleGroupFactory.register(:something_other_than_default, parent_example_group)
|
105
|
-
custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
106
|
-
"example_group",
|
107
|
-
:location => "./spec\\something_other_than_default\\some_spec.rb"
|
108
|
-
) {}
|
109
|
-
custom_example_group.superclass.should == parent_example_group
|
110
|
-
end
|
111
|
-
|
112
|
-
it "should create a type indicated by location for a path-like key" do
|
113
|
-
Spec::Example::ExampleGroupFactory.register('path/to/custom/', parent_example_group)
|
114
|
-
custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
115
|
-
"example_group", :location => "./spec/path/to/custom/some_spec.rb"
|
116
|
-
) {}
|
117
|
-
custom_example_group.superclass.should == parent_example_group
|
118
|
-
end
|
119
|
-
|
120
|
-
it "should use the longest key that matches when creating a type indicated by location" do
|
121
|
-
longer = Class.new parent_example_group
|
122
|
-
Spec::Example::ExampleGroupFactory.register(:longer, longer)
|
123
|
-
long = Class.new parent_example_group
|
124
|
-
Spec::Example::ExampleGroupFactory.register(:long, long)
|
125
|
-
custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
126
|
-
"example_group", :location => "./spec/longer/some_spec.rb"
|
127
|
-
) {}
|
128
|
-
custom_example_group.superclass.should == longer
|
129
|
-
end
|
130
|
-
|
131
|
-
describe "with :shared => true" do
|
132
|
-
def shared_example_group
|
133
|
-
@shared_example_group ||= Spec::Example::ExampleGroupFactory.create_example_group(
|
134
|
-
"name", :location => '/blah/spec/models/blah.rb', :type => :controller, :shared => true
|
135
|
-
) {}
|
136
|
-
end
|
137
|
-
|
138
|
-
it "should create and register a Spec::Example::SharedExampleGroup" do
|
139
|
-
shared_example_group.should be_an_instance_of(Spec::Example::SharedExampleGroup)
|
140
|
-
SharedExampleGroup.should include(shared_example_group)
|
141
|
-
end
|
142
|
-
end
|
143
|
-
|
144
|
-
it "should favor the :type over the :location" do
|
145
|
-
Spec::Example::ExampleGroupFactory.register(:something_other_than_default, parent_example_group)
|
146
|
-
custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
|
147
|
-
"name", :location => '/blah/spec/models/blah.rb', :type => :something_other_than_default
|
148
|
-
) {}
|
149
|
-
custom_example_group.superclass.should == parent_example_group
|
150
|
-
end
|
151
|
-
|
152
|
-
it "should register ExampleGroup by default" do
|
153
|
-
example_group = Spec::Example::ExampleGroupFactory.create_example_group("The ExampleGroup") do
|
154
|
-
end
|
155
|
-
Spec::Runner.options.example_groups.should include(example_group)
|
156
|
-
end
|
157
|
-
|
158
|
-
it "should enable unregistering of ExampleGroups" do
|
159
|
-
example_group = Spec::Example::ExampleGroupFactory.create_example_group("The ExampleGroup") do
|
160
|
-
Spec::Runner.options.remove_example_group self
|
161
|
-
end
|
162
|
-
Spec::Runner.options.example_groups.should_not include(example_group)
|
163
|
-
end
|
164
|
-
|
165
|
-
after(:each) do
|
166
|
-
Spec::Example::ExampleGroupFactory.reset
|
167
|
-
end
|
168
|
-
end
|
169
|
-
|
170
|
-
describe "#create_shared_example_group" do
|
171
|
-
it "registers a new shared example group" do
|
172
|
-
shared_example_group = Spec::Example::ExampleGroupFactory.create_shared_example_group("something shared") {}
|
173
|
-
shared_example_group.should be_an_instance_of(Spec::Example::SharedExampleGroup)
|
174
|
-
SharedExampleGroup.should include(shared_example_group)
|
175
|
-
end
|
176
|
-
end
|
177
|
-
|
178
|
-
end
|
179
|
-
end
|
180
|
-
end
|
@@ -1,778 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module Spec
|
4
|
-
module Example
|
5
|
-
describe 'ExampleGroupMethods' do
|
6
|
-
with_sandboxed_options do
|
7
|
-
attr_reader :example_group, :result, :reporter
|
8
|
-
before(:each) do
|
9
|
-
# See http://rspec.lighthouseapp.com/projects/5645-rspec/tickets/525-arity-changed-on-partial-mocks#ticket-525-2
|
10
|
-
method_with_three_args = lambda { |arg1, arg2, arg3| }
|
11
|
-
options.formatters << mock("formatter", :null_object => true, :example_pending => method_with_three_args)
|
12
|
-
options.backtrace_tweaker = mock("backtrace_tweaker", :null_object => true)
|
13
|
-
@reporter = FakeReporter.new(@options)
|
14
|
-
options.reporter = reporter
|
15
|
-
@example_group = Class.new(ExampleGroupDouble) do
|
16
|
-
describe("ExampleGroup")
|
17
|
-
it "does nothing"
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
after(:each) do
|
22
|
-
ExampleGroupDouble.reset
|
23
|
-
end
|
24
|
-
|
25
|
-
["describe","context"].each do |method|
|
26
|
-
describe "##{method}" do
|
27
|
-
describe "when creating an ExampleGroup" do
|
28
|
-
before(:each) do
|
29
|
-
@parent_example_group = Class.new(ExampleGroupDouble) do
|
30
|
-
example "first example" do; end
|
31
|
-
end
|
32
|
-
@child_example_group = @parent_example_group.__send__ method, "Child" do
|
33
|
-
example "second example" do; end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
it "should create a subclass of the ExampleGroup when passed a block" do
|
38
|
-
@child_example_group.superclass.should == @parent_example_group
|
39
|
-
options.example_groups.should include(@child_example_group)
|
40
|
-
end
|
41
|
-
|
42
|
-
it "should not inherit examples" do
|
43
|
-
@child_example_group.should have(1).examples
|
44
|
-
end
|
45
|
-
|
46
|
-
it "records the spec path" do
|
47
|
-
@child_example_group.location.should =~ /#{__FILE__}:#{__LINE__ - 15}/
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
describe "when creating an example group with no description" do
|
52
|
-
it "raises an ArgumentError" do
|
53
|
-
lambda do
|
54
|
-
Class.new(ExampleGroupDouble).describe
|
55
|
-
end.should raise_error(Spec::Example::NoDescriptionError, /No description supplied for example group declared on #{__FILE__}:#{__LINE__ - 1}/)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
describe "when creating a SharedExampleGroup" do
|
60
|
-
before(:each) do
|
61
|
-
@shared_example_group = @example_group.__send__ method, "A Shared ExampleGroup", :shared => true do; end
|
62
|
-
end
|
63
|
-
|
64
|
-
after(:each) do
|
65
|
-
SharedExampleGroup.instance_eval{@shared_example_groups}.delete @shared_example_group
|
66
|
-
end
|
67
|
-
|
68
|
-
it "should create a SharedExampleGroup" do
|
69
|
-
@shared_example_group.should_not be_nil
|
70
|
-
SharedExampleGroup.find("A Shared ExampleGroup").should == @shared_example_group
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
[:example, :specify, :it].each do |method|
|
78
|
-
describe "##{method.to_s}" do
|
79
|
-
it "should add an example" do
|
80
|
-
lambda {
|
81
|
-
@example_group.__send__(method, "")
|
82
|
-
}.should change { @example_group.examples.length }.by(1)
|
83
|
-
end
|
84
|
-
|
85
|
-
describe "with no location supplied" do
|
86
|
-
describe "creates an ExampleProxy" do
|
87
|
-
before(:all) do
|
88
|
-
@example_group = Class.new(ExampleGroupDouble).describe("bar")
|
89
|
-
@example_proxy = @example_group.__send__(method, "foo", {:this => :that}) {}
|
90
|
-
@location = "#{__FILE__}:#{__LINE__ - 1}"
|
91
|
-
end
|
92
|
-
|
93
|
-
specify "with a description" do
|
94
|
-
@example_proxy.description.should == "foo"
|
95
|
-
end
|
96
|
-
|
97
|
-
specify "with options" do
|
98
|
-
@example_proxy.options.should == {:this => :that}
|
99
|
-
end
|
100
|
-
|
101
|
-
specify "with a default backtrace (DEPRECATED)" do
|
102
|
-
Spec.stub!(:deprecate)
|
103
|
-
@example_proxy.backtrace.should =~ /#{@location}/
|
104
|
-
end
|
105
|
-
|
106
|
-
specify "with a default location" do
|
107
|
-
@example_proxy.location.should =~ /#{@location}/
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
describe "with a location supplied" do
|
113
|
-
describe "creates an ExampleProxy" do
|
114
|
-
before(:all) do
|
115
|
-
@example_group = Class.new(ExampleGroupDouble).describe("bar")
|
116
|
-
@example_proxy = @example_group.__send__(method, "foo", {:this => :that}, "the location") {}
|
117
|
-
end
|
118
|
-
|
119
|
-
specify "with the supplied location as #backtrace (DEPRECATED)" do
|
120
|
-
Spec.stub!(:deprecate)
|
121
|
-
@example_proxy.backtrace.should == "the location"
|
122
|
-
end
|
123
|
-
|
124
|
-
specify "with the supplied location as #location" do
|
125
|
-
@example_proxy.location.should == "the location"
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
[:xexample, :xit, :xspecify].each do |method|
|
135
|
-
describe "##{method.to_s}" do
|
136
|
-
before(:each) do
|
137
|
-
Kernel.stub!(:warn)
|
138
|
-
end
|
139
|
-
|
140
|
-
it "should NOT create an example" do
|
141
|
-
lambda {
|
142
|
-
@example_group.__send__(method,"")
|
143
|
-
}.should_not change(@example_group.examples, :length)
|
144
|
-
end
|
145
|
-
|
146
|
-
it "should warn that the example is disabled" do
|
147
|
-
Kernel.should_receive(:warn).with("Example disabled: foo")
|
148
|
-
@example_group.__send__(method,"foo")
|
149
|
-
end
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
describe "#examples" do
|
154
|
-
it "should have Examples" do
|
155
|
-
example_group = Class.new(ExampleGroupDouble) do
|
156
|
-
it "should exist" do; end
|
157
|
-
end
|
158
|
-
example_group.examples.length.should == 1
|
159
|
-
example_group.examples.first.description.should == "should exist"
|
160
|
-
end
|
161
|
-
|
162
|
-
it "should not include methods that begin with test (only when TU interop is loaded)" do
|
163
|
-
example_group = Class.new(ExampleGroupDouble) do
|
164
|
-
def test_any_args(*args)
|
165
|
-
true.should be_true
|
166
|
-
end
|
167
|
-
def test_something
|
168
|
-
1.should == 1
|
169
|
-
end
|
170
|
-
def test
|
171
|
-
raise "This is not a real test"
|
172
|
-
end
|
173
|
-
def testify
|
174
|
-
raise "This is not a real test"
|
175
|
-
end
|
176
|
-
def should_something
|
177
|
-
# forces the run
|
178
|
-
end
|
179
|
-
end
|
180
|
-
|
181
|
-
example_group.examples.length.should == 1
|
182
|
-
example_group.run(options).should be_true
|
183
|
-
end
|
184
|
-
|
185
|
-
it "should include methods that begin with should and has an arity of 0 in suite" do
|
186
|
-
example_group = Class.new(ExampleGroupDouble) do
|
187
|
-
def shouldCamelCase
|
188
|
-
true.should be_true
|
189
|
-
end
|
190
|
-
def should_any_args(*args)
|
191
|
-
true.should be_true
|
192
|
-
end
|
193
|
-
def should_something
|
194
|
-
1.should == 1
|
195
|
-
end
|
196
|
-
def should_not_something
|
197
|
-
1.should_not == 2
|
198
|
-
end
|
199
|
-
def should
|
200
|
-
raise "This is not a real example"
|
201
|
-
end
|
202
|
-
def should_not
|
203
|
-
raise "This is not a real example"
|
204
|
-
end
|
205
|
-
end
|
206
|
-
example_group.should have(4).examples
|
207
|
-
descriptions = example_group.examples.collect {|e| e.description}
|
208
|
-
descriptions.should include(
|
209
|
-
"shouldCamelCase",
|
210
|
-
"should_any_args",
|
211
|
-
"should_something",
|
212
|
-
"should_not_something")
|
213
|
-
descriptions.should_not include(
|
214
|
-
"should",
|
215
|
-
"should_not"
|
216
|
-
)
|
217
|
-
end
|
218
|
-
|
219
|
-
it "should not include methods that begin with test_ and has an arity > 0 in suite" do
|
220
|
-
example_group = Class.new(ExampleGroupDouble) do
|
221
|
-
def test_invalid(foo)
|
222
|
-
1.should == 1
|
223
|
-
end
|
224
|
-
def testInvalidCamelCase(foo)
|
225
|
-
1.should == 1
|
226
|
-
end
|
227
|
-
end
|
228
|
-
example_group.should have(:no).examples
|
229
|
-
end
|
230
|
-
|
231
|
-
it "should not include methods that begin with should_ and has an arity > 0 in suite" do
|
232
|
-
example_group = Class.new(ExampleGroupDouble) do
|
233
|
-
def should_invalid(foo)
|
234
|
-
1.should == 2
|
235
|
-
end
|
236
|
-
def shouldInvalidCamelCase(foo)
|
237
|
-
1.should == 3
|
238
|
-
end
|
239
|
-
def should_not_invalid(foo)
|
240
|
-
1.should == 4
|
241
|
-
end
|
242
|
-
def should_valid
|
243
|
-
1.should == 1
|
244
|
-
end
|
245
|
-
end
|
246
|
-
example_group.should have(1).examples
|
247
|
-
example_group.run(options).should be_true
|
248
|
-
end
|
249
|
-
|
250
|
-
it "should run should_methods" do
|
251
|
-
example_group = Class.new(ExampleGroupDouble) do
|
252
|
-
def should_valid
|
253
|
-
1.should == 2
|
254
|
-
end
|
255
|
-
end
|
256
|
-
example_group.should have(1).examples
|
257
|
-
example_group.run(options).should be_false
|
258
|
-
end
|
259
|
-
end
|
260
|
-
|
261
|
-
describe "#set_description" do
|
262
|
-
attr_reader :example_group
|
263
|
-
before do
|
264
|
-
class << example_group
|
265
|
-
public :set_description
|
266
|
-
end
|
267
|
-
end
|
268
|
-
|
269
|
-
describe "given a String" do
|
270
|
-
before(:each) do
|
271
|
-
example_group.set_description("abc")
|
272
|
-
end
|
273
|
-
|
274
|
-
specify ".description should return the String passed into .set_description" do
|
275
|
-
example_group.description.should == "abc"
|
276
|
-
end
|
277
|
-
|
278
|
-
specify ".described_type should provide nil as its type" do
|
279
|
-
example_group.described_type.should be_nil
|
280
|
-
end
|
281
|
-
end
|
282
|
-
|
283
|
-
describe "given a Class" do
|
284
|
-
before(:each) do
|
285
|
-
example_group.set_description(ExampleGroup)
|
286
|
-
end
|
287
|
-
|
288
|
-
specify ".description should return a String representation of that type (fully qualified) as its name" do
|
289
|
-
example_group.description.should == "Spec::Example::ExampleGroup"
|
290
|
-
end
|
291
|
-
|
292
|
-
specify ".described_type should return the passed in type" do
|
293
|
-
example_group.described_type.should == Spec::Example::ExampleGroup
|
294
|
-
end
|
295
|
-
end
|
296
|
-
|
297
|
-
describe "given a String and a Class" do
|
298
|
-
before(:each) do
|
299
|
-
example_group.set_description("behaving", ExampleGroup)
|
300
|
-
end
|
301
|
-
|
302
|
-
specify ".description should return String then space then Type" do
|
303
|
-
example_group.description.should == "behaving Spec::Example::ExampleGroup"
|
304
|
-
end
|
305
|
-
|
306
|
-
specify ".described_type should return the passed in type" do
|
307
|
-
example_group.described_type.should == Spec::Example::ExampleGroup
|
308
|
-
end
|
309
|
-
end
|
310
|
-
|
311
|
-
describe "given a Class and a String (starting with an alpha char)" do
|
312
|
-
before(:each) do
|
313
|
-
example_group.set_description(ExampleGroup, "behaving")
|
314
|
-
end
|
315
|
-
|
316
|
-
specify ".description should return the Type then space then String" do
|
317
|
-
example_group.description.should == "Spec::Example::ExampleGroup behaving"
|
318
|
-
end
|
319
|
-
end
|
320
|
-
|
321
|
-
describe "given a Class and a String (starting with a '.')" do
|
322
|
-
before(:each) do
|
323
|
-
example_group.set_description(ExampleGroup, ".behaving")
|
324
|
-
end
|
325
|
-
|
326
|
-
specify ".description should return the Type then String" do
|
327
|
-
example_group.description.should == "Spec::Example::ExampleGroup.behaving"
|
328
|
-
end
|
329
|
-
end
|
330
|
-
|
331
|
-
describe "#set_description(Class, String starting with #)" do
|
332
|
-
before(:each) do
|
333
|
-
example_group.set_description(ExampleGroup, "#behaving")
|
334
|
-
end
|
335
|
-
|
336
|
-
specify "should return the Class then String" do
|
337
|
-
example_group.description.should == "Spec::Example::ExampleGroup#behaving"
|
338
|
-
end
|
339
|
-
end
|
340
|
-
|
341
|
-
describe "#set_description(Class, String containing .)" do
|
342
|
-
before(:each) do
|
343
|
-
example_group.set_description(ExampleGroup, "calling a.b")
|
344
|
-
end
|
345
|
-
|
346
|
-
specify ".description should return the Type then space then String" do
|
347
|
-
example_group.description.should == "Spec::Example::ExampleGroup calling a.b"
|
348
|
-
end
|
349
|
-
end
|
350
|
-
|
351
|
-
describe "#set_description(Class, String containing #)" do
|
352
|
-
before(:each) do
|
353
|
-
example_group.set_description(ExampleGroup, "is #1")
|
354
|
-
end
|
355
|
-
|
356
|
-
specify ".description should return the Type then space then String" do
|
357
|
-
example_group.description.should == "Spec::Example::ExampleGroup is #1"
|
358
|
-
end
|
359
|
-
end
|
360
|
-
|
361
|
-
describe "#set_description(String, Type, String)" do
|
362
|
-
before(:each) do
|
363
|
-
example_group.set_description("A", Hash, "with one entry")
|
364
|
-
end
|
365
|
-
|
366
|
-
specify ".description should return the first String then space then Type then second String" do
|
367
|
-
example_group.description.should == "A Hash with one entry"
|
368
|
-
end
|
369
|
-
end
|
370
|
-
|
371
|
-
describe "#set_description(Hash representing options)" do
|
372
|
-
before(:each) do
|
373
|
-
example_group.set_description(:a => "b", :location => "blah")
|
374
|
-
end
|
375
|
-
|
376
|
-
it ".location should expand the passed in :location option passed into the constructor" do
|
377
|
-
example_group.location.should == File.expand_path("blah")
|
378
|
-
end
|
379
|
-
|
380
|
-
it ".options should return all the options passed in" do
|
381
|
-
example_group.options.should == {:a => "b", :location => "blah"}
|
382
|
-
end
|
383
|
-
|
384
|
-
end
|
385
|
-
end
|
386
|
-
|
387
|
-
describe "#description" do
|
388
|
-
it "should return the same description instance for each call" do
|
389
|
-
example_group.description.should eql(example_group.description)
|
390
|
-
end
|
391
|
-
|
392
|
-
it "should not add a space when description begins with #" do
|
393
|
-
child_example_group = Class.new(example_group) do
|
394
|
-
describe("#foobar", "Does something")
|
395
|
-
end
|
396
|
-
child_example_group.description.should == "ExampleGroup#foobar Does something"
|
397
|
-
end
|
398
|
-
|
399
|
-
it "should not add a space when description begins with ." do
|
400
|
-
child_example_group = Class.new(example_group) do
|
401
|
-
describe(".foobar", "Does something")
|
402
|
-
end
|
403
|
-
child_example_group.description.should == "ExampleGroup.foobar Does something"
|
404
|
-
end
|
405
|
-
|
406
|
-
it "should return the class name if nil" do
|
407
|
-
example_group.set_description(nil)
|
408
|
-
example_group.description.should =~ /Class:/
|
409
|
-
end
|
410
|
-
|
411
|
-
it "should return the class name if nil" do
|
412
|
-
example_group.set_description("")
|
413
|
-
example_group.description.should =~ /Class:/
|
414
|
-
end
|
415
|
-
|
416
|
-
it "is cached" do
|
417
|
-
example_group.set_description("describe me")
|
418
|
-
example_group.description.should be(example_group.description)
|
419
|
-
end
|
420
|
-
end
|
421
|
-
|
422
|
-
describe "#description_parts" do
|
423
|
-
it "should return an Array of the current class description args" do
|
424
|
-
example_group.description_parts.should == [example_group.description]
|
425
|
-
end
|
426
|
-
|
427
|
-
it "should return an Array of the description args from each class in the hierarchy" do
|
428
|
-
parent_example_group = Class.new(ExampleGroupDouble) do
|
429
|
-
describe("Parent")
|
430
|
-
end
|
431
|
-
|
432
|
-
child_example_group = Class.new(parent_example_group)
|
433
|
-
child_example_group.describe("Child", ExampleGroup)
|
434
|
-
child_example_group.description.should_not be_empty
|
435
|
-
|
436
|
-
grand_child_example_group = Class.new(child_example_group)
|
437
|
-
grand_child_example_group.describe("GrandChild", ExampleGroup)
|
438
|
-
grand_child_example_group.description.should_not be_empty
|
439
|
-
|
440
|
-
grand_child_example_group.description_parts.should == [
|
441
|
-
"Parent",
|
442
|
-
"Child",
|
443
|
-
Spec::Example::ExampleGroup,
|
444
|
-
"GrandChild",
|
445
|
-
Spec::Example::ExampleGroup
|
446
|
-
]
|
447
|
-
end
|
448
|
-
|
449
|
-
it "caches the description parts" do
|
450
|
-
example_group.description_parts.should equal(example_group.description_parts)
|
451
|
-
end
|
452
|
-
end
|
453
|
-
|
454
|
-
describe "#described_type" do
|
455
|
-
it "should return passed in type" do
|
456
|
-
child_example_group = Class.new(example_group) do
|
457
|
-
describe Object
|
458
|
-
end
|
459
|
-
child_example_group.described_type.should == Object
|
460
|
-
end
|
461
|
-
|
462
|
-
it "should return #described_type of superclass when no passed in type" do
|
463
|
-
parent_example_group = Class.new(ExampleGroupDouble) do
|
464
|
-
describe Object, "#foobar"
|
465
|
-
end
|
466
|
-
child_example_group = Class.new(parent_example_group) do
|
467
|
-
describe "not a type"
|
468
|
-
end
|
469
|
-
child_example_group.described_type.should == Object
|
470
|
-
end
|
471
|
-
|
472
|
-
it "is cached per example group" do
|
473
|
-
klass = Class.new
|
474
|
-
group = Class.new(ExampleGroupDouble) do
|
475
|
-
describe(klass)
|
476
|
-
end
|
477
|
-
group.should_receive(:description_parts).once.and_return([klass])
|
478
|
-
group.described_type
|
479
|
-
group.described_type
|
480
|
-
end
|
481
|
-
end
|
482
|
-
|
483
|
-
describe "#include" do
|
484
|
-
it "should have accessible class methods from included module" do
|
485
|
-
mod_method_called = false
|
486
|
-
mod = Module.new do
|
487
|
-
class_methods = Module.new do
|
488
|
-
define_method :mod_method do
|
489
|
-
mod_method_called = true
|
490
|
-
end
|
491
|
-
end
|
492
|
-
|
493
|
-
self.class.class_eval do
|
494
|
-
define_method(:included) do |receiver|
|
495
|
-
receiver.extend class_methods
|
496
|
-
end
|
497
|
-
end
|
498
|
-
end
|
499
|
-
|
500
|
-
@example_group.__send__ :include, mod
|
501
|
-
|
502
|
-
@example_group.mod_method
|
503
|
-
mod_method_called.should be_true
|
504
|
-
end
|
505
|
-
end
|
506
|
-
|
507
|
-
describe "#number_of_examples" do
|
508
|
-
it "should count number of examples" do
|
509
|
-
proc do
|
510
|
-
@example_group.it("one") {}
|
511
|
-
@example_group.it("two") {}
|
512
|
-
@example_group.it("three") {}
|
513
|
-
@example_group.it("four") {}
|
514
|
-
end.should change {@example_group.number_of_examples}.by(4)
|
515
|
-
end
|
516
|
-
end
|
517
|
-
|
518
|
-
describe "#class_eval" do
|
519
|
-
it "should allow constants to be defined" do
|
520
|
-
example_group = Class.new(ExampleGroupDouble) do
|
521
|
-
FOO = 1
|
522
|
-
it "should reference FOO" do
|
523
|
-
FOO.should == 1
|
524
|
-
end
|
525
|
-
end
|
526
|
-
success = example_group.run(options)
|
527
|
-
success.should be_true
|
528
|
-
Object.const_defined?(:FOO).should == false
|
529
|
-
end
|
530
|
-
end
|
531
|
-
|
532
|
-
describe '#register' do
|
533
|
-
after(:each) do
|
534
|
-
Spec::Runner.options.remove_example_group example_group
|
535
|
-
end
|
536
|
-
it "should add ExampleGroup to set of ExampleGroups to be run" do
|
537
|
-
Spec::Runner.options.add_example_group example_group
|
538
|
-
options.example_groups.should include(example_group)
|
539
|
-
end
|
540
|
-
end
|
541
|
-
|
542
|
-
describe '#remove_example_group' do
|
543
|
-
before(:each) do
|
544
|
-
Spec::Runner.options.add_example_group example_group
|
545
|
-
end
|
546
|
-
it "should remove ExampleGroup from set of ExampleGroups to be run" do
|
547
|
-
Spec::Runner.options.remove_example_group example_group
|
548
|
-
options.example_groups.should_not include(example_group)
|
549
|
-
end
|
550
|
-
end
|
551
|
-
|
552
|
-
describe "#run" do
|
553
|
-
describe "given an example group with at least one example" do
|
554
|
-
it "should call add_example_group" do
|
555
|
-
example_group = Class.new(ExampleGroupDouble) do
|
556
|
-
example("anything") {}
|
557
|
-
end
|
558
|
-
reporter.should_receive(:add_example_group)
|
559
|
-
example_group.run(options)
|
560
|
-
end
|
561
|
-
end
|
562
|
-
|
563
|
-
describe "given an example group with no examples" do
|
564
|
-
it "should NOT call add_example_group" do
|
565
|
-
example_group = Class.new(ExampleGroupDouble) do end
|
566
|
-
reporter.should_not_receive(:add_example_group)
|
567
|
-
example_group.run(options)
|
568
|
-
end
|
569
|
-
end
|
570
|
-
end
|
571
|
-
|
572
|
-
describe "#matcher_class=" do
|
573
|
-
it "should call new and matches? on the class used for matching examples" do
|
574
|
-
example_group = Class.new(ExampleGroupDouble) do
|
575
|
-
it "should do something" do end
|
576
|
-
def self.specified_examples
|
577
|
-
["something"]
|
578
|
-
end
|
579
|
-
def self.to_s
|
580
|
-
"TestMatcher"
|
581
|
-
end
|
582
|
-
end
|
583
|
-
|
584
|
-
matcher = mock("matcher")
|
585
|
-
matcher.should_receive(:matches?).with(["something"]).any_number_of_times
|
586
|
-
|
587
|
-
matcher_class = Class.new
|
588
|
-
matcher_class.should_receive(:new).with("TestMatcher", "should do something").and_return(matcher)
|
589
|
-
|
590
|
-
begin
|
591
|
-
ExampleGroupMethods.matcher_class = matcher_class
|
592
|
-
|
593
|
-
example_group.run(options)
|
594
|
-
ensure
|
595
|
-
ExampleGroupMethods.matcher_class = ExampleMatcher
|
596
|
-
end
|
597
|
-
end
|
598
|
-
end
|
599
|
-
|
600
|
-
describe "#options" do
|
601
|
-
it "should expose the options hash" do
|
602
|
-
group = describe("group", :this => 'hash') {}
|
603
|
-
group.options[:this].should == 'hash'
|
604
|
-
end
|
605
|
-
end
|
606
|
-
|
607
|
-
describe "#before" do
|
608
|
-
it "stores before(:each) blocks" do
|
609
|
-
example_group = Class.new(ExampleGroupDouble) {}
|
610
|
-
block = lambda {}
|
611
|
-
example_group.before(:each, &block)
|
612
|
-
example_group.before_each_parts.should include(block)
|
613
|
-
end
|
614
|
-
|
615
|
-
it "stores before(:all) blocks" do
|
616
|
-
example_group = Class.new(ExampleGroupDouble) {}
|
617
|
-
block = lambda {}
|
618
|
-
example_group.before(:all, &block)
|
619
|
-
example_group.before_all_parts.should include(block)
|
620
|
-
end
|
621
|
-
|
622
|
-
it "stores before(:suite) blocks" do
|
623
|
-
example_group = Class.new(ExampleGroupDouble) {}
|
624
|
-
parts = []
|
625
|
-
ExampleGroupMethods.stub!(:before_suite_parts).and_return(parts)
|
626
|
-
block = lambda {}
|
627
|
-
example_group.before(:suite, &block)
|
628
|
-
example_group.before_suite_parts.should include(block)
|
629
|
-
end
|
630
|
-
end
|
631
|
-
|
632
|
-
|
633
|
-
describe "#after" do
|
634
|
-
it "stores after(:each) blocks" do
|
635
|
-
example_group = Class.new(ExampleGroupDouble) {}
|
636
|
-
block = lambda {}
|
637
|
-
example_group.after(:each, &block)
|
638
|
-
example_group.after_each_parts.should include(block)
|
639
|
-
end
|
640
|
-
|
641
|
-
it "stores after(:all) blocks" do
|
642
|
-
example_group = Class.new(ExampleGroupDouble) {}
|
643
|
-
block = lambda {}
|
644
|
-
example_group.after(:all, &block)
|
645
|
-
example_group.after_all_parts.should include(block)
|
646
|
-
end
|
647
|
-
|
648
|
-
it "stores after(:suite) blocks" do
|
649
|
-
example_group = Class.new(ExampleGroupDouble) {}
|
650
|
-
parts = []
|
651
|
-
ExampleGroupMethods.stub!(:after_suite_parts).and_return(parts)
|
652
|
-
block = lambda {}
|
653
|
-
example_group.after(:suite, &block)
|
654
|
-
example_group.after_suite_parts.should include(block)
|
655
|
-
end
|
656
|
-
end
|
657
|
-
|
658
|
-
describe "#run_before_all" do
|
659
|
-
it "does not create an instance if before_all_parts are empty" do
|
660
|
-
example_group = Class.new(ExampleGroupDouble) { example("one example") {} }
|
661
|
-
example_group.should_not_receive(:new)
|
662
|
-
example_group.__send__ :run_before_all, nil
|
663
|
-
end
|
664
|
-
end
|
665
|
-
|
666
|
-
describe "#run_after_all" do
|
667
|
-
it "does not create an instance if after_all_parts are empty" do
|
668
|
-
example_group = Class.new(ExampleGroupDouble) { example("one example") {} }
|
669
|
-
example_group.should_not_receive(:new)
|
670
|
-
example_group.__send__ :run_after_all, true, {}, nil
|
671
|
-
end
|
672
|
-
end
|
673
|
-
|
674
|
-
describe "#examples_to_run" do
|
675
|
-
it "runs only the example identified by a line number" do
|
676
|
-
example_group = Class.new(ExampleGroupDouble).describe("this") do
|
677
|
-
it { 3.should == 3 }
|
678
|
-
it "has another example which raises" do
|
679
|
-
raise "this shouldn't have run"
|
680
|
-
end
|
681
|
-
end
|
682
|
-
options.examples << :ignore
|
683
|
-
options.line_number = __LINE__ - 6
|
684
|
-
options.files << __FILE__
|
685
|
-
example_group.run(options).should be_true
|
686
|
-
end
|
687
|
-
|
688
|
-
it "runs the example identified by a line number even if it's not the example line number" do
|
689
|
-
example_group = Class.new(ExampleGroupDouble).describe("this") do
|
690
|
-
|
691
|
-
it { raise "foo" }
|
692
|
-
|
693
|
-
end
|
694
|
-
options.examples << :ignore
|
695
|
-
options.line_number = __LINE__ - 3
|
696
|
-
options.files << __FILE__
|
697
|
-
example_group.run(options).should be_false
|
698
|
-
end
|
699
|
-
|
700
|
-
it "runs all the examples in the group " do
|
701
|
-
first_example_ran = false
|
702
|
-
second_example_ran = false
|
703
|
-
example_group = Class.new(ExampleGroupDouble).describe("this") do
|
704
|
-
|
705
|
-
it { first_example_ran = true }
|
706
|
-
it { second_example_ran = true }
|
707
|
-
|
708
|
-
end
|
709
|
-
options.line_number = __LINE__ - 6
|
710
|
-
options.files << __FILE__
|
711
|
-
options.examples << :ignore
|
712
|
-
example_group.run(options)
|
713
|
-
first_example_ran.should be_true
|
714
|
-
second_example_ran.should be_true
|
715
|
-
end
|
716
|
-
|
717
|
-
it "doesn't run any examples in another group" do
|
718
|
-
example_ran = false
|
719
|
-
example_group_1 = Class.new(ExampleGroupDouble).describe("this") do
|
720
|
-
it "ignore" do
|
721
|
-
example_ran = true
|
722
|
-
end
|
723
|
-
end
|
724
|
-
example_group_2 = Class.new(ExampleGroupDouble).describe("that") do
|
725
|
-
end
|
726
|
-
options.examples << :ignore
|
727
|
-
options.line_number = __LINE__ - 3
|
728
|
-
options.files << __FILE__
|
729
|
-
example_group_1.run(options)
|
730
|
-
example_group_2.run(options)
|
731
|
-
example_ran.should be_false
|
732
|
-
end
|
733
|
-
end
|
734
|
-
|
735
|
-
describe "#let" do
|
736
|
-
let(:counter) do
|
737
|
-
Class.new do
|
738
|
-
def initialize
|
739
|
-
@count = 0
|
740
|
-
end
|
741
|
-
def count
|
742
|
-
@count += 1
|
743
|
-
end
|
744
|
-
end.new
|
745
|
-
end
|
746
|
-
|
747
|
-
it "generates an instance method" do
|
748
|
-
counter.count.should == 1
|
749
|
-
end
|
750
|
-
|
751
|
-
it "caches the value" do
|
752
|
-
counter.count.should == 1
|
753
|
-
counter.count.should == 2
|
754
|
-
end
|
755
|
-
end
|
756
|
-
|
757
|
-
describe "#let!" do
|
758
|
-
let!(:creator) do
|
759
|
-
class Creator
|
760
|
-
@count = 0
|
761
|
-
def self.count
|
762
|
-
@count += 1
|
763
|
-
end
|
764
|
-
end
|
765
|
-
end
|
766
|
-
|
767
|
-
it "evaluates the value non-lazily" do
|
768
|
-
lambda { Creator.count }.should_not raise_error
|
769
|
-
end
|
770
|
-
|
771
|
-
it "does not interfere between tests" do
|
772
|
-
Creator.count.should == 1
|
773
|
-
end
|
774
|
-
end
|
775
|
-
end
|
776
|
-
end
|
777
|
-
end
|
778
|
-
end
|