newbamboo-rspec 1.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.autotest +4 -0
- data/History.txt +1263 -0
- data/License.txt +22 -0
- data/Manifest.txt +327 -0
- data/README.txt +57 -0
- data/Rakefile +104 -0
- data/TODO.txt +18 -0
- data/bin/autospec +4 -0
- data/bin/spec +4 -0
- data/examples/failing/README.txt +7 -0
- data/examples/failing/diffing_spec.rb +36 -0
- data/examples/failing/failing_autogenerated_docstrings_example.rb +19 -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 +40 -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 +20 -0
- data/examples/failing/predicate_example.rb +34 -0
- data/examples/failing/raising_example.rb +47 -0
- data/examples/failing/spec_helper.rb +3 -0
- data/examples/failing/syntax_error_example.rb +7 -0
- data/examples/failing/team_spec.rb +44 -0
- data/examples/failing/timeout_behaviour.rb +7 -0
- data/examples/passing/autogenerated_docstrings_example.rb +25 -0
- data/examples/passing/before_and_after_example.rb +40 -0
- data/examples/passing/behave_as_example.rb +45 -0
- data/examples/passing/custom_expectation_matchers.rb +54 -0
- data/examples/passing/custom_formatter.rb +12 -0
- data/examples/passing/dynamic_spec.rb +9 -0
- data/examples/passing/file_accessor.rb +19 -0
- data/examples/passing/file_accessor_spec.rb +38 -0
- data/examples/passing/greeter_spec.rb +31 -0
- data/examples/passing/helper_method_example.rb +14 -0
- data/examples/passing/io_processor.rb +8 -0
- data/examples/passing/io_processor_spec.rb +21 -0
- data/examples/passing/legacy_spec.rb +11 -0
- data/examples/passing/mocking_example.rb +27 -0
- data/examples/passing/multi_threaded_example_group_runner.rb +26 -0
- data/examples/passing/nested_classes_example.rb +36 -0
- data/examples/passing/partial_mock_example.rb +29 -0
- data/examples/passing/pending_example.rb +20 -0
- data/examples/passing/predicate_example.rb +27 -0
- data/examples/passing/priority.txt +1 -0
- data/examples/passing/shared_example_group_example.rb +81 -0
- data/examples/passing/shared_stack_examples.rb +36 -0
- data/examples/passing/simple_matcher_example.rb +31 -0
- data/examples/passing/spec_helper.rb +3 -0
- data/examples/passing/stack.rb +36 -0
- data/examples/passing/stack_spec.rb +64 -0
- data/examples/passing/stack_spec_with_nested_example_groups.rb +67 -0
- data/examples/passing/stubbing_example.rb +69 -0
- data/examples/passing/yielding_example.rb +33 -0
- data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +86 -0
- data/features/before_and_after_blocks/before_and_after_blocks.feature +168 -0
- data/features/example_groups/autogenerated_docstrings.feature +45 -0
- data/features/example_groups/example_group_with_should_methods.feature +17 -0
- data/features/example_groups/nested_groups.feature +17 -0
- data/features/example_groups/output.feature +20 -0
- data/features/interop/examples_and_tests_together.feature +31 -0
- data/features/interop/test_but_not_test_unit.feature +14 -0
- data/features/interop/test_case_with_should_methods.feature +17 -0
- data/features/mock_framework_integration/use_flexmock.feature +27 -0
- data/features/step_definitions/running_rspec.rb +54 -0
- data/features/support/env.rb +26 -0
- data/features/support/helpers/cmdline.rb +9 -0
- data/features/support/matchers/smart_match.rb +37 -0
- data/init.rb +9 -0
- data/lib/adapters/mock_frameworks/flexmock.rb +24 -0
- data/lib/adapters/mock_frameworks/mocha.rb +20 -0
- data/lib/adapters/mock_frameworks/rr.rb +22 -0
- data/lib/adapters/mock_frameworks/rspec.rb +20 -0
- data/lib/autotest/discover.rb +3 -0
- data/lib/autotest/rspec.rb +47 -0
- data/lib/spec/dsl/main.rb +87 -0
- data/lib/spec/dsl.rb +1 -0
- data/lib/spec/example/before_and_after_hooks.rb +99 -0
- data/lib/spec/example/errors.rb +30 -0
- data/lib/spec/example/example_group.rb +26 -0
- data/lib/spec/example/example_group_factory.rb +98 -0
- data/lib/spec/example/example_group_methods.rb +376 -0
- data/lib/spec/example/example_matcher.rb +44 -0
- data/lib/spec/example/example_methods.rb +137 -0
- data/lib/spec/example/module_reopening_fix.rb +21 -0
- data/lib/spec/example/pending.rb +18 -0
- data/lib/spec/example/shared_example_group.rb +59 -0
- data/lib/spec/example.rb +187 -0
- data/lib/spec/expectations/differs/default.rb +66 -0
- data/lib/spec/expectations/errors.rb +12 -0
- data/lib/spec/expectations/extensions/object.rb +63 -0
- data/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
- data/lib/spec/expectations/extensions.rb +2 -0
- data/lib/spec/expectations/handler.rb +32 -0
- data/lib/spec/expectations.rb +60 -0
- data/lib/spec/interop/test/unit/autorunner.rb +6 -0
- data/lib/spec/interop/test/unit/testcase.rb +73 -0
- data/lib/spec/interop/test/unit/testresult.rb +6 -0
- data/lib/spec/interop/test/unit/testsuite_adapter.rb +34 -0
- data/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
- data/lib/spec/interop/test.rb +12 -0
- data/lib/spec/matchers/be.rb +208 -0
- data/lib/spec/matchers/be_close.rb +21 -0
- data/lib/spec/matchers/change.rb +148 -0
- data/lib/spec/matchers/eql.rb +25 -0
- data/lib/spec/matchers/equal.rb +25 -0
- data/lib/spec/matchers/errors.rb +5 -0
- data/lib/spec/matchers/exist.rb +16 -0
- data/lib/spec/matchers/generated_descriptions.rb +48 -0
- data/lib/spec/matchers/has.rb +15 -0
- data/lib/spec/matchers/have.rb +150 -0
- data/lib/spec/matchers/include.rb +80 -0
- data/lib/spec/matchers/match.rb +22 -0
- data/lib/spec/matchers/match_array.rb +79 -0
- data/lib/spec/matchers/method_missing.rb +9 -0
- data/lib/spec/matchers/operator_matcher.rb +70 -0
- data/lib/spec/matchers/raise_error.rb +128 -0
- data/lib/spec/matchers/respond_to.rb +71 -0
- data/lib/spec/matchers/satisfy.rb +47 -0
- data/lib/spec/matchers/simple_matcher.rb +132 -0
- data/lib/spec/matchers/throw_symbol.rb +106 -0
- data/lib/spec/matchers/wrap_expectation.rb +55 -0
- data/lib/spec/matchers.rb +141 -0
- data/lib/spec/mocks/argument_expectation.rb +49 -0
- data/lib/spec/mocks/argument_matchers.rb +237 -0
- data/lib/spec/mocks/error_generator.rb +82 -0
- data/lib/spec/mocks/errors.rb +10 -0
- data/lib/spec/mocks/extensions/object.rb +3 -0
- data/lib/spec/mocks/extensions.rb +1 -0
- data/lib/spec/mocks/framework.rb +15 -0
- data/lib/spec/mocks/message_expectation.rb +331 -0
- data/lib/spec/mocks/methods.rb +51 -0
- data/lib/spec/mocks/mock.rb +55 -0
- data/lib/spec/mocks/order_group.rb +29 -0
- data/lib/spec/mocks/proxy.rb +230 -0
- data/lib/spec/mocks/space.rb +28 -0
- data/lib/spec/mocks/spec_methods.rb +55 -0
- data/lib/spec/mocks.rb +200 -0
- data/lib/spec/rake/spectask.rb +225 -0
- data/lib/spec/rake/verify_rcov.rb +52 -0
- data/lib/spec/ruby.rb +9 -0
- data/lib/spec/runner/backtrace_tweaker.rb +58 -0
- data/lib/spec/runner/class_and_arguments_parser.rb +14 -0
- data/lib/spec/runner/command_line.rb +35 -0
- data/lib/spec/runner/configuration.rb +166 -0
- data/lib/spec/runner/drb_command_line.rb +20 -0
- data/lib/spec/runner/example_group_runner.rb +70 -0
- data/lib/spec/runner/formatter/base_formatter.rb +79 -0
- data/lib/spec/runner/formatter/base_text_formatter.rb +127 -0
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +27 -0
- data/lib/spec/runner/formatter/failing_examples_formatter.rb +20 -0
- data/lib/spec/runner/formatter/html_formatter.rb +340 -0
- data/lib/spec/runner/formatter/nested_text_formatter.rb +65 -0
- data/lib/spec/runner/formatter/profile_formatter.rb +51 -0
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +34 -0
- data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
- data/lib/spec/runner/formatter/specdoc_formatter.rb +39 -0
- data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
- data/lib/spec/runner/heckle_runner.rb +74 -0
- data/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
- data/lib/spec/runner/option_parser.rb +204 -0
- data/lib/spec/runner/options.rb +320 -0
- data/lib/spec/runner/reporter.rb +167 -0
- data/lib/spec/runner/spec_parser.rb +73 -0
- data/lib/spec/runner.rb +88 -0
- data/lib/spec/version.rb +15 -0
- data/lib/spec.rb +7 -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/resources/spec/example_group_with_should_methods.rb +12 -0
- data/resources/spec/simple_spec.rb +8 -0
- data/resources/test/spec_and_test_together.rb +57 -0
- data/resources/test/spec_including_test_but_not_unit.rb +11 -0
- data/resources/test/test_case_with_should_methods.rb +30 -0
- data/rspec.gemspec +32 -0
- data/spec/README.jruby +15 -0
- data/spec/autotest/autotest_helper.rb +6 -0
- data/spec/autotest/autotest_matchers.rb +47 -0
- data/spec/autotest/discover_spec.rb +8 -0
- data/spec/autotest/failed_results_re_spec.rb +24 -0
- data/spec/autotest/rspec_spec.rb +114 -0
- data/spec/rspec_suite.rb +6 -0
- data/spec/ruby_forker.rb +13 -0
- data/spec/spec/dsl/main_spec.rb +88 -0
- data/spec/spec/example/example_group_class_definition_spec.rb +49 -0
- data/spec/spec/example/example_group_factory_spec.rb +224 -0
- data/spec/spec/example/example_group_methods_spec.rb +653 -0
- data/spec/spec/example/example_group_spec.rb +661 -0
- data/spec/spec/example/example_matcher_spec.rb +79 -0
- data/spec/spec/example/example_methods_spec.rb +204 -0
- data/spec/spec/example/helper_method_spec.rb +24 -0
- data/spec/spec/example/nested_example_group_spec.rb +71 -0
- data/spec/spec/example/pending_module_spec.rb +139 -0
- data/spec/spec/example/predicate_matcher_spec.rb +21 -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/expectations/differs/default_spec.rb +127 -0
- data/spec/spec/expectations/extensions/object_spec.rb +45 -0
- data/spec/spec/expectations/fail_with_spec.rb +71 -0
- data/spec/spec/expectations/wrap_expectation_spec.rb +30 -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/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 +49 -0
- data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
- data/spec/spec/matchers/be_close_spec.rb +41 -0
- data/spec/spec/matchers/be_spec.rb +303 -0
- data/spec/spec/matchers/change_spec.rb +329 -0
- data/spec/spec/matchers/description_generation_spec.rb +172 -0
- data/spec/spec/matchers/eql_spec.rb +29 -0
- data/spec/spec/matchers/equal_spec.rb +29 -0
- data/spec/spec/matchers/exist_spec.rb +57 -0
- data/spec/spec/matchers/handler_spec.rb +111 -0
- data/spec/spec/matchers/has_spec.rb +63 -0
- data/spec/spec/matchers/have_spec.rb +399 -0
- data/spec/spec/matchers/include_spec.rb +88 -0
- data/spec/spec/matchers/match_array_spec.rb +83 -0
- data/spec/spec/matchers/match_spec.rb +37 -0
- data/spec/spec/matchers/matcher_methods_spec.rb +66 -0
- data/spec/spec/matchers/operator_matcher_spec.rb +191 -0
- data/spec/spec/matchers/raise_error_spec.rb +333 -0
- data/spec/spec/matchers/respond_to_spec.rb +116 -0
- data/spec/spec/matchers/satisfy_spec.rb +36 -0
- data/spec/spec/matchers/simple_matcher_spec.rb +93 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +96 -0
- data/spec/spec/mocks/any_number_of_times_spec.rb +36 -0
- data/spec/spec/mocks/argument_expectation_spec.rb +23 -0
- data/spec/spec/mocks/at_least_spec.rb +97 -0
- data/spec/spec/mocks/at_most_spec.rb +93 -0
- data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
- data/spec/spec/mocks/bug_report_10263_spec.rb +24 -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.rb +19 -0
- data/spec/spec/mocks/bug_report_600_spec.rb +22 -0
- data/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
- data/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
- data/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
- data/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
- data/spec/spec/mocks/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 +84 -0
- data/spec/spec/mocks/mock_space_spec.rb +54 -0
- data/spec/spec/mocks/mock_spec.rb +579 -0
- data/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
- data/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
- data/spec/spec/mocks/null_object_mock_spec.rb +54 -0
- data/spec/spec/mocks/once_counts_spec.rb +53 -0
- data/spec/spec/mocks/options_hash_spec.rb +35 -0
- data/spec/spec/mocks/partial_mock_spec.rb +149 -0
- data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
- data/spec/spec/mocks/passing_argument_matchers_spec.rb +145 -0
- data/spec/spec/mocks/precise_counts_spec.rb +52 -0
- data/spec/spec/mocks/record_messages_spec.rb +26 -0
- data/spec/spec/mocks/stub_spec.rb +194 -0
- data/spec/spec/mocks/stubbed_message_expectations_spec.rb +14 -0
- data/spec/spec/mocks/twice_counts_spec.rb +67 -0
- data/spec/spec/package/bin_spec_spec.rb +22 -0
- data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
- data/spec/spec/runner/command_line_spec.rb +141 -0
- data/spec/spec/runner/configuration_spec.rb +301 -0
- data/spec/spec/runner/drb_command_line_spec.rb +97 -0
- data/spec/spec/runner/empty_file.txt +0 -0
- data/spec/spec/runner/example_group_runner_spec.rb +33 -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 +23 -0
- data/spec/spec/runner/formatter/base_text_formatter_spec.rb +23 -0
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +33 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.4.html +365 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +387 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.5.html +371 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +381 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +379 -0
- data/spec/spec/runner/formatter/html_formatted-1.8.7.html +379 -0
- data/spec/spec/runner/formatter/html_formatted-1.9.1.html +379 -0
- data/spec/spec/runner/formatter/html_formatter_spec.rb +62 -0
- data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +318 -0
- data/spec/spec/runner/formatter/profile_formatter_spec.rb +65 -0
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +145 -0
- data/spec/spec/runner/formatter/snippet_extractor_spec.rb +18 -0
- data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +104 -0
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +159 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +365 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +373 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +373 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +373 -0
- data/spec/spec/runner/heckle_runner_spec.rb +78 -0
- data/spec/spec/runner/heckler_spec.rb +20 -0
- data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +45 -0
- data/spec/spec/runner/option_parser_spec.rb +396 -0
- data/spec/spec/runner/options_spec.rb +469 -0
- data/spec/spec/runner/output_one_time_fixture.rb +7 -0
- data/spec/spec/runner/output_one_time_fixture_runner.rb +8 -0
- data/spec/spec/runner/output_one_time_spec.rb +16 -0
- data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +62 -0
- data/spec/spec/runner/reporter_spec.rb +238 -0
- data/spec/spec/runner/resources/a_bar.rb +0 -0
- data/spec/spec/runner/resources/a_foo.rb +0 -0
- data/spec/spec/runner/resources/a_spec.rb +1 -0
- data/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
- data/spec/spec/runner/resources/utf8_encoded.rb +7 -0
- data/spec/spec/runner/spec.opts +2 -0
- data/spec/spec/runner/spec_drb.opts +1 -0
- data/spec/spec/runner/spec_parser/spec_parser_fixture.rb +70 -0
- data/spec/spec/runner/spec_parser_spec.rb +91 -0
- data/spec/spec/runner/spec_spaced.opts +2 -0
- data/spec/spec/runner_spec.rb +11 -0
- data/spec/spec/spec_classes.rb +133 -0
- data/spec/spec/spec_spec.rb +21 -0
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +107 -0
- metadata +388 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module DSL
|
|
3
|
+
module Main
|
|
4
|
+
# Creates and returns a class that includes the ExampleGroupMethods
|
|
5
|
+
# module. Which ExampleGroup type is created depends on the directory of the file
|
|
6
|
+
# calling this method. For example, Spec::Rails will use different
|
|
7
|
+
# classes for specs living in <tt>spec/models</tt>,
|
|
8
|
+
# <tt>spec/helpers</tt>, <tt>spec/views</tt> and
|
|
9
|
+
# <tt>spec/controllers</tt>.
|
|
10
|
+
#
|
|
11
|
+
# It is also possible to override autodiscovery of the example group
|
|
12
|
+
# type with an options Hash as the last argument:
|
|
13
|
+
#
|
|
14
|
+
# describe "name", :type => :something_special do ...
|
|
15
|
+
#
|
|
16
|
+
# The reason for using different behaviour classes is to have different
|
|
17
|
+
# matcher methods available from within the <tt>describe</tt> block.
|
|
18
|
+
#
|
|
19
|
+
# See Spec::Example::ExampleGroupFactory#register for details about how to
|
|
20
|
+
# register special implementations.
|
|
21
|
+
#
|
|
22
|
+
def describe(*args, &block)
|
|
23
|
+
Spec::Example::add_spec_path_to(args)
|
|
24
|
+
Spec::Example::ExampleGroupFactory.assign_scope(self, args)
|
|
25
|
+
Spec::Example::ExampleGroupFactory.create_example_group(*args, &block)
|
|
26
|
+
end
|
|
27
|
+
alias :context :describe
|
|
28
|
+
|
|
29
|
+
# Creates an example group that can be shared by other example groups
|
|
30
|
+
#
|
|
31
|
+
# == Examples
|
|
32
|
+
#
|
|
33
|
+
# share_examples_for "All Editions" do
|
|
34
|
+
# it "all editions behaviour" ...
|
|
35
|
+
# end
|
|
36
|
+
#
|
|
37
|
+
# describe SmallEdition do
|
|
38
|
+
# it_should_behave_like "All Editions"
|
|
39
|
+
#
|
|
40
|
+
# it "should do small edition stuff" do
|
|
41
|
+
# ...
|
|
42
|
+
# end
|
|
43
|
+
# end
|
|
44
|
+
def share_examples_for(*args, &block)
|
|
45
|
+
Spec::Example::add_spec_path_to(args)
|
|
46
|
+
Spec::Example::ExampleGroupFactory.create_shared_example_group(*args, &block)
|
|
47
|
+
end
|
|
48
|
+
alias :shared_examples_for :share_examples_for
|
|
49
|
+
|
|
50
|
+
# Creates a Shared Example Group and assigns it to a constant
|
|
51
|
+
#
|
|
52
|
+
# share_as :AllEditions do
|
|
53
|
+
# it "should do all editions stuff" ...
|
|
54
|
+
# end
|
|
55
|
+
#
|
|
56
|
+
# describe SmallEdition do
|
|
57
|
+
# it_should_behave_like AllEditions
|
|
58
|
+
#
|
|
59
|
+
# it "should do small edition stuff" do
|
|
60
|
+
# ...
|
|
61
|
+
# end
|
|
62
|
+
# end
|
|
63
|
+
#
|
|
64
|
+
# And, for those of you who prefer to use something more like Ruby, you
|
|
65
|
+
# can just include the module directly
|
|
66
|
+
#
|
|
67
|
+
# describe SmallEdition do
|
|
68
|
+
# include AllEditions
|
|
69
|
+
#
|
|
70
|
+
# it "should do small edition stuff" do
|
|
71
|
+
# ...
|
|
72
|
+
# end
|
|
73
|
+
# end
|
|
74
|
+
def share_as(name, &block)
|
|
75
|
+
begin
|
|
76
|
+
args = [name]
|
|
77
|
+
Spec::Example::add_spec_path_to(args)
|
|
78
|
+
Object.const_set(name, Spec::Example::ExampleGroupFactory.create_shared_example_group(*args, &block))
|
|
79
|
+
rescue NameError => e
|
|
80
|
+
raise NameError.new(e.message + "\nThe first argument to share_as must be a legal name for a constant\n")
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
include Spec::DSL::Main
|
data/lib/spec/dsl.rb
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'spec/dsl/main'
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Example
|
|
3
|
+
module BeforeAndAfterHooks
|
|
4
|
+
class << self
|
|
5
|
+
def before_suite_parts
|
|
6
|
+
@before_suite_parts ||= []
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def after_suite_parts
|
|
10
|
+
@after_suite_parts ||= []
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Registers a block to be executed before each example.
|
|
15
|
+
# This method prepends +block+ to existing before blocks.
|
|
16
|
+
def prepend_before(*args, &block)
|
|
17
|
+
before_parts(*args).unshift(block)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Registers a block to be executed before each example.
|
|
21
|
+
# This method appends +block+ to existing before blocks.
|
|
22
|
+
def append_before(*args, &block)
|
|
23
|
+
before_parts(*args) << block
|
|
24
|
+
end
|
|
25
|
+
alias_method :before, :append_before
|
|
26
|
+
|
|
27
|
+
# Registers a block to be executed after each example.
|
|
28
|
+
# This method prepends +block+ to existing after blocks.
|
|
29
|
+
def prepend_after(*args, &block)
|
|
30
|
+
after_parts(*args).unshift(block)
|
|
31
|
+
end
|
|
32
|
+
alias_method :after, :prepend_after
|
|
33
|
+
|
|
34
|
+
# Registers a block to be executed after each example.
|
|
35
|
+
# This method appends +block+ to existing after blocks.
|
|
36
|
+
def append_after(*args, &block)
|
|
37
|
+
after_parts(*args) << block
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# TODO - deprecate this unless there is a reason why it exists
|
|
41
|
+
def remove_after(scope, &block) # :nodoc:
|
|
42
|
+
after_each_parts.delete(block)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Deprecated. Use before(:each)
|
|
46
|
+
def setup(&block)
|
|
47
|
+
before(:each, &block)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Deprecated. Use after(:each)
|
|
51
|
+
def teardown(&block)
|
|
52
|
+
after(:each, &block)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def before_all_parts # :nodoc:
|
|
56
|
+
@before_all_parts ||= []
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def after_all_parts # :nodoc:
|
|
60
|
+
@after_all_parts ||= []
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def before_each_parts # :nodoc:
|
|
64
|
+
@before_each_parts ||= []
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def after_each_parts # :nodoc:
|
|
68
|
+
@after_each_parts ||= []
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def before_suite_parts
|
|
72
|
+
BeforeAndAfterHooks.before_suite_parts
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def after_suite_parts
|
|
76
|
+
BeforeAndAfterHooks.after_suite_parts
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
private
|
|
80
|
+
|
|
81
|
+
def before_parts(*args)
|
|
82
|
+
case Spec::Example.scope_from(*args)
|
|
83
|
+
when :each; before_each_parts
|
|
84
|
+
when :all; before_all_parts
|
|
85
|
+
when :suite; before_suite_parts
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def after_parts(*args)
|
|
90
|
+
case Spec::Example.scope_from(*args)
|
|
91
|
+
when :each; after_each_parts
|
|
92
|
+
when :all; after_all_parts
|
|
93
|
+
when :suite; after_suite_parts
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Example
|
|
3
|
+
class ExamplePendingError < StandardError
|
|
4
|
+
attr_reader :pending_caller
|
|
5
|
+
|
|
6
|
+
def initialize(message=nil)
|
|
7
|
+
super
|
|
8
|
+
@pending_caller = caller[2]
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
class NotYetImplementedError < ExamplePendingError
|
|
13
|
+
MESSAGE = "Not Yet Implemented"
|
|
14
|
+
RSPEC_ROOT_LIB = File.expand_path(File.dirname(__FILE__) + "/../..")
|
|
15
|
+
|
|
16
|
+
def initialize(backtrace)
|
|
17
|
+
super(MESSAGE)
|
|
18
|
+
@pending_caller = pending_caller_from(backtrace)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def pending_caller_from(backtrace)
|
|
24
|
+
backtrace.detect {|line| !line.include?(RSPEC_ROOT_LIB) }
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
class PendingExampleFixedError < StandardError; end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Example
|
|
3
|
+
# Base class for customized example groups. Use this if you
|
|
4
|
+
# want to make a custom example group.
|
|
5
|
+
class ExampleGroup
|
|
6
|
+
extend Spec::Example::ExampleGroupMethods
|
|
7
|
+
include Spec::Example::ExampleMethods
|
|
8
|
+
|
|
9
|
+
def initialize(defined_description=nil, options={}, &implementation)
|
|
10
|
+
@_options = options
|
|
11
|
+
@_defined_description = defined_description
|
|
12
|
+
@_implementation = implementation || pending_implementation
|
|
13
|
+
@_backtrace = caller
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
private
|
|
17
|
+
|
|
18
|
+
def pending_implementation
|
|
19
|
+
error = NotYetImplementedError.new(caller)
|
|
20
|
+
lambda { raise(error) }
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
Spec::ExampleGroup = Spec::Example::ExampleGroup
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Example
|
|
3
|
+
class ExampleGroupFactory
|
|
4
|
+
module ClassMethods
|
|
5
|
+
def reset
|
|
6
|
+
@example_group_types = nil
|
|
7
|
+
default(ExampleGroup)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def registered_or_ancestor_of_registered?(example_group_classes) # :nodoc:
|
|
11
|
+
example_group_classes.each do |example_group_class|
|
|
12
|
+
return false unless registered_types.any? do |registered_type|
|
|
13
|
+
registered_type.ancestors.include? example_group_class
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
return true
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Registers an example group class +klass+ with the symbol +type+. For
|
|
20
|
+
# example:
|
|
21
|
+
#
|
|
22
|
+
# Spec::Example::ExampleGroupFactory.register(:farm, FarmExampleGroup)
|
|
23
|
+
#
|
|
24
|
+
# With that you can append a hash with :type => :farm to the describe
|
|
25
|
+
# method and it will load an instance of FarmExampleGroup.
|
|
26
|
+
#
|
|
27
|
+
# describe Pig, :type => :farm do
|
|
28
|
+
# ...
|
|
29
|
+
#
|
|
30
|
+
# If you don't use the hash explicitly, <tt>describe</tt> will
|
|
31
|
+
# implicitly use an instance of FarmExampleGroup for any file loaded
|
|
32
|
+
# from the <tt>./spec/farm</tt> directory.
|
|
33
|
+
def register(key, example_group_class)
|
|
34
|
+
@example_group_types[key.to_sym] = example_group_class
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Sets the default ExampleGroup class
|
|
38
|
+
def default(example_group_class)
|
|
39
|
+
old = @example_group_types
|
|
40
|
+
@example_group_types = Hash.new(example_group_class)
|
|
41
|
+
@example_group_types.merge!(old) if old
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def get(key=nil)
|
|
45
|
+
if @example_group_types.values.include?(key)
|
|
46
|
+
key
|
|
47
|
+
else
|
|
48
|
+
@example_group_types[key]
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def create_example_group(*args, &block)
|
|
53
|
+
raise ArgumentError if args.empty?
|
|
54
|
+
raise ArgumentError unless block
|
|
55
|
+
Spec::Example::add_spec_path_to(args)
|
|
56
|
+
superclass = determine_superclass(args.last)
|
|
57
|
+
superclass.describe(*args, &block)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def create_shared_example_group(*args, &block)
|
|
61
|
+
Spec::Example::add_spec_path_to(args)
|
|
62
|
+
SharedExampleGroup.register(*args, &block)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def include_constants_in(context, &block)
|
|
66
|
+
if (Spec::Ruby.version.to_f >= 1.9 && Module === context && !(Class === context))
|
|
67
|
+
return lambda {include context;instance_eval(&block)}
|
|
68
|
+
end
|
|
69
|
+
block
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def assign_scope(scope, args)
|
|
73
|
+
args.last[:scope] = scope
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
protected
|
|
77
|
+
|
|
78
|
+
def determine_superclass(opts)
|
|
79
|
+
key = if opts[:type]
|
|
80
|
+
opts[:type]
|
|
81
|
+
elsif opts[:spec_path] =~ /spec(\\|\/)(#{@example_group_types.keys.sort_by{|k| k.to_s.length}.reverse.join('|')})/
|
|
82
|
+
$2 == '' ? nil : $2.to_sym
|
|
83
|
+
end
|
|
84
|
+
get(key)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
private
|
|
88
|
+
|
|
89
|
+
def registered_types
|
|
90
|
+
@example_group_types.values
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
end
|
|
94
|
+
extend ClassMethods
|
|
95
|
+
self.reset
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|