rspec 1.0.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +7 -0
- data/History.rdoc +1546 -0
- data/{MIT-LICENSE → License.txt} +3 -1
- data/Manifest.txt +384 -0
- data/README.rdoc +41 -0
- data/Rakefile +94 -229
- data/Ruby1.9.rdoc +31 -0
- data/TODO.txt +17 -0
- data/Upgrade.rdoc +260 -0
- data/bin/autospec +4 -0
- data/bin/spec +5 -3
- data/cucumber.yml +5 -0
- data/examples/failing/README.txt +11 -0
- data/examples/failing/diffing_spec.rb +36 -0
- data/examples/failing/failing_implicit_docstrings_example.rb +17 -0
- data/examples/failing/failure_in_after.rb +10 -0
- data/examples/failing/failure_in_before.rb +10 -0
- data/examples/failing/mocking_example.rb +38 -0
- data/examples/failing/mocking_with_flexmock.rb +26 -0
- data/examples/failing/mocking_with_mocha.rb +25 -0
- data/examples/failing/mocking_with_rr.rb +27 -0
- data/examples/failing/partial_mock_example.rb +18 -0
- data/examples/failing/pending_example.rb +7 -0
- data/examples/failing/predicate_example.rb +32 -0
- data/examples/failing/raising_example.rb +47 -0
- data/examples/failing/syntax_error_example.rb +7 -0
- data/examples/failing/team_spec.rb +41 -0
- data/examples/failing/timeout_behaviour.rb +5 -0
- data/examples/{custom_formatter.rb → passing/custom_formatter.rb} +1 -1
- data/examples/passing/dynamic_spec.rb +7 -0
- data/examples/{file_accessor.rb → passing/file_accessor.rb} +18 -18
- data/examples/{file_accessor_spec.rb → passing/file_accessor_spec.rb} +37 -38
- data/examples/passing/filtered_formatter.rb +17 -0
- data/examples/passing/filtered_formatter_example.rb +31 -0
- data/examples/{greeter_spec.rb → passing/greeter_spec.rb} +1 -1
- data/examples/passing/helper_method_example.rb +12 -0
- data/examples/passing/implicit_docstrings_example.rb +16 -0
- data/examples/{io_processor.rb → passing/io_processor.rb} +8 -8
- data/examples/{io_processor_spec.rb → passing/io_processor_spec.rb} +2 -3
- data/examples/{mocking_example.rb → passing/mocking_example.rb} +0 -2
- data/examples/{multi_threaded_behaviour_runner.rb → passing/multi_threaded_example_group_runner.rb} +10 -9
- data/examples/passing/nested_classes_example.rb +35 -0
- data/examples/passing/options_example.rb +29 -0
- data/examples/passing/options_formatter.rb +20 -0
- data/examples/{partial_mock_example.rb → passing/partial_mock_example.rb} +2 -3
- data/examples/passing/pending_example.rb +18 -0
- data/examples/{predicate_example.rb → passing/predicate_example.rb} +1 -3
- data/examples/{shared_behaviours_example.rb → passing/shared_example_group_example.rb} +15 -11
- data/examples/passing/shared_stack_examples.rb +36 -0
- data/examples/passing/simple_matcher_example.rb +29 -0
- data/examples/{stack.rb → passing/stack.rb} +1 -1
- data/examples/{stack_spec.rb → passing/stack_spec.rb} +6 -40
- data/examples/passing/stack_spec_with_nested_example_groups.rb +66 -0
- data/examples/{stubbing_example.rb → passing/stubbing_example.rb} +1 -3
- data/examples/passing/yielding_example.rb +31 -0
- data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +85 -0
- data/features/before_and_after_blocks/before_and_after_blocks.feature +167 -0
- data/features/command_line/line_number_option.feature +56 -0
- data/features/command_line/line_number_option_with_example_with_no_name.feature +22 -0
- data/features/example_groups/define_example_attribute.feature +41 -0
- data/features/example_groups/example_group_with_should_methods.feature +29 -0
- data/features/example_groups/implicit_docstrings.feature +59 -0
- data/features/example_groups/nested_groups.feature +32 -0
- data/features/expectations/customized_message.feature +54 -0
- data/features/expectations/expect_change.feature +65 -0
- data/features/expectations/expect_error.feature +44 -0
- data/features/extensions/custom_example_group.feature +19 -0
- data/features/formatters/custom_formatter.feature +30 -0
- data/features/formatters/nested_formatter.feature +32 -0
- data/features/interop/cucumber_stubs_dont_leak.feature +11 -0
- data/features/interop/examples_and_tests_together.feature +84 -0
- data/features/interop/rspec_output.feature +25 -0
- data/features/interop/test_but_not_test_unit.feature +26 -0
- data/features/interop/test_case_with_should_methods.feature +46 -0
- data/features/load_paths/add_lib_to_load_path.feature +20 -0
- data/features/load_paths/add_spec_to_load_path.feature +20 -0
- data/features/matchers/define_diffable_matcher.feature +26 -0
- data/features/matchers/define_matcher.feature +179 -0
- data/features/matchers/define_matcher_outside_rspec.feature +38 -0
- data/features/matchers/define_matcher_with_fluent_interface.feature +48 -0
- data/features/matchers/define_wrapped_matcher.feature +56 -0
- data/features/matchers/match_unless_raises.feature +60 -0
- data/features/matchers/match_unless_raises_unexpected_error.feature +39 -0
- data/features/mock_framework_integration/use_flexmock.feature +27 -0
- data/features/mock_framework_integration/use_mocha.feature +27 -0
- data/features/mock_framework_integration/use_rr.feature +27 -0
- data/features/mocks/block_local_expectations.feature +62 -0
- data/features/mocks/mix_stubs_and_mocks.feature +22 -0
- data/features/mocks/stub_implementation.feature +26 -0
- data/features/pending/pending_examples.feature +81 -0
- data/features/runner/specify_line_number.feature +32 -0
- data/features/spec_helper/spec_helper.feature +25 -0
- data/features/step_definitions/running_rspec_steps.rb +52 -0
- data/features/step_definitions/stubbing_steps.rb +16 -0
- data/features/subject/explicit_subject.feature +31 -0
- data/features/subject/implicit_subject.feature +43 -0
- data/features/support/env.rb +83 -0
- data/features/support/matchers/smart_match.rb +31 -0
- data/geminstaller.yml +29 -0
- data/init.rb +9 -0
- data/lib/autotest/discover.rb +3 -0
- data/lib/autotest/rspec.rb +54 -0
- data/lib/spec/adapters/mock_frameworks/flexmock.rb +24 -0
- data/{plugins → lib/spec/adapters}/mock_frameworks/mocha.rb +8 -4
- data/lib/spec/adapters/mock_frameworks/rr.rb +22 -0
- data/lib/spec/adapters/mock_frameworks/rspec.rb +21 -0
- data/lib/spec/autorun.rb +3 -0
- data/lib/spec/deprecation.rb +41 -0
- data/lib/spec/dsl/main.rb +93 -0
- data/lib/spec/dsl.rb +1 -10
- data/lib/spec/example/args_and_options.rb +27 -0
- data/lib/spec/example/before_and_after_hooks.rb +93 -0
- data/lib/spec/example/errors.rb +25 -0
- data/lib/spec/example/example_group.rb +10 -0
- data/lib/spec/example/example_group_factory.rb +82 -0
- data/lib/spec/example/example_group_hierarchy.rb +53 -0
- data/lib/spec/example/example_group_methods.rb +287 -0
- data/lib/spec/example/example_group_proxy.rb +61 -0
- data/lib/spec/example/example_matcher.rb +43 -0
- data/lib/spec/example/example_methods.rb +152 -0
- data/lib/spec/example/example_proxy.rb +41 -0
- data/lib/spec/example/module_reopening_fix.rb +43 -0
- data/lib/spec/example/pending.rb +18 -0
- data/lib/spec/example/predicate_matchers.rb +46 -0
- data/lib/spec/example/shared_example_group.rb +59 -0
- data/lib/spec/example/subject.rb +114 -0
- data/lib/spec/example.rb +164 -0
- data/lib/spec/expectations/errors.rb +7 -1
- data/lib/spec/expectations/extensions/kernel.rb +52 -0
- data/lib/spec/expectations/extensions.rb +1 -2
- data/lib/spec/expectations/fail_with.rb +45 -0
- data/lib/spec/expectations/handler.rb +37 -30
- data/lib/spec/expectations.rb +2 -23
- data/lib/spec/extensions/instance_exec.rb +31 -0
- data/lib/spec/interop/test/unit/autorunner.rb +6 -0
- data/lib/spec/interop/test/unit/testcase.rb +56 -0
- data/lib/spec/interop/test/unit/testresult.rb +6 -0
- data/lib/spec/interop/test/unit/testsuite_adapter.rb +36 -0
- data/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
- data/lib/spec/interop/test.rb +44 -0
- data/lib/spec/matchers/be.rb +183 -140
- data/lib/spec/matchers/be_close.rb +18 -23
- data/lib/spec/matchers/be_instance_of.rb +26 -0
- data/lib/spec/matchers/be_kind_of.rb +26 -0
- data/lib/spec/matchers/change.rb +72 -41
- data/lib/spec/matchers/compatibility.rb +14 -0
- data/lib/spec/matchers/dsl.rb +20 -0
- data/lib/spec/matchers/eql.rb +25 -26
- data/lib/spec/matchers/equal.rb +35 -25
- data/lib/spec/matchers/errors.rb +5 -0
- data/lib/spec/matchers/exist.rb +16 -0
- data/lib/spec/matchers/generated_descriptions.rb +36 -0
- data/lib/spec/matchers/has.rb +17 -26
- data/lib/spec/matchers/have.rb +36 -24
- data/lib/spec/matchers/include.rb +22 -48
- data/lib/spec/matchers/match.rb +11 -31
- data/lib/spec/matchers/match_array.rb +71 -0
- data/lib/spec/matchers/matcher.rb +132 -0
- data/lib/spec/matchers/method_missing.rb +9 -0
- data/lib/spec/matchers/operator_matcher.rb +55 -44
- data/lib/spec/matchers/pretty.rb +37 -0
- data/lib/spec/matchers/raise_exception.rb +131 -0
- data/lib/spec/matchers/respond_to.rb +35 -9
- data/lib/spec/matchers/satisfy.rb +2 -2
- data/lib/spec/matchers/simple_matcher.rb +134 -0
- data/lib/spec/matchers/throw_symbol.rb +56 -31
- data/lib/spec/matchers/wrap_expectation.rb +55 -0
- data/lib/spec/matchers.rb +104 -48
- data/lib/spec/mocks/argument_expectation.rb +28 -112
- data/lib/spec/mocks/argument_matchers.rb +237 -0
- data/lib/spec/mocks/error_generator.rb +20 -13
- data/lib/spec/mocks/errors.rb +1 -1
- data/lib/spec/mocks/example_methods.rb +69 -0
- data/lib/spec/mocks/extensions.rb +1 -0
- data/lib/spec/mocks/framework.rb +15 -0
- data/lib/spec/mocks/message_expectation.rb +206 -93
- data/lib/spec/mocks/methods.rb +66 -7
- data/lib/spec/mocks/mock.rb +53 -11
- data/lib/spec/mocks/proxy.rb +160 -55
- data/lib/spec/mocks/space.rb +2 -2
- data/lib/spec/mocks.rb +14 -23
- data/lib/spec/rake/spectask.rb +108 -53
- data/lib/spec/rake/verify_rcov.rb +4 -4
- data/lib/spec/ruby.rb +9 -0
- data/lib/spec/runner/backtrace_tweaker.rb +45 -23
- data/lib/spec/runner/class_and_arguments_parser.rb +14 -0
- data/lib/spec/runner/command_line.rb +7 -14
- data/lib/spec/runner/configuration.rb +202 -0
- data/lib/spec/runner/differs/default.rb +93 -0
- data/lib/spec/runner/differs/load-diff-lcs.rb +12 -0
- data/lib/spec/runner/drb_command_line.rb +18 -7
- data/lib/spec/runner/example_group_runner.rb +58 -0
- data/lib/spec/runner/extensions/kernel.rb +5 -46
- data/lib/spec/runner/formatter/base_formatter.rb +97 -26
- data/lib/spec/runner/formatter/base_text_formatter.rb +79 -39
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +25 -0
- data/lib/spec/runner/formatter/failing_examples_formatter.rb +6 -8
- data/lib/spec/runner/formatter/html_formatter.rb +101 -75
- data/lib/spec/runner/formatter/nested_text_formatter.rb +50 -0
- data/lib/spec/runner/formatter/no_op_method_missing.rb +21 -0
- data/lib/spec/runner/formatter/profile_formatter.rb +47 -0
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +11 -8
- data/lib/spec/runner/formatter/silent_formatter.rb +10 -0
- data/lib/spec/runner/formatter/snippet_extractor.rb +2 -2
- data/lib/spec/runner/formatter/specdoc_formatter.rb +20 -15
- data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
- data/lib/spec/runner/heckle_runner.rb +56 -56
- data/lib/spec/runner/{heckle_runner_win.rb → heckle_runner_unsupported.rb} +10 -10
- data/lib/spec/runner/line_number_query.rb +78 -0
- data/lib/spec/runner/option_parser.rb +147 -148
- data/lib/spec/runner/options.rb +343 -95
- data/lib/spec/runner/reporter.rb +117 -60
- data/lib/spec/runner.rb +39 -138
- data/lib/spec/stubs/cucumber.rb +5 -0
- data/lib/spec/test/unit.rb +10 -0
- data/lib/spec/version.rb +14 -22
- data/lib/spec.rb +5 -10
- data/resources/helpers/cmdline.rb +8 -0
- data/resources/rake/examples.rake +7 -0
- data/resources/rake/examples_with_rcov.rake +9 -0
- data/resources/rake/failing_examples_with_html.rake +9 -0
- data/resources/rake/verify_rcov.rake +7 -0
- data/spec/README.jruby +15 -0
- data/spec/autotest/autotest_helper.rb +8 -0
- data/spec/autotest/autotest_matchers.rb +38 -0
- data/spec/autotest/discover_spec.rb +8 -0
- data/spec/autotest/failed_results_re_spec.rb +31 -0
- data/spec/autotest/rspec_spec.rb +126 -0
- data/spec/ruby_forker.rb +13 -0
- data/spec/spec/dsl/main_spec.rb +103 -0
- data/spec/spec/example/example_group_class_definition_spec.rb +51 -0
- data/spec/spec/example/example_group_factory_spec.rb +180 -0
- data/spec/spec/example/example_group_methods_spec.rb +778 -0
- data/spec/spec/example/example_group_proxy_spec.rb +107 -0
- data/spec/spec/example/example_group_spec.rb +632 -0
- data/spec/spec/example/example_matcher_spec.rb +85 -0
- data/spec/spec/example/example_methods_spec.rb +162 -0
- data/spec/spec/example/example_proxy_spec.rb +57 -0
- data/spec/spec/example/helper_method_spec.rb +24 -0
- data/spec/spec/{dsl/behaviour_eval_spec.rb → example/nested_example_group_spec.rb} +25 -3
- data/spec/spec/example/pending_module_spec.rb +58 -0
- data/spec/spec/example/predicate_matcher_spec.rb +41 -0
- data/spec/spec/example/shared_example_group_spec.rb +257 -0
- data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
- data/spec/spec/example/subject_spec.rb +110 -0
- data/spec/spec/expectations/differs/default_spec.rb +100 -13
- data/spec/spec/expectations/extensions/{object_spec.rb → kernel_spec.rb} +13 -14
- data/spec/spec/expectations/fail_with_spec.rb +42 -17
- data/spec/spec/expectations/handler_spec.rb +206 -0
- data/spec/spec/expectations/wrap_expectation_spec.rb +31 -0
- data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
- data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
- data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
- data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
- data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
- data/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb +22 -0
- data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
- data/spec/spec/interop/test/unit/spec_spec.rb +48 -0
- data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +18 -0
- data/spec/spec/interop/test/unit/testcase_spec.rb +50 -0
- data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
- data/spec/spec/matchers/be_close_spec.rb +32 -21
- data/spec/spec/matchers/be_instance_of_spec.rb +36 -0
- data/spec/spec/matchers/be_kind_of_spec.rb +33 -0
- data/spec/spec/matchers/be_spec.rb +261 -10
- data/spec/spec/matchers/change_spec.rb +178 -61
- data/spec/spec/matchers/compatibility_spec.rb +28 -0
- data/spec/spec/matchers/description_generation_spec.rb +47 -46
- data/spec/spec/matchers/dsl_spec.rb +34 -0
- data/spec/spec/matchers/eql_spec.rb +14 -9
- data/spec/spec/matchers/equal_spec.rb +43 -14
- data/spec/spec/matchers/exist_spec.rb +41 -24
- data/spec/spec/matchers/has_spec.rb +154 -1
- data/spec/spec/matchers/have_spec.rb +311 -189
- data/spec/spec/matchers/include_spec.rb +45 -2
- data/spec/spec/matchers/match_array_spec.rb +115 -0
- data/spec/spec/matchers/match_spec.rb +25 -5
- data/spec/spec/matchers/matcher_spec.rb +289 -0
- data/spec/spec/matchers/matchers_spec.rb +2 -0
- data/spec/spec/matchers/operator_matcher_spec.rb +48 -15
- data/spec/spec/matchers/raise_exception_spec.rb +345 -0
- data/spec/spec/matchers/respond_to_spec.rb +78 -16
- data/spec/spec/matchers/satisfy_spec.rb +1 -1
- data/spec/spec/matchers/simple_matcher_spec.rb +100 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +111 -41
- data/spec/spec/mocks/and_yield_spec.rb +117 -0
- data/spec/spec/mocks/any_number_of_times_spec.rb +9 -2
- data/spec/spec/mocks/argument_expectation_spec.rb +19 -15
- data/spec/spec/mocks/argument_matchers_spec.rb +19 -0
- data/spec/spec/mocks/at_least_spec.rb +2 -2
- data/spec/spec/mocks/at_most_spec.rb +3 -3
- data/spec/spec/mocks/bug_report_10260_spec.rb +1 -1
- data/spec/spec/mocks/bug_report_10263_spec.rb +27 -0
- data/spec/spec/mocks/bug_report_11545_spec.rb +32 -0
- data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
- data/spec/spec/mocks/bug_report_496_spec.rb +17 -0
- data/spec/spec/mocks/bug_report_600_spec.rb +22 -0
- data/spec/spec/mocks/bug_report_7611_spec.rb +2 -2
- data/spec/spec/mocks/bug_report_7805_spec.rb +2 -2
- data/spec/spec/mocks/bug_report_8165_spec.rb +4 -4
- data/spec/spec/mocks/bug_report_8302_spec.rb +2 -2
- data/spec/spec/mocks/bug_report_830_spec.rb +21 -0
- data/spec/spec/mocks/double_spec.rb +12 -0
- data/spec/spec/mocks/failing_argument_matchers_spec.rb +95 -0
- data/spec/spec/mocks/hash_including_matcher_spec.rb +90 -0
- data/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
- data/spec/spec/mocks/mock_ordering_spec.rb +15 -5
- data/spec/spec/mocks/mock_space_spec.rb +1 -1
- data/spec/spec/mocks/mock_spec.rb +346 -129
- data/spec/spec/mocks/multiple_return_value_spec.rb +9 -9
- data/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
- data/spec/spec/mocks/null_object_mock_spec.rb +15 -1
- data/spec/spec/mocks/once_counts_spec.rb +2 -2
- data/spec/spec/mocks/options_hash_spec.rb +19 -17
- data/spec/spec/mocks/partial_mock_spec.rb +124 -12
- data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +2 -2
- data/spec/spec/mocks/passing_argument_matchers_spec.rb +145 -0
- data/spec/spec/mocks/precise_counts_spec.rb +2 -2
- data/spec/spec/mocks/record_messages_spec.rb +2 -2
- data/spec/spec/mocks/stub_chain_spec.rb +42 -0
- data/spec/spec/mocks/stub_implementation_spec.rb +31 -0
- data/spec/spec/mocks/stub_spec.rb +147 -103
- data/spec/spec/mocks/stubbed_message_expectations_spec.rb +26 -0
- data/spec/spec/mocks/twice_counts_spec.rb +2 -2
- data/spec/spec/mocks/unstub_spec.rb +127 -0
- data/spec/spec/package/bin_spec_spec.rb +11 -7
- data/spec/spec/rake/spectask_spec.rb +150 -0
- data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
- data/spec/spec/runner/command_line_spec.rb +158 -29
- data/spec/spec/runner/configuration_spec.rb +320 -0
- data/spec/spec/runner/drb_command_line_spec.rb +137 -72
- data/spec/spec/runner/empty_file.txt +0 -0
- data/spec/spec/runner/example_group_runner_spec.rb +26 -0
- data/spec/spec/runner/examples.txt +2 -0
- data/spec/spec/runner/failed.txt +3 -0
- data/spec/spec/runner/formatter/base_formatter_spec.rb +30 -0
- data/spec/spec/runner/formatter/base_text_formatter_spec.rb +113 -0
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +17 -12
- data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +377 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +377 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.7.html +377 -0
- data/spec/spec/runner/formatter/html_formatted-1.9.1.html +377 -0
- data/spec/spec/runner/formatter/html_formatter_spec.rb +112 -52
- data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +329 -0
- data/spec/spec/runner/formatter/profile_formatter_spec.rb +70 -0
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +87 -16
- data/spec/spec/runner/formatter/snippet_extractor_spec.rb +14 -7
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +153 -50
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +371 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +371 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +371 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +371 -0
- data/spec/spec/runner/formatter/text_mate_formatter_spec.rb +106 -0
- data/spec/spec/runner/heckle_runner_spec.rb +32 -17
- data/spec/spec/runner/heckler_spec.rb +17 -11
- data/spec/spec/runner/line_number_query/line_number_query_fixture.rb +70 -0
- data/spec/spec/runner/line_number_query_spec.rb +129 -0
- data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +27 -21
- data/spec/spec/runner/option_parser_spec.rb +367 -164
- data/spec/spec/runner/options_spec.rb +506 -94
- data/spec/spec/runner/output_one_time_fixture.rb +7 -0
- data/spec/spec/runner/output_one_time_fixture_runner.rb +7 -0
- data/spec/spec/runner/output_one_time_spec.rb +15 -0
- data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +94 -27
- data/spec/spec/runner/reporter_spec.rb +212 -121
- data/spec/spec/runner/resources/a_bar.rb +0 -0
- data/spec/spec/runner/resources/a_foo.rb +0 -0
- data/spec/spec/runner/resources/a_spec.rb +1 -0
- data/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
- data/spec/spec/runner/resources/utf8_encoded.rb +8 -0
- data/spec/spec/runner/spec.opts +2 -0
- data/spec/spec/runner/spec_drb.opts +2 -0
- data/spec/spec/runner/spec_spaced.opts +2 -0
- data/spec/spec/runner_spec.rb +13 -0
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +87 -45
- data/spec/support/macros.rb +29 -0
- data/spec/{spec → support}/spec_classes.rb +26 -4
- metadata +461 -141
- data/CHANGES +0 -748
- data/EXAMPLES.rd +0 -108
- data/README +0 -70
- data/UPGRADE +0 -31
- data/bin/spec_translator +0 -8
- data/examples/auto_spec_description_example.rb +0 -19
- data/examples/before_and_after_example.rb +0 -39
- data/examples/behave_as_example.rb +0 -45
- data/examples/dynamic_spec.rb +0 -9
- data/examples/helper_method_example.rb +0 -11
- data/examples/legacy_spec.rb +0 -10
- data/examples/not_yet_implemented_spec.rb +0 -12
- data/examples/priority.txt +0 -1
- data/examples/spec_helper.rb +0 -1
- data/examples/test_case_adapter_example.rb +0 -26
- data/examples/test_case_spec.rb +0 -65
- data/lib/spec/dsl/behaviour.rb +0 -204
- data/lib/spec/dsl/behaviour_callbacks.rb +0 -77
- data/lib/spec/dsl/behaviour_eval.rb +0 -177
- data/lib/spec/dsl/behaviour_factory.rb +0 -42
- data/lib/spec/dsl/composite_proc_builder.rb +0 -28
- data/lib/spec/dsl/configuration.rb +0 -119
- data/lib/spec/dsl/description.rb +0 -46
- data/lib/spec/dsl/example.rb +0 -127
- data/lib/spec/dsl/example_matcher.rb +0 -28
- data/lib/spec/dsl/example_should_raise_handler.rb +0 -74
- data/lib/spec/expectations/differs/default.rb +0 -61
- data/lib/spec/expectations/extensions/object.rb +0 -66
- data/lib/spec/expectations/extensions/string_and_symbol.rb +0 -17
- data/lib/spec/extensions/object.rb +0 -6
- data/lib/spec/extensions.rb +0 -1
- data/lib/spec/matchers/raise_error.rb +0 -100
- data/lib/spec/mocks/argument_constraint_matchers.rb +0 -12
- data/lib/spec/mocks/spec_methods.rb +0 -30
- data/lib/spec/runner/behaviour_runner.rb +0 -102
- data/lib/spec/runner/extensions/object.rb +0 -32
- data/lib/spec/runner/formatter/failing_behaviours_formatter.rb +0 -25
- data/lib/spec/runner/formatter/rdoc_formatter.rb +0 -24
- data/lib/spec/runner/formatter.rb +0 -9
- data/lib/spec/runner/spec_parser.rb +0 -50
- data/lib/spec/test_case_adapter.rb +0 -10
- data/lib/spec/translator.rb +0 -106
- data/plugins/mock_frameworks/flexmock.rb +0 -27
- data/plugins/mock_frameworks/rspec.rb +0 -18
- data/spec/spec/dsl/behaviour_factory_spec.rb +0 -30
- data/spec/spec/dsl/behaviour_spec.rb +0 -604
- data/spec/spec/dsl/composite_proc_builder_spec.rb +0 -57
- data/spec/spec/dsl/configuration_spec.rb +0 -50
- data/spec/spec/dsl/description_spec.rb +0 -81
- data/spec/spec/dsl/example_class_spec.rb +0 -24
- data/spec/spec/dsl/example_instance_spec.rb +0 -162
- data/spec/spec/dsl/example_should_raise_spec.rb +0 -137
- data/spec/spec/dsl/predicate_matcher_spec.rb +0 -21
- data/spec/spec/dsl/shared_behaviour_spec.rb +0 -208
- data/spec/spec/matchers/handler_spec.rb +0 -88
- data/spec/spec/matchers/matcher_methods_spec.rb +0 -78
- data/spec/spec/matchers/raise_error_spec.rb +0 -147
- data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +0 -73
- data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +0 -92
- data/spec/spec/runner/behaviour_runner_spec.rb +0 -118
- data/spec/spec/runner/context_matching_spec.rb +0 -27
- data/spec/spec/runner/execution_context_spec.rb +0 -31
- data/spec/spec/runner/extensions/kernel_spec.rb +0 -36
- data/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +0 -27
- data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +0 -21
- data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +0 -36
- data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +0 -19
- data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +0 -46
- data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +0 -21
- data/spec/spec/runner/object_ext_spec.rb +0 -11
- data/spec/spec/runner/spec_matcher_spec.rb +0 -102
- data/spec/spec/runner/spec_parser_spec.rb +0 -93
- data/spec/spec/translator_spec.rb +0 -216
- /data/examples/{custom_expectation_matchers.rb → passing/custom_matchers.rb} +0 -0
data/examples/{multi_threaded_behaviour_runner.rb → passing/multi_threaded_example_group_runner.rb}
RENAMED
|
@@ -1,25 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
super
|
|
1
|
+
class MultiThreadedExampleGroupRunner < Spec::Runner::ExampleGroupRunner
|
|
2
|
+
def initialize(options, arg)
|
|
3
|
+
super(options)
|
|
5
4
|
# configure these
|
|
6
5
|
@thread_count = 4
|
|
7
6
|
@thread_wait = 0
|
|
8
7
|
end
|
|
9
8
|
|
|
10
|
-
def
|
|
9
|
+
def run
|
|
11
10
|
@threads = []
|
|
12
11
|
q = Queue.new
|
|
13
|
-
|
|
12
|
+
example_groups.each { |b| q << b}
|
|
13
|
+
success = true
|
|
14
14
|
@thread_count.times do
|
|
15
15
|
@threads << Thread.new(q) do |queue|
|
|
16
16
|
while not queue.empty?
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
example_group = queue.pop
|
|
18
|
+
success &= example_group.suite.run(nil)
|
|
19
19
|
end
|
|
20
20
|
end
|
|
21
21
|
sleep @thread_wait
|
|
22
22
|
end
|
|
23
23
|
@threads.each {|t| t.join}
|
|
24
|
+
success
|
|
24
25
|
end
|
|
25
|
-
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require 'examples/passing/stack'
|
|
2
|
+
|
|
3
|
+
class StackExamples < Spec::ExampleGroup
|
|
4
|
+
describe(Stack)
|
|
5
|
+
before(:each) do
|
|
6
|
+
@stack = Stack.new
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
class EmptyStackExamples < StackExamples
|
|
11
|
+
describe("when empty")
|
|
12
|
+
it "should be empty" do
|
|
13
|
+
@stack.should be_empty
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
class AlmostFullStackExamples < StackExamples
|
|
18
|
+
describe("when almost full")
|
|
19
|
+
before(:each) do
|
|
20
|
+
(1..9).each {|n| @stack.push n}
|
|
21
|
+
end
|
|
22
|
+
it "should be full" do
|
|
23
|
+
@stack.should_not be_full
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
class FullStackExamples < StackExamples
|
|
28
|
+
describe("when full")
|
|
29
|
+
before(:each) do
|
|
30
|
+
(1..10).each {|n| @stack.push n}
|
|
31
|
+
end
|
|
32
|
+
it "should be full" do
|
|
33
|
+
@stack.should be_full
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# This demonstrates the use of the options hash to support custom reporting.
|
|
2
|
+
# To see the result, run this command from the project root:
|
|
3
|
+
#
|
|
4
|
+
# bin/spec --require examples/passing/options_formatter.rb examples/passing/options_example.rb \
|
|
5
|
+
# --format OptionsFormatter
|
|
6
|
+
|
|
7
|
+
describe "this group will be reported", :report => true do
|
|
8
|
+
it "this example will be reported", :report => true do
|
|
9
|
+
# no-op
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "this example will not be reported", :report => false do
|
|
13
|
+
# no-op
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "this example will also not be reported", :foo => 'bar' do
|
|
17
|
+
# no-op
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "this example will also also not be reported" do
|
|
21
|
+
# no-op
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe "this group will not be reported", :report => false do
|
|
26
|
+
it "though this example will", :report => true do
|
|
27
|
+
# no-op
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# This is an example of how you can use a custom formatter to do custom
|
|
2
|
+
# reporting. This formatter will only report example groups and examples that
|
|
3
|
+
# have :report => true (or anything truthy) in the declaration. See
|
|
4
|
+
# options_example.rb in this directory.
|
|
5
|
+
|
|
6
|
+
require 'spec/runner/formatter/base_text_formatter'
|
|
7
|
+
|
|
8
|
+
class OptionsFormatter < Spec::Runner::Formatter::BaseTextFormatter
|
|
9
|
+
def example_started(proxy)
|
|
10
|
+
if proxy.options[:report]
|
|
11
|
+
puts proxy.description
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def example_group_started(proxy)
|
|
16
|
+
if proxy.options[:report]
|
|
17
|
+
puts proxy.description
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
describe "pending example (using pending method)" do
|
|
2
|
+
it %Q|should be reported as "PENDING: for some reason"| do
|
|
3
|
+
pending("for some reason")
|
|
4
|
+
end
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
describe "pending example (with no block)" do
|
|
8
|
+
it %Q|should be reported as "PENDING: Not Yet Implemented"|
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe "pending example (with block for pending)" do
|
|
12
|
+
it %Q|should have a failing block, passed to pending, reported as "PENDING: for some reason"| do
|
|
13
|
+
pending("for some reason") do
|
|
14
|
+
raise "some reason"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
module SharedBehaviourExample
|
|
1
|
+
module SharedExampleGroupExample
|
|
4
2
|
class OneThing
|
|
5
3
|
def what_things_do
|
|
6
4
|
"stuff"
|
|
@@ -13,7 +11,15 @@ module SharedBehaviourExample
|
|
|
13
11
|
end
|
|
14
12
|
end
|
|
15
13
|
|
|
16
|
-
|
|
14
|
+
class YetAnotherThing
|
|
15
|
+
def what_things_do
|
|
16
|
+
"stuff"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# A SharedExampleGroup is an example group that doesn't get run.
|
|
21
|
+
# You can create one like this:
|
|
22
|
+
share_examples_for "most things" do
|
|
17
23
|
def helper_method
|
|
18
24
|
"helper method"
|
|
19
25
|
end
|
|
@@ -24,16 +30,14 @@ module SharedBehaviourExample
|
|
|
24
30
|
end
|
|
25
31
|
|
|
26
32
|
describe OneThing do
|
|
27
|
-
|
|
33
|
+
# Now you can include the shared example group like this, which
|
|
34
|
+
# feels more like what you might say ...
|
|
35
|
+
it_should_behave_like "most things"
|
|
36
|
+
|
|
28
37
|
before(:each) { @thing = OneThing.new }
|
|
29
38
|
|
|
30
|
-
it "should have access to helper methods defined in the shared
|
|
39
|
+
it "should have access to helper methods defined in the shared example group" do
|
|
31
40
|
helper_method.should == "helper method"
|
|
32
41
|
end
|
|
33
42
|
end
|
|
34
|
-
|
|
35
|
-
describe AnotherThing do
|
|
36
|
-
it_should_behave_like "All Things"
|
|
37
|
-
before(:each) { @thing = AnotherThing.new }
|
|
38
|
-
end
|
|
39
43
|
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
shared_examples_for "non-empty Stack" do
|
|
2
|
+
|
|
3
|
+
it { @stack.should_not be_empty }
|
|
4
|
+
|
|
5
|
+
it "should return the top item when sent #peek" do
|
|
6
|
+
@stack.peek.should == @last_item_added
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "should NOT remove the top item when sent #peek" do
|
|
10
|
+
@stack.peek.should == @last_item_added
|
|
11
|
+
@stack.peek.should == @last_item_added
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should return the top item when sent #pop" do
|
|
15
|
+
@stack.pop.should == @last_item_added
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should remove the top item when sent #pop" do
|
|
19
|
+
@stack.pop.should == @last_item_added
|
|
20
|
+
unless @stack.empty?
|
|
21
|
+
@stack.pop.should_not == @last_item_added
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
shared_examples_for "non-full Stack" do
|
|
28
|
+
|
|
29
|
+
it { @stack.should_not be_full }
|
|
30
|
+
|
|
31
|
+
it "should add to the top when sent #push" do
|
|
32
|
+
@stack.push "newly added top item"
|
|
33
|
+
@stack.peek.should == "newly added top item"
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
describe "arrays" do
|
|
2
|
+
Spec::Matchers.define :contain_same_elements_as do |expected|
|
|
3
|
+
match do |actual|
|
|
4
|
+
if actual.size == expected.size
|
|
5
|
+
a, e = actual.dup, expected.dup
|
|
6
|
+
until e.empty? do
|
|
7
|
+
if i = a.index(e.pop) then a.delete_at(i) end
|
|
8
|
+
end
|
|
9
|
+
a.empty?
|
|
10
|
+
else
|
|
11
|
+
false
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe "can be matched by their contents disregarding order" do
|
|
17
|
+
subject { [1,2,2,3] }
|
|
18
|
+
it { should contain_same_elements_as([1,2,2,3]) }
|
|
19
|
+
it { should contain_same_elements_as([2,3,2,1]) }
|
|
20
|
+
it { should_not contain_same_elements_as([3,3,2,1]) }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe "fail the match with different contents" do
|
|
24
|
+
subject { [1,2,3] }
|
|
25
|
+
it { should_not contain_same_elements_as([2,3,4])}
|
|
26
|
+
it { should_not contain_same_elements_as([1,2,2,3])}
|
|
27
|
+
it { should_not contain_same_elements_as([1,2])}
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -1,48 +1,14 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
3
|
-
|
|
4
|
-
describe "non-empty Stack", :shared => true do
|
|
5
|
-
# NOTE that this one auto-generates the description "should not be empty"
|
|
6
|
-
it { @stack.should_not be_empty }
|
|
7
|
-
|
|
8
|
-
it "should return the top item when sent #peek" do
|
|
9
|
-
@stack.peek.should == @last_item_added
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
it "should NOT remove the top item when sent #peek" do
|
|
13
|
-
@stack.peek.should == @last_item_added
|
|
14
|
-
@stack.peek.should == @last_item_added
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
it "should return the top item when sent #pop" do
|
|
18
|
-
@stack.pop.should == @last_item_added
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
it "should remove the top item when sent #pop" do
|
|
22
|
-
@stack.pop.should == @last_item_added
|
|
23
|
-
unless @stack.empty?
|
|
24
|
-
@stack.pop.should_not == @last_item_added
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
describe "non-full Stack", :shared => true do
|
|
30
|
-
# NOTE that this one auto-generates the description "should not be full"
|
|
31
|
-
it { @stack.should_not be_full }
|
|
32
|
-
|
|
33
|
-
it "should add to the top when sent #push" do
|
|
34
|
-
@stack.push "newly added top item"
|
|
35
|
-
@stack.peek.should == "newly added top item"
|
|
36
|
-
end
|
|
37
|
-
end
|
|
1
|
+
require 'examples/passing/stack'
|
|
2
|
+
require 'examples/passing/shared_stack_examples'
|
|
38
3
|
|
|
39
4
|
describe Stack, " (empty)" do
|
|
40
5
|
before(:each) do
|
|
41
6
|
@stack = Stack.new
|
|
42
7
|
end
|
|
43
8
|
|
|
44
|
-
#
|
|
45
|
-
|
|
9
|
+
# This uses @stack (because the described class is Stack) auto-generates the
|
|
10
|
+
# description "should be empty"
|
|
11
|
+
it { should be_empty }
|
|
46
12
|
|
|
47
13
|
it_should_behave_like "non-full Stack"
|
|
48
14
|
|
|
@@ -94,4 +60,4 @@ describe Stack, " (full)" do
|
|
|
94
60
|
lambda { @stack.push Object.new }.should raise_error(StackOverflowError)
|
|
95
61
|
end
|
|
96
62
|
|
|
97
|
-
end
|
|
63
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
require 'examples/passing/stack'
|
|
2
|
+
require 'examples/passing/shared_stack_examples'
|
|
3
|
+
|
|
4
|
+
describe Stack do
|
|
5
|
+
|
|
6
|
+
before(:each) do
|
|
7
|
+
@stack = Stack.new
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe "(empty)" do
|
|
11
|
+
|
|
12
|
+
it { @stack.should be_empty }
|
|
13
|
+
|
|
14
|
+
it_should_behave_like "non-full Stack"
|
|
15
|
+
|
|
16
|
+
it "should complain when sent #peek" do
|
|
17
|
+
lambda { @stack.peek }.should raise_error(StackUnderflowError)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should complain when sent #pop" do
|
|
21
|
+
lambda { @stack.pop }.should raise_error(StackUnderflowError)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe "(with one item)" do
|
|
27
|
+
|
|
28
|
+
before(:each) do
|
|
29
|
+
@stack.push 3
|
|
30
|
+
@last_item_added = 3
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it_should_behave_like "non-empty Stack"
|
|
34
|
+
it_should_behave_like "non-full Stack"
|
|
35
|
+
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
describe "(with one item less than capacity)" do
|
|
39
|
+
|
|
40
|
+
before(:each) do
|
|
41
|
+
(1..9).each { |i| @stack.push i }
|
|
42
|
+
@last_item_added = 9
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it_should_behave_like "non-empty Stack"
|
|
46
|
+
it_should_behave_like "non-full Stack"
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
describe "(full)" do
|
|
50
|
+
|
|
51
|
+
before(:each) do
|
|
52
|
+
(1..10).each { |i| @stack.push i }
|
|
53
|
+
@last_item_added = 10
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it { @stack.should be_full }
|
|
57
|
+
|
|
58
|
+
it_should_behave_like "non-empty Stack"
|
|
59
|
+
|
|
60
|
+
it "should complain on #push" do
|
|
61
|
+
lambda { @stack.push Object.new }.should raise_error(StackOverflowError)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
class MessageAppender
|
|
2
|
+
|
|
3
|
+
def initialize(appendage)
|
|
4
|
+
@appendage = appendage
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def append_to(message)
|
|
8
|
+
if_told_to_yield do
|
|
9
|
+
message << @appendage
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe "a message expectation yielding to a block" do
|
|
16
|
+
it "should yield if told to" do
|
|
17
|
+
appender = MessageAppender.new("appended to")
|
|
18
|
+
appender.should_receive(:if_told_to_yield).and_yield
|
|
19
|
+
message = ""
|
|
20
|
+
appender.append_to(message)
|
|
21
|
+
message.should == "appended to"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should not yield if not told to" do
|
|
25
|
+
appender = MessageAppender.new("appended to")
|
|
26
|
+
appender.should_receive(:if_told_to_yield)
|
|
27
|
+
message = ""
|
|
28
|
+
appender.append_to(message)
|
|
29
|
+
message.should == ""
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# courtesy of Matthias Hennemeyer
|
|
2
|
+
#
|
|
3
|
+
# The following should pass against ruby 1.8 and 1.9. It currently only passes
|
|
4
|
+
# 1.8 (as of 1/2/2009)
|
|
5
|
+
#
|
|
6
|
+
# Once cucumber supports ruby 1.9, this should be moved to cucumber scenarios instead.
|
|
7
|
+
module Foo
|
|
8
|
+
module Bar
|
|
9
|
+
|
|
10
|
+
module ModuleInEnclosingModule;end
|
|
11
|
+
class ClassInEnclosingModule;end
|
|
12
|
+
def method_in_enclosing_module;end
|
|
13
|
+
CONSTANT_IN_ENCLOSING_MODULE = 0
|
|
14
|
+
|
|
15
|
+
describe "Examples trying to access constants defined in an enclosing module" do
|
|
16
|
+
|
|
17
|
+
it "can access Modules" do
|
|
18
|
+
ModuleInEnclosingModule
|
|
19
|
+
end
|
|
20
|
+
it "can access Classes" do
|
|
21
|
+
ClassInEnclosingModule.new
|
|
22
|
+
end
|
|
23
|
+
it "can access CONSTANTS" do
|
|
24
|
+
CONSTANT_IN_ENCLOSING_MODULE
|
|
25
|
+
end
|
|
26
|
+
it "can NOT access methods" do
|
|
27
|
+
lambda {method_in_enclosing_module}.should raise_error(/undefined/)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe "from a nested example group" do
|
|
31
|
+
|
|
32
|
+
it "can access Modules" do
|
|
33
|
+
ModuleInEnclosingModule
|
|
34
|
+
end
|
|
35
|
+
it "can access Classes" do
|
|
36
|
+
ClassInEnclosingModule.new
|
|
37
|
+
end
|
|
38
|
+
it "can access CONSTANTS" do
|
|
39
|
+
CONSTANT_IN_ENCLOSING_MODULE
|
|
40
|
+
end
|
|
41
|
+
it "can NOT access methods" do
|
|
42
|
+
lambda {method_in_enclosing_module}.should raise_error(/undefined/)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
describe "Examples trying to access constants defined in the example group" do
|
|
50
|
+
|
|
51
|
+
module ModuleDefinedInGroup;end
|
|
52
|
+
class ClassDefinedInGroup; end
|
|
53
|
+
def method_defined_in_group; end
|
|
54
|
+
CONSTANT_DEFINED_IN_GROUP = 0
|
|
55
|
+
|
|
56
|
+
it "can access Modules" do
|
|
57
|
+
ModuleDefinedInGroup
|
|
58
|
+
end
|
|
59
|
+
it "can access Classes" do
|
|
60
|
+
ClassDefinedInGroup.new
|
|
61
|
+
end
|
|
62
|
+
it "can access CONSTANTS" do
|
|
63
|
+
CONSTANT_DEFINED_IN_GROUP
|
|
64
|
+
end
|
|
65
|
+
it "can access methods" do
|
|
66
|
+
method_defined_in_group
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
describe "that live inside a nested group" do
|
|
70
|
+
it "can access Modules" do
|
|
71
|
+
ModuleDefinedInGroup
|
|
72
|
+
end
|
|
73
|
+
it "can access Classes" do
|
|
74
|
+
ClassDefinedInGroup.new
|
|
75
|
+
end
|
|
76
|
+
it "can access CONSTANTS" do
|
|
77
|
+
CONSTANT_DEFINED_IN_GROUP
|
|
78
|
+
end
|
|
79
|
+
it "can access methods" do
|
|
80
|
+
method_defined_in_group
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|