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
data/lib/spec/example.rb
ADDED
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
# == Example Groups and Code Examples
|
|
3
|
+
#
|
|
4
|
+
# A Code Example is an executable example of how a bit of code is expected
|
|
5
|
+
# to behave.
|
|
6
|
+
#
|
|
7
|
+
# An Example Group is a group of code examples.
|
|
8
|
+
#
|
|
9
|
+
# RSpec exposes a DSL to describe groups of examples.
|
|
10
|
+
#
|
|
11
|
+
# describe Account do
|
|
12
|
+
# it "should have a balance of $0" do
|
|
13
|
+
# account = Account.new
|
|
14
|
+
# account.balance.should == Money.new(0, :dollars)
|
|
15
|
+
# end
|
|
16
|
+
# end
|
|
17
|
+
#
|
|
18
|
+
# == Before and After
|
|
19
|
+
#
|
|
20
|
+
# You can use the <tt>before()</tt> and <tt>after()</tt> methods to extract
|
|
21
|
+
# common code within an Example Group. Both methods take an optional scope
|
|
22
|
+
# argument so you can run the block before :each example or before :all
|
|
23
|
+
# examples
|
|
24
|
+
#
|
|
25
|
+
# describe "..." do
|
|
26
|
+
# before :all do
|
|
27
|
+
# ...
|
|
28
|
+
# end
|
|
29
|
+
#
|
|
30
|
+
# before :each do
|
|
31
|
+
# ...
|
|
32
|
+
# end
|
|
33
|
+
#
|
|
34
|
+
# it "should do something" do
|
|
35
|
+
# ...
|
|
36
|
+
# end
|
|
37
|
+
#
|
|
38
|
+
# it "should do something else" do
|
|
39
|
+
# ...
|
|
40
|
+
# end
|
|
41
|
+
#
|
|
42
|
+
# after :each do
|
|
43
|
+
# ...
|
|
44
|
+
# end
|
|
45
|
+
#
|
|
46
|
+
# after :all do
|
|
47
|
+
# ...
|
|
48
|
+
# end
|
|
49
|
+
#
|
|
50
|
+
# end
|
|
51
|
+
#
|
|
52
|
+
# The <tt>before :each</tt> block will run before each of the examples, once
|
|
53
|
+
# for each example. Likewise, the <tt>after :each</tt> block will run after
|
|
54
|
+
# each of the examples.
|
|
55
|
+
#
|
|
56
|
+
# It is also possible to specify a <tt>before :all</tt> and <tt>after
|
|
57
|
+
# :all</tt> block that will run only once for each example group, before the
|
|
58
|
+
# first <code>before :each</code> and after the last <code>after
|
|
59
|
+
# :each</code> respectively. The use of these is generally discouraged,
|
|
60
|
+
# because it introduces dependencies between the examples. Still, it might
|
|
61
|
+
# prove useful for very expensive operations if you know what you are doing.
|
|
62
|
+
#
|
|
63
|
+
# == Local helper methods
|
|
64
|
+
#
|
|
65
|
+
# You can include local helper methods by simply expressing them within an
|
|
66
|
+
# example group:
|
|
67
|
+
#
|
|
68
|
+
# describe "..." do
|
|
69
|
+
#
|
|
70
|
+
# it "..." do
|
|
71
|
+
# helper_method
|
|
72
|
+
# end
|
|
73
|
+
#
|
|
74
|
+
# def helper_method
|
|
75
|
+
# ...
|
|
76
|
+
# end
|
|
77
|
+
#
|
|
78
|
+
# end
|
|
79
|
+
#
|
|
80
|
+
# == Included helper methods
|
|
81
|
+
#
|
|
82
|
+
# You can include helper methods in multiple example groups by expressing
|
|
83
|
+
# them within a module, and then including that module in your example
|
|
84
|
+
# groups:
|
|
85
|
+
#
|
|
86
|
+
# module AccountExampleHelperMethods
|
|
87
|
+
# def helper_method
|
|
88
|
+
# ...
|
|
89
|
+
# end
|
|
90
|
+
# end
|
|
91
|
+
#
|
|
92
|
+
# describe "A new account" do
|
|
93
|
+
# include AccountExampleHelperMethods
|
|
94
|
+
# before do
|
|
95
|
+
# @account = Account.new
|
|
96
|
+
# end
|
|
97
|
+
#
|
|
98
|
+
# it "should have a balance of $0" do
|
|
99
|
+
# helper_method
|
|
100
|
+
# @account.balance.should eql(Money.new(0, :dollars))
|
|
101
|
+
# end
|
|
102
|
+
# end
|
|
103
|
+
#
|
|
104
|
+
# == Shared Example Groups
|
|
105
|
+
#
|
|
106
|
+
# You can define a shared example group, that may be used on other groups
|
|
107
|
+
#
|
|
108
|
+
# share_examples_for "All Editions" do
|
|
109
|
+
# it "all editions behaviour" ...
|
|
110
|
+
# end
|
|
111
|
+
#
|
|
112
|
+
# describe SmallEdition do
|
|
113
|
+
# it_should_behave_like "All Editions"
|
|
114
|
+
#
|
|
115
|
+
# it "should do small edition stuff" do
|
|
116
|
+
# ...
|
|
117
|
+
# end
|
|
118
|
+
# end
|
|
119
|
+
#
|
|
120
|
+
# You can also assign the shared group to a module and include that
|
|
121
|
+
#
|
|
122
|
+
# share_as :AllEditions do
|
|
123
|
+
# it "should do all editions stuff" ...
|
|
124
|
+
# end
|
|
125
|
+
#
|
|
126
|
+
# describe SmallEdition do
|
|
127
|
+
# it_should_behave_like AllEditions
|
|
128
|
+
#
|
|
129
|
+
# it "should do small edition stuff" do
|
|
130
|
+
# ...
|
|
131
|
+
# end
|
|
132
|
+
# end
|
|
133
|
+
#
|
|
134
|
+
# And, for those of you who prefer to use something more like Ruby, you can
|
|
135
|
+
# just include the module directly
|
|
136
|
+
#
|
|
137
|
+
# describe SmallEdition do
|
|
138
|
+
# include AllEditions
|
|
139
|
+
#
|
|
140
|
+
# it "should do small edition stuff" do
|
|
141
|
+
# ...
|
|
142
|
+
# end
|
|
143
|
+
# end
|
|
144
|
+
module Example
|
|
145
|
+
class << self
|
|
146
|
+
def args_and_options(*args) # :nodoc:
|
|
147
|
+
with_options_from(args) do |options|
|
|
148
|
+
return args, options
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def scope_from(*args) # :nodoc:
|
|
153
|
+
args[0] || :each
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
def scope_and_options(*args) # :nodoc:
|
|
157
|
+
args, options = args_and_options(*args)
|
|
158
|
+
return scope_from(*args), options
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
def add_spec_path_to(args) # :nodoc:
|
|
162
|
+
args << {} unless Hash === args.last
|
|
163
|
+
args.last[:spec_path] ||= caller(0)[2]
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
private
|
|
167
|
+
|
|
168
|
+
def with_options_from(args)
|
|
169
|
+
yield Hash === args.last ? args.pop : {} if block_given?
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
require 'timeout'
|
|
176
|
+
require 'spec/example/subject'
|
|
177
|
+
require 'spec/example/before_and_after_hooks'
|
|
178
|
+
require 'spec/example/pending'
|
|
179
|
+
require 'spec/example/module_reopening_fix'
|
|
180
|
+
require 'spec/example/example_group_methods'
|
|
181
|
+
require 'spec/example/example_methods'
|
|
182
|
+
require 'spec/example/example_group'
|
|
183
|
+
require 'spec/example/shared_example_group'
|
|
184
|
+
require 'spec/example/example_group_factory'
|
|
185
|
+
require 'spec/example/errors'
|
|
186
|
+
require 'spec/example/example_matcher'
|
|
187
|
+
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
begin
|
|
2
|
+
require 'rubygems'
|
|
3
|
+
require 'diff/lcs' #necessary due to loading bug on some machines - not sure why - DaC
|
|
4
|
+
require 'diff/lcs/hunk'
|
|
5
|
+
rescue LoadError ; raise "You must gem install diff-lcs to use diffing" ; end
|
|
6
|
+
|
|
7
|
+
require 'pp'
|
|
8
|
+
|
|
9
|
+
module Spec
|
|
10
|
+
module Expectations
|
|
11
|
+
module Differs
|
|
12
|
+
|
|
13
|
+
# TODO add some rdoc
|
|
14
|
+
class Default
|
|
15
|
+
def initialize(options)
|
|
16
|
+
@options = options
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# This is snagged from diff/lcs/ldiff.rb (which is a commandline tool)
|
|
20
|
+
def diff_as_string(data_new, data_old)
|
|
21
|
+
data_old = data_old.split(/\n/).map! { |e| e.chomp }
|
|
22
|
+
data_new = data_new.split(/\n/).map! { |e| e.chomp }
|
|
23
|
+
output = ""
|
|
24
|
+
diffs = Diff::LCS.diff(data_old, data_new)
|
|
25
|
+
return output if diffs.empty?
|
|
26
|
+
oldhunk = hunk = nil
|
|
27
|
+
file_length_difference = 0
|
|
28
|
+
diffs.each do |piece|
|
|
29
|
+
begin
|
|
30
|
+
hunk = Diff::LCS::Hunk.new(data_old, data_new, piece, context_lines,
|
|
31
|
+
file_length_difference)
|
|
32
|
+
file_length_difference = hunk.file_length_difference
|
|
33
|
+
next unless oldhunk
|
|
34
|
+
# Hunks may overlap, which is why we need to be careful when our
|
|
35
|
+
# diff includes lines of context. Otherwise, we might print
|
|
36
|
+
# redundant lines.
|
|
37
|
+
if (context_lines > 0) and hunk.overlaps?(oldhunk)
|
|
38
|
+
hunk.unshift(oldhunk)
|
|
39
|
+
else
|
|
40
|
+
output << oldhunk.diff(format)
|
|
41
|
+
end
|
|
42
|
+
ensure
|
|
43
|
+
oldhunk = hunk
|
|
44
|
+
output << "\n"
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
#Handle the last remaining hunk
|
|
48
|
+
output << oldhunk.diff(format) << "\n"
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def diff_as_object(target,expected)
|
|
52
|
+
diff_as_string(PP.pp(target,""), PP.pp(expected,""))
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
protected
|
|
56
|
+
def format
|
|
57
|
+
@options.diff_format
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def context_lines
|
|
61
|
+
@options.context_lines
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Expectations
|
|
3
|
+
# If Test::Unit is loaed, we'll use its error as baseclass, so that Test::Unit
|
|
4
|
+
# will report unmet RSpec expectations as failures rather than errors.
|
|
5
|
+
superclass = ['Test::Unit::AssertionFailedError', '::StandardError'].map do |c|
|
|
6
|
+
eval(c) rescue nil
|
|
7
|
+
end.compact.first
|
|
8
|
+
|
|
9
|
+
class ExpectationNotMetError < superclass
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Expectations
|
|
3
|
+
# rspec adds #should and #should_not to every Object (and,
|
|
4
|
+
# implicitly, every Class).
|
|
5
|
+
module ObjectExpectations
|
|
6
|
+
# :call-seq:
|
|
7
|
+
# should(matcher)
|
|
8
|
+
# should == expected
|
|
9
|
+
# should === expected
|
|
10
|
+
# should =~ expected
|
|
11
|
+
#
|
|
12
|
+
# receiver.should(matcher)
|
|
13
|
+
# => Passes if matcher.matches?(receiver)
|
|
14
|
+
#
|
|
15
|
+
# receiver.should == expected #any value
|
|
16
|
+
# => Passes if (receiver == expected)
|
|
17
|
+
#
|
|
18
|
+
# receiver.should === expected #any value
|
|
19
|
+
# => Passes if (receiver === expected)
|
|
20
|
+
#
|
|
21
|
+
# receiver.should =~ regexp
|
|
22
|
+
# => Passes if (receiver =~ regexp)
|
|
23
|
+
#
|
|
24
|
+
# See Spec::Matchers for more information about matchers
|
|
25
|
+
#
|
|
26
|
+
# == Warning
|
|
27
|
+
#
|
|
28
|
+
# NOTE that this does NOT support receiver.should != expected.
|
|
29
|
+
# Instead, use receiver.should_not == expected
|
|
30
|
+
def should(matcher=nil, &block)
|
|
31
|
+
ExpectationMatcherHandler.handle_matcher(self, matcher, &block)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# :call-seq:
|
|
35
|
+
# should_not(matcher)
|
|
36
|
+
# should_not == expected
|
|
37
|
+
# should_not === expected
|
|
38
|
+
# should_not =~ expected
|
|
39
|
+
#
|
|
40
|
+
# receiver.should_not(matcher)
|
|
41
|
+
# => Passes unless matcher.matches?(receiver)
|
|
42
|
+
#
|
|
43
|
+
# receiver.should_not == expected
|
|
44
|
+
# => Passes unless (receiver == expected)
|
|
45
|
+
#
|
|
46
|
+
# receiver.should_not === expected
|
|
47
|
+
# => Passes unless (receiver === expected)
|
|
48
|
+
#
|
|
49
|
+
# receiver.should_not =~ regexp
|
|
50
|
+
# => Passes unless (receiver =~ regexp)
|
|
51
|
+
#
|
|
52
|
+
# See Spec::Matchers for more information about matchers
|
|
53
|
+
def should_not(matcher=nil, &block)
|
|
54
|
+
NegativeExpectationMatcherHandler.handle_matcher(self, matcher, &block)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
class Object
|
|
62
|
+
include Spec::Expectations::ObjectExpectations
|
|
63
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Expectations
|
|
3
|
+
module StringHelpers
|
|
4
|
+
def starts_with?(prefix)
|
|
5
|
+
to_s[0..(prefix.to_s.length - 1)] == prefix.to_s
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
class String
|
|
12
|
+
include Spec::Expectations::StringHelpers
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
class Symbol
|
|
16
|
+
include Spec::Expectations::StringHelpers
|
|
17
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module Spec
|
|
2
|
+
module Expectations
|
|
3
|
+
class InvalidMatcherError < ArgumentError; end
|
|
4
|
+
|
|
5
|
+
class ExpectationMatcherHandler
|
|
6
|
+
def self.handle_matcher(actual, matcher, &block)
|
|
7
|
+
::Spec::Matchers.last_should = :should
|
|
8
|
+
::Spec::Matchers.last_matcher = matcher
|
|
9
|
+
|
|
10
|
+
return ::Spec::Matchers::PositiveOperatorMatcher.new(actual) if matcher.nil?
|
|
11
|
+
|
|
12
|
+
match = matcher.matches?(actual, &block)
|
|
13
|
+
::Spec::Expectations.fail_with(matcher.failure_message) unless match
|
|
14
|
+
match
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
class NegativeExpectationMatcherHandler
|
|
19
|
+
def self.handle_matcher(actual, matcher, &block)
|
|
20
|
+
::Spec::Matchers.last_should = :should_not
|
|
21
|
+
::Spec::Matchers.last_matcher = matcher
|
|
22
|
+
|
|
23
|
+
return ::Spec::Matchers::NegativeOperatorMatcher.new(actual) if matcher.nil?
|
|
24
|
+
|
|
25
|
+
match = matcher.matches?(actual, &block)
|
|
26
|
+
::Spec::Expectations.fail_with(matcher.negative_failure_message) if match
|
|
27
|
+
match
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
require 'spec/matchers'
|
|
2
|
+
require 'spec/expectations/errors'
|
|
3
|
+
require 'spec/expectations/extensions'
|
|
4
|
+
require 'spec/expectations/handler'
|
|
5
|
+
|
|
6
|
+
module Spec
|
|
7
|
+
|
|
8
|
+
# Spec::Expectations lets you set expectations on your objects.
|
|
9
|
+
#
|
|
10
|
+
# result.should == 37
|
|
11
|
+
# team.should have(11).players_on_the_field
|
|
12
|
+
#
|
|
13
|
+
# == How Expectations work.
|
|
14
|
+
#
|
|
15
|
+
# Spec::Expectations adds two methods to Object:
|
|
16
|
+
#
|
|
17
|
+
# should(matcher=nil)
|
|
18
|
+
# should_not(matcher=nil)
|
|
19
|
+
#
|
|
20
|
+
# Both methods take an optional Expression Matcher (See Spec::Matchers).
|
|
21
|
+
#
|
|
22
|
+
# When +should+ receives an Expression Matcher, it calls <tt>matches?(self)</tt>. If
|
|
23
|
+
# it returns +true+, the spec passes and execution continues. If it returns
|
|
24
|
+
# +false+, then the spec fails with the message returned by <tt>matcher.failure_message</tt>.
|
|
25
|
+
#
|
|
26
|
+
# Similarly, when +should_not+ receives a matcher, it calls <tt>matches?(self)</tt>. If
|
|
27
|
+
# it returns +false+, the spec passes and execution continues. If it returns
|
|
28
|
+
# +true+, then the spec fails with the message returned by <tt>matcher.negative_failure_message</tt>.
|
|
29
|
+
#
|
|
30
|
+
# RSpec ships with a standard set of useful matchers, and writing your own
|
|
31
|
+
# matchers is quite simple. See Spec::Matchers for details.
|
|
32
|
+
module Expectations
|
|
33
|
+
def self.differ
|
|
34
|
+
@differ
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def self.differ=(differ)
|
|
38
|
+
@differ = differ
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# raises a Spec::Expectations::ExpectationNotMetError with message
|
|
42
|
+
#
|
|
43
|
+
# When a differ has been assigned and fail_with is passed
|
|
44
|
+
# <code>expected</code> and <code>target</code>, passes them
|
|
45
|
+
# to the differ to append a diff message to the failure message.
|
|
46
|
+
def self.fail_with(message, expected=nil, target=nil) # :nodoc:
|
|
47
|
+
if Array === message && message.length == 3
|
|
48
|
+
message, expected, target = message[0], message[1], message[2]
|
|
49
|
+
end
|
|
50
|
+
unless (differ.nil? || expected.nil? || target.nil?)
|
|
51
|
+
if expected.is_a?(String)
|
|
52
|
+
message << "\nDiff:" << self.differ.diff_as_string(target.to_s, expected)
|
|
53
|
+
elsif !target.is_a?(Proc)
|
|
54
|
+
message << "\nDiff:" << self.differ.diff_as_object(target, expected)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
Kernel::raise(Spec::Expectations::ExpectationNotMetError.new(message))
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
require 'test/unit/testcase'
|
|
2
|
+
|
|
3
|
+
module Test
|
|
4
|
+
module Unit
|
|
5
|
+
# This extension of the standard Test::Unit::TestCase makes RSpec
|
|
6
|
+
# available from within, so that you can do things like:
|
|
7
|
+
#
|
|
8
|
+
# require 'test/unit'
|
|
9
|
+
# require 'spec'
|
|
10
|
+
#
|
|
11
|
+
# class MyTest < Test::Unit::TestCase
|
|
12
|
+
# it "should work with Test::Unit assertions" do
|
|
13
|
+
# assert_equal 4, 2+1
|
|
14
|
+
# end
|
|
15
|
+
#
|
|
16
|
+
# def test_should_work_with_rspec_expectations
|
|
17
|
+
# (3+1).should == 5
|
|
18
|
+
# end
|
|
19
|
+
# end
|
|
20
|
+
#
|
|
21
|
+
# See also Spec::Example::ExampleGroup
|
|
22
|
+
class TestCase
|
|
23
|
+
extend Spec::Example::ExampleGroupMethods
|
|
24
|
+
include Spec::Example::ExampleMethods
|
|
25
|
+
|
|
26
|
+
def self.suite
|
|
27
|
+
Test::Unit::TestSuiteAdapter.new(self)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.example_method?(method_name)
|
|
31
|
+
should_method?(method_name) || test_method?(method_name)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def self.test_method?(method_name)
|
|
35
|
+
method_name =~ /^test[_A-Z]./ && (
|
|
36
|
+
instance_method(method_name).arity == 0 ||
|
|
37
|
+
instance_method(method_name).arity == -1
|
|
38
|
+
)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
before(:each) {setup}
|
|
42
|
+
after(:each) {teardown}
|
|
43
|
+
|
|
44
|
+
def initialize(defined_description, options={}, &implementation)
|
|
45
|
+
@_defined_description = defined_description
|
|
46
|
+
|
|
47
|
+
# TODO - examples fail in rspec-rails if we remove "|| pending_implementation"
|
|
48
|
+
# - find a way to fail without it in rspec's code examples
|
|
49
|
+
@_implementation = implementation || pending_implementation
|
|
50
|
+
|
|
51
|
+
@_result = ::Test::Unit::TestResult.new
|
|
52
|
+
# @method_name is important to set here because it complies with Test::Unit's interface.
|
|
53
|
+
# Some Test::Unit extensions depend on @method_name being present.
|
|
54
|
+
@method_name = @_defined_description
|
|
55
|
+
|
|
56
|
+
# TODO - this is necessary to run single examples in rspec-rails, but I haven't
|
|
57
|
+
# found a good way to write a failing example just within rspec core
|
|
58
|
+
@_backtrace = caller
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def run(ignore_this_argument=nil)
|
|
62
|
+
super()
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
private
|
|
66
|
+
|
|
67
|
+
def pending_implementation
|
|
68
|
+
error = Spec::Example::NotYetImplementedError.new(caller)
|
|
69
|
+
lambda { raise(error) }
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module Test
|
|
2
|
+
module Unit
|
|
3
|
+
class TestSuiteAdapter < TestSuite
|
|
4
|
+
attr_reader :example_group, :examples
|
|
5
|
+
alias_method :tests, :examples
|
|
6
|
+
def initialize(example_group)
|
|
7
|
+
@example_group = example_group
|
|
8
|
+
@examples = example_group.examples
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def name
|
|
12
|
+
example_group.description
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def run(*args)
|
|
16
|
+
return true unless args.empty?
|
|
17
|
+
example_group.run(Spec::Runner.options)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def size
|
|
21
|
+
example_group.number_of_examples
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def delete(example)
|
|
25
|
+
examples.delete example
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def empty?
|
|
29
|
+
examples.empty?
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
require 'test/unit/ui/console/testrunner'
|
|
2
|
+
|
|
3
|
+
module Test
|
|
4
|
+
module Unit
|
|
5
|
+
module UI
|
|
6
|
+
module Console
|
|
7
|
+
class TestRunner
|
|
8
|
+
|
|
9
|
+
alias_method :started_without_rspec, :started
|
|
10
|
+
def started_with_rspec(result)
|
|
11
|
+
@result = result
|
|
12
|
+
@need_to_output_started = true
|
|
13
|
+
end
|
|
14
|
+
alias_method :started, :started_with_rspec
|
|
15
|
+
|
|
16
|
+
alias_method :test_started_without_rspec, :test_started
|
|
17
|
+
def test_started_with_rspec(name)
|
|
18
|
+
if @need_to_output_started
|
|
19
|
+
if @rspec_io
|
|
20
|
+
@rspec_io.rewind
|
|
21
|
+
output(@rspec_io.read)
|
|
22
|
+
end
|
|
23
|
+
output("Started")
|
|
24
|
+
@need_to_output_started = false
|
|
25
|
+
end
|
|
26
|
+
test_started_without_rspec(name)
|
|
27
|
+
end
|
|
28
|
+
alias_method :test_started, :test_started_with_rspec
|
|
29
|
+
|
|
30
|
+
alias_method :test_finished_without_rspec, :test_finished
|
|
31
|
+
def test_finished_with_rspec(name)
|
|
32
|
+
test_finished_without_rspec(name)
|
|
33
|
+
@ran_test = true
|
|
34
|
+
end
|
|
35
|
+
alias_method :test_finished, :test_finished_with_rspec
|
|
36
|
+
|
|
37
|
+
alias_method :finished_without_rspec, :finished
|
|
38
|
+
def finished_with_rspec(elapsed_time)
|
|
39
|
+
@ran_test ||= false
|
|
40
|
+
if @ran_test
|
|
41
|
+
finished_without_rspec(elapsed_time)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
alias_method :finished, :finished_with_rspec
|
|
45
|
+
|
|
46
|
+
alias_method :setup_mediator_without_rspec, :setup_mediator
|
|
47
|
+
def setup_mediator_with_rspec
|
|
48
|
+
orig_io = @io
|
|
49
|
+
@io = StringIO.new
|
|
50
|
+
setup_mediator_without_rspec
|
|
51
|
+
ensure
|
|
52
|
+
@rspec_io = @io
|
|
53
|
+
@io = orig_io
|
|
54
|
+
end
|
|
55
|
+
alias_method :setup_mediator, :setup_mediator_with_rspec
|
|
56
|
+
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'test/unit/testresult'
|
|
3
|
+
|
|
4
|
+
require 'spec/interop/test/unit/testcase'
|
|
5
|
+
require 'spec/interop/test/unit/testsuite_adapter'
|
|
6
|
+
require 'spec/interop/test/unit/autorunner'
|
|
7
|
+
require 'spec/interop/test/unit/testresult'
|
|
8
|
+
require 'spec/interop/test/unit/ui/console/testrunner'
|
|
9
|
+
|
|
10
|
+
Spec::Example::ExampleGroupFactory.default(Test::Unit::TestCase)
|
|
11
|
+
|
|
12
|
+
Test::Unit.run = true
|