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,238 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Runner
|
|
5
|
+
describe Reporter do
|
|
6
|
+
attr_reader :formatter_output, :options, :backtrace_tweaker, :formatter, :reporter, :example_group
|
|
7
|
+
before(:each) do
|
|
8
|
+
@formatter_output = StringIO.new
|
|
9
|
+
@options = Options.new(StringIO.new, StringIO.new)
|
|
10
|
+
@backtrace_tweaker = stub("backtrace tweaker", :tweak_backtrace => nil)
|
|
11
|
+
options.backtrace_tweaker = backtrace_tweaker
|
|
12
|
+
@formatter = ::Spec::Runner::Formatter::BaseTextFormatter.new(options, formatter_output)
|
|
13
|
+
options.formatters << formatter
|
|
14
|
+
@reporter = Reporter.new(options)
|
|
15
|
+
@example_group = create_example_group("example_group")
|
|
16
|
+
reporter.add_example_group example_group
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def failure
|
|
20
|
+
Mocks::ArgumentMatchers::DuckTypeMatcher.new(:header, :exception)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def create_example_group(description_text)
|
|
24
|
+
example_group = Spec::Example::ExampleGroup.describe(description_text) do
|
|
25
|
+
it "should do something" do
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
example_group
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should assign itself as the reporter to options" do
|
|
32
|
+
options.reporter.should equal(@reporter)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should tell formatter when example_group is added" do
|
|
36
|
+
formatter.should_receive(:add_example_group).with(example_group)
|
|
37
|
+
reporter.add_example_group(example_group)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "should handle multiple example_groups with same name" do
|
|
41
|
+
formatter.should_receive(:add_example_group).exactly(3).times
|
|
42
|
+
formatter.should_receive(:example_started).exactly(3).times
|
|
43
|
+
formatter.should_receive(:example_passed).exactly(3).times
|
|
44
|
+
formatter.should_receive(:start_dump)
|
|
45
|
+
formatter.should_receive(:dump_pending)
|
|
46
|
+
formatter.should_receive(:close).with(no_args)
|
|
47
|
+
formatter.should_receive(:dump_summary).with(anything(), 3, 0, 0)
|
|
48
|
+
reporter.add_example_group(create_example_group("example_group"))
|
|
49
|
+
reporter.example_started("spec 1")
|
|
50
|
+
reporter.example_finished("spec 1")
|
|
51
|
+
reporter.add_example_group(create_example_group("example_group"))
|
|
52
|
+
reporter.example_started("spec 2")
|
|
53
|
+
reporter.example_finished("spec 2")
|
|
54
|
+
reporter.add_example_group(create_example_group("example_group"))
|
|
55
|
+
reporter.example_started("spec 3")
|
|
56
|
+
reporter.example_finished("spec 3")
|
|
57
|
+
reporter.dump
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it "should handle multiple examples with the same name" do
|
|
61
|
+
error=RuntimeError.new
|
|
62
|
+
passing = ExampleGroup.new("example")
|
|
63
|
+
failing = ExampleGroup.new("example")
|
|
64
|
+
|
|
65
|
+
formatter.should_receive(:add_example_group).exactly(2).times
|
|
66
|
+
formatter.should_receive(:example_passed).with(passing).exactly(2).times
|
|
67
|
+
formatter.should_receive(:example_failed).with(failing, 1, failure)
|
|
68
|
+
formatter.should_receive(:example_failed).with(failing, 2, failure)
|
|
69
|
+
formatter.should_receive(:dump_failure).exactly(2).times
|
|
70
|
+
formatter.should_receive(:start_dump)
|
|
71
|
+
formatter.should_receive(:dump_pending)
|
|
72
|
+
formatter.should_receive(:close).with(no_args)
|
|
73
|
+
formatter.should_receive(:dump_summary).with(anything(), 4, 2, 0)
|
|
74
|
+
backtrace_tweaker.should_receive(:tweak_backtrace).twice
|
|
75
|
+
|
|
76
|
+
reporter.add_example_group(create_example_group("example_group"))
|
|
77
|
+
reporter.example_finished(passing)
|
|
78
|
+
reporter.example_finished(failing, error)
|
|
79
|
+
|
|
80
|
+
reporter.add_example_group(create_example_group("example_group"))
|
|
81
|
+
reporter.example_finished(passing)
|
|
82
|
+
reporter.example_finished(failing, error)
|
|
83
|
+
reporter.dump
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it "should push stats to formatter even with no data" do
|
|
87
|
+
formatter.should_receive(:start_dump)
|
|
88
|
+
formatter.should_receive(:dump_pending)
|
|
89
|
+
formatter.should_receive(:dump_summary).with(anything(), 0, 0, 0)
|
|
90
|
+
formatter.should_receive(:close).with(no_args)
|
|
91
|
+
reporter.dump
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
it "should push time to formatter" do
|
|
95
|
+
formatter.should_receive(:start).with(5)
|
|
96
|
+
formatter.should_receive(:start_dump)
|
|
97
|
+
formatter.should_receive(:dump_pending)
|
|
98
|
+
formatter.should_receive(:close).with(no_args)
|
|
99
|
+
formatter.should_receive(:dump_summary) do |time, a, b|
|
|
100
|
+
time.to_s.should match(/[0-9].[0-9|e|-]+/)
|
|
101
|
+
end
|
|
102
|
+
reporter.start(5)
|
|
103
|
+
reporter.end
|
|
104
|
+
reporter.dump
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
describe "reporting one passing example" do
|
|
108
|
+
it "should tell formatter example passed" do
|
|
109
|
+
formatter.should_receive(:example_passed)
|
|
110
|
+
reporter.example_finished("example")
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
it "should not delegate to backtrace tweaker" do
|
|
114
|
+
formatter.should_receive(:example_passed)
|
|
115
|
+
backtrace_tweaker.should_not_receive(:tweak_backtrace)
|
|
116
|
+
reporter.example_finished("example")
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
it "should account for passing example in stats" do
|
|
120
|
+
formatter.should_receive(:example_passed)
|
|
121
|
+
formatter.should_receive(:start_dump)
|
|
122
|
+
formatter.should_receive(:dump_pending)
|
|
123
|
+
formatter.should_receive(:dump_summary).with(anything(), 1, 0, 0)
|
|
124
|
+
formatter.should_receive(:close).with(no_args)
|
|
125
|
+
reporter.example_finished("example")
|
|
126
|
+
reporter.dump
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
describe "reporting one failing example" do
|
|
131
|
+
it "should tell formatter that example failed" do
|
|
132
|
+
example = example_group.it("should do something") {}
|
|
133
|
+
formatter.should_receive(:example_failed)
|
|
134
|
+
reporter.example_finished(example, RuntimeError.new)
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
it "should delegate to backtrace tweaker" do
|
|
138
|
+
formatter.should_receive(:example_failed)
|
|
139
|
+
backtrace_tweaker.should_receive(:tweak_backtrace)
|
|
140
|
+
reporter.example_finished(ExampleGroup.new("example"), RuntimeError.new)
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
it "should account for failing example in stats" do
|
|
144
|
+
example = ExampleGroup.new("example")
|
|
145
|
+
formatter.should_receive(:example_failed).with(example, 1, failure)
|
|
146
|
+
formatter.should_receive(:start_dump)
|
|
147
|
+
formatter.should_receive(:dump_pending)
|
|
148
|
+
formatter.should_receive(:dump_failure).with(1, anything())
|
|
149
|
+
formatter.should_receive(:dump_summary).with(anything(), 1, 1, 0)
|
|
150
|
+
formatter.should_receive(:close).with(no_args)
|
|
151
|
+
reporter.example_finished(example, RuntimeError.new)
|
|
152
|
+
reporter.dump
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
describe "reporting one pending example (ExamplePendingError)" do
|
|
158
|
+
before :each do
|
|
159
|
+
@pending_error = Spec::Example::ExamplePendingError.new("reason")
|
|
160
|
+
@pending_caller = @pending_error.pending_caller
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
it "should tell formatter example is pending" do
|
|
164
|
+
example = ExampleGroup.new("example")
|
|
165
|
+
formatter.should_receive(:example_pending).with(example, "reason", @pending_caller)
|
|
166
|
+
formatter.should_receive(:add_example_group).with(example_group)
|
|
167
|
+
reporter.add_example_group(example_group)
|
|
168
|
+
reporter.example_finished(example, @pending_error)
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
it "should account for pending example in stats" do
|
|
172
|
+
example = ExampleGroup.new("example")
|
|
173
|
+
formatter.should_receive(:example_pending).with(example, "reason", @pending_caller)
|
|
174
|
+
formatter.should_receive(:start_dump)
|
|
175
|
+
formatter.should_receive(:dump_pending)
|
|
176
|
+
formatter.should_receive(:dump_summary).with(anything(), 1, 0, 1)
|
|
177
|
+
formatter.should_receive(:close).with(no_args)
|
|
178
|
+
formatter.should_receive(:add_example_group).with(example_group)
|
|
179
|
+
reporter.add_example_group(example_group)
|
|
180
|
+
reporter.example_finished(example, @pending_error)
|
|
181
|
+
reporter.dump
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
describe "to formatters which have example_pending's arity of 2 (which is now deprecated)" do
|
|
185
|
+
before :each do
|
|
186
|
+
Kernel.stub!(:warn).with(Spec::Runner::Reporter::EXAMPLE_PENDING_DEPRECATION_WARNING)
|
|
187
|
+
|
|
188
|
+
@deprecated_formatter = Class.new(@formatter.class) do
|
|
189
|
+
attr_reader :example_passed_to_method, :message_passed_to_method
|
|
190
|
+
|
|
191
|
+
def example_pending(example_passed_to_method, message_passed_to_method)
|
|
192
|
+
@example_passed_to_method = example_passed_to_method
|
|
193
|
+
@message_passed_to_method = message_passed_to_method
|
|
194
|
+
end
|
|
195
|
+
end.new(options, formatter_output)
|
|
196
|
+
|
|
197
|
+
options.formatters << @deprecated_formatter
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
it "should pass the correct example to the formatter" do
|
|
201
|
+
example = ExampleGroup.new("example")
|
|
202
|
+
reporter.add_example_group(example_group)
|
|
203
|
+
reporter.example_finished(example, @pending_error)
|
|
204
|
+
|
|
205
|
+
(@deprecated_formatter.example_passed_to_method == example).should be_true
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
it "should pass the correct pending error message to the formatter" do
|
|
209
|
+
example = ExampleGroup.new("example")
|
|
210
|
+
reporter.add_example_group(example_group)
|
|
211
|
+
reporter.example_finished(example, @pending_error)
|
|
212
|
+
|
|
213
|
+
@deprecated_formatter.message_passed_to_method.should == @pending_error.message
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
it "should raise a deprecation warning" do
|
|
217
|
+
Kernel.should_receive(:warn).with(Spec::Runner::Reporter::EXAMPLE_PENDING_DEPRECATION_WARNING)
|
|
218
|
+
|
|
219
|
+
example = ExampleGroup.new("example")
|
|
220
|
+
reporter.add_example_group(example_group)
|
|
221
|
+
reporter.example_finished(example, @pending_error)
|
|
222
|
+
end
|
|
223
|
+
end
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
describe "reporting one pending example (PendingExampleFixedError)" do
|
|
227
|
+
it "should tell formatter pending example is fixed" do
|
|
228
|
+
formatter.should_receive(:example_failed) do |name, counter, failure|
|
|
229
|
+
failure.header.should == "'example_group should do something' FIXED"
|
|
230
|
+
end
|
|
231
|
+
formatter.should_receive(:add_example_group).with(example_group)
|
|
232
|
+
reporter.add_example_group(example_group)
|
|
233
|
+
reporter.example_finished(example_group.examples.first, Spec::Example::PendingExampleFixedError.new("reason"))
|
|
234
|
+
end
|
|
235
|
+
end
|
|
236
|
+
end
|
|
237
|
+
end
|
|
238
|
+
end
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Empty - used by ../options_spec.rb
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
--drb
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
describe "c" do
|
|
4
|
+
|
|
5
|
+
it "1" do
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it "2" do
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe "d" do
|
|
14
|
+
|
|
15
|
+
it "3" do
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "4" do
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
class SpecParserSubject
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe SpecParserSubject do
|
|
27
|
+
|
|
28
|
+
it "5" do
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe SpecParserSubject, "described" do
|
|
34
|
+
|
|
35
|
+
it "6" do
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
describe SpecParserSubject, "described", :something => :something_else do
|
|
41
|
+
|
|
42
|
+
it "7" do
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
describe "described", :something => :something_else do
|
|
48
|
+
|
|
49
|
+
it "8" do
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
describe "e" do
|
|
55
|
+
|
|
56
|
+
it "9" do
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it "10" do
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
describe "f" do
|
|
63
|
+
it "11" do
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it "12" do
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
end
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
describe "SpecParser" do
|
|
4
|
+
with_sandboxed_options do
|
|
5
|
+
attr_reader :parser, :file
|
|
6
|
+
|
|
7
|
+
before do
|
|
8
|
+
@parser = Spec::Runner::SpecParser.new(options)
|
|
9
|
+
@file = "#{File.dirname(__FILE__)}/spec_parser/spec_parser_fixture.rb"
|
|
10
|
+
load file
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "should find spec name for 'specify' at same line" do
|
|
14
|
+
parser.spec_name_for(file, 5).should == "c 1"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should find spec name for 'specify' at end of spec line" do
|
|
18
|
+
parser.spec_name_for(file, 6).should == "c 1"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should find context for 'context' above all specs" do
|
|
22
|
+
parser.spec_name_for(file, 4).should == "c"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "should find spec name for 'it' at same line" do
|
|
26
|
+
parser.spec_name_for(file, 15).should == "d 3"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "should find spec name for 'it' at end of spec line" do
|
|
30
|
+
parser.spec_name_for(file, 16).should == "d 3"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "should find context for 'describe' above all specs" do
|
|
34
|
+
parser.spec_name_for(file, 14).should == "d"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "should find nearest example name between examples" do
|
|
38
|
+
parser.spec_name_for(file, 7).should == "c 1"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "should find nothing outside a context" do
|
|
42
|
+
parser.spec_name_for(file, 2).should be_nil
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "should find context name for type" do
|
|
46
|
+
parser.spec_name_for(file, 26).should == "SpecParserSubject"
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "should find context and spec name for type" do
|
|
50
|
+
parser.spec_name_for(file, 28).should == "SpecParserSubject 5"
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "should find context and description for type" do
|
|
54
|
+
parser.spec_name_for(file, 33).should == "SpecParserSubject described"
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "should find context and description and example for type" do
|
|
58
|
+
parser.spec_name_for(file, 36).should == "SpecParserSubject described 6"
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "should find context and description for type with modifications" do
|
|
62
|
+
parser.spec_name_for(file, 40).should == "SpecParserSubject described"
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it "should find context and described and example for type with modifications" do
|
|
66
|
+
parser.spec_name_for(file, 43).should == "SpecParserSubject described 7"
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "should find example group" do
|
|
70
|
+
parser.spec_name_for(file, 47).should == "described"
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it "should find example" do
|
|
74
|
+
parser.spec_name_for(file, 50).should == "described 8"
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "should find nested example" do
|
|
78
|
+
parser.spec_name_for(file, 63).should == "e f 11"
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it "should handle paths which contain colons" do
|
|
82
|
+
fixture =
|
|
83
|
+
{ "c:/somepath/somefile.rb:999:in 'method'" => "c:/somepath/somefile.rb",
|
|
84
|
+
"./somepath/somefile:999" => "./somepath/somefile" }
|
|
85
|
+
fixture.each_pair do |input, expected|
|
|
86
|
+
parser.send(:parse_backtrace, input ).should == [[expected, 999]]
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
end
|
|
91
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
describe Runner, ".configure" do
|
|
5
|
+
it "should yield global configuration" do
|
|
6
|
+
Spec::Runner.configure do |config|
|
|
7
|
+
config.should equal(Spec::Runner.configuration)
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# This file contains various classes used by the specs.
|
|
2
|
+
module Spec
|
|
3
|
+
module Expectations
|
|
4
|
+
class Person
|
|
5
|
+
attr_reader :name
|
|
6
|
+
def initialize name
|
|
7
|
+
@name = name
|
|
8
|
+
end
|
|
9
|
+
def == other
|
|
10
|
+
return @name == other.name
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class ClassWithMultiWordPredicate
|
|
15
|
+
def multi_word_predicate?
|
|
16
|
+
true
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
module Helper
|
|
21
|
+
class CollectionWithSizeMethod
|
|
22
|
+
def initialize; @list = []; end
|
|
23
|
+
def size; @list.size; end
|
|
24
|
+
def push(item); @list.push(item); end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
class CollectionWithLengthMethod
|
|
28
|
+
def initialize; @list = []; end
|
|
29
|
+
def length; @list.size; end
|
|
30
|
+
def push(item); @list.push(item); end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
class CollectionOwner
|
|
34
|
+
attr_reader :items_in_collection_with_size_method, :items_in_collection_with_length_method
|
|
35
|
+
|
|
36
|
+
def initialize
|
|
37
|
+
@items_in_collection_with_size_method = CollectionWithSizeMethod.new
|
|
38
|
+
@items_in_collection_with_length_method = CollectionWithLengthMethod.new
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def add_to_collection_with_size_method(item)
|
|
42
|
+
@items_in_collection_with_size_method.push(item)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def add_to_collection_with_length_method(item)
|
|
46
|
+
@items_in_collection_with_length_method.push(item)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def items_for(arg)
|
|
50
|
+
return [1, 2, 3] if arg == 'a'
|
|
51
|
+
[1]
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def items
|
|
55
|
+
@items_in_collection_with_size_method
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
class HandCodedMock
|
|
60
|
+
include Spec::Matchers
|
|
61
|
+
def initialize(return_val)
|
|
62
|
+
@return_val = return_val
|
|
63
|
+
@funny_called = false
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def funny?
|
|
67
|
+
@funny_called = true
|
|
68
|
+
@return_val
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def hungry?(a, b, c)
|
|
72
|
+
a.should equal(1)
|
|
73
|
+
b.should equal(2)
|
|
74
|
+
c.should equal(3)
|
|
75
|
+
@funny_called = true
|
|
76
|
+
@return_val
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def exists?
|
|
80
|
+
@return_val
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def multi_word_predicate?
|
|
84
|
+
@return_val
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def rspec_verify
|
|
88
|
+
@funny_called.should be_true
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
class ClassWithUnqueriedPredicate
|
|
92
|
+
attr_accessor :foo
|
|
93
|
+
def initialize(foo)
|
|
94
|
+
@foo = foo
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
module Custom
|
|
102
|
+
require 'spec/runner/formatter/base_text_formatter'
|
|
103
|
+
class Formatter < Spec::Runner::Formatter::BaseTextFormatter
|
|
104
|
+
attr_reader :options, :where
|
|
105
|
+
|
|
106
|
+
def initialize(options, where)
|
|
107
|
+
@options = options
|
|
108
|
+
@where = where
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
class BadFormatter < Spec::Runner::Formatter::BaseTextFormatter
|
|
113
|
+
attr_reader :where
|
|
114
|
+
|
|
115
|
+
def initialize(options, where)
|
|
116
|
+
bad_method
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
class Differ
|
|
121
|
+
attr_reader :options
|
|
122
|
+
def initialize(options)
|
|
123
|
+
@options = options
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def diff_as_object(target, expected)
|
|
127
|
+
""
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
class FakeReporter < Spec::Runner::Reporter
|
|
133
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
describe Spec::Runner, "#exit?" do
|
|
4
|
+
describe "when ::Test is absent during loading but present when running exit?" do
|
|
5
|
+
# believe it or not, this can happen when ActiveSupport is loaded after RSpec is,
|
|
6
|
+
# since it loads active_support/core_ext/test/unit/assertions.rb which defines
|
|
7
|
+
# Test::Unit but doesn't actually load test/unit
|
|
8
|
+
|
|
9
|
+
before(:each) do
|
|
10
|
+
Object.const_set(:Test, Module.new)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "does not attempt to access the non-loaded test/unit library" do
|
|
14
|
+
lambda { Spec::Runner.exit? }.should_not raise_error
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
after(:each) do
|
|
18
|
+
Object.send(:remove_const, :Test)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|