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,194 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Mocks
|
|
5
|
+
describe "A method stub" do
|
|
6
|
+
before(:each) do
|
|
7
|
+
@class = Class.new do
|
|
8
|
+
def self.existing_class_method
|
|
9
|
+
:original_value
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def existing_instance_method
|
|
13
|
+
:original_value
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
@instance = @class.new
|
|
17
|
+
@stub = Object.new
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should return expected value when expected message is received" do
|
|
21
|
+
@instance.stub!(:msg).and_return(:return_value)
|
|
22
|
+
@instance.msg.should equal(:return_value)
|
|
23
|
+
@instance.rspec_verify
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "should ignore when expected message is received" do
|
|
27
|
+
@instance.stub!(:msg)
|
|
28
|
+
@instance.msg
|
|
29
|
+
lambda do
|
|
30
|
+
@instance.rspec_verify
|
|
31
|
+
end.should_not raise_error
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "should ignore when message is received with args" do
|
|
35
|
+
@instance.stub!(:msg)
|
|
36
|
+
@instance.msg(:an_arg)
|
|
37
|
+
lambda do
|
|
38
|
+
@instance.rspec_verify
|
|
39
|
+
end.should_not raise_error
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "should ignore when expected message is not received" do
|
|
43
|
+
@instance.stub!(:msg)
|
|
44
|
+
lambda do
|
|
45
|
+
@instance.rspec_verify
|
|
46
|
+
end.should_not raise_error
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "should handle multiple stubbed methods" do
|
|
50
|
+
@instance.stub!(:msg1 => 1, :msg2 => 2)
|
|
51
|
+
@instance.msg1.should == 1
|
|
52
|
+
@instance.msg2.should == 2
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "should clear itself when verified" do
|
|
56
|
+
@instance.stub!(:this_should_go).and_return(:blah)
|
|
57
|
+
@instance.this_should_go.should == :blah
|
|
58
|
+
@instance.rspec_verify
|
|
59
|
+
lambda do
|
|
60
|
+
@instance.this_should_go
|
|
61
|
+
end.should raise_error(NameError)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "should return values in order to consecutive calls" do
|
|
65
|
+
return_values = ["1",2,Object.new]
|
|
66
|
+
@instance.stub!(:msg).and_return(return_values[0],return_values[1],return_values[2])
|
|
67
|
+
@instance.msg.should == return_values[0]
|
|
68
|
+
@instance.msg.should == return_values[1]
|
|
69
|
+
@instance.msg.should == return_values[2]
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it "should keep returning last value in consecutive calls" do
|
|
73
|
+
return_values = ["1",2,Object.new]
|
|
74
|
+
@instance.stub!(:msg).and_return(return_values[0],return_values[1],return_values[2])
|
|
75
|
+
@instance.msg.should == return_values[0]
|
|
76
|
+
@instance.msg.should == return_values[1]
|
|
77
|
+
@instance.msg.should == return_values[2]
|
|
78
|
+
@instance.msg.should == return_values[2]
|
|
79
|
+
@instance.msg.should == return_values[2]
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it "should revert to original instance method if there is one" do
|
|
83
|
+
@instance.existing_instance_method.should equal(:original_value)
|
|
84
|
+
@instance.stub!(:existing_instance_method).and_return(:mock_value)
|
|
85
|
+
@instance.existing_instance_method.should equal(:mock_value)
|
|
86
|
+
@instance.rspec_verify
|
|
87
|
+
@instance.existing_instance_method.should equal(:original_value)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it "should revert to original class method if there is one" do
|
|
91
|
+
@class.existing_class_method.should equal(:original_value)
|
|
92
|
+
@class.stub!(:existing_class_method).and_return(:mock_value)
|
|
93
|
+
@class.existing_class_method.should equal(:mock_value)
|
|
94
|
+
@class.rspec_verify
|
|
95
|
+
@class.existing_class_method.should equal(:original_value)
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it "should yield a specified object" do
|
|
99
|
+
@instance.stub!(:method_that_yields).and_yield(:yielded_obj)
|
|
100
|
+
current_value = :value_before
|
|
101
|
+
@instance.method_that_yields {|val| current_value = val}
|
|
102
|
+
current_value.should == :yielded_obj
|
|
103
|
+
@instance.rspec_verify
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
it "should yield multiple times with multiple calls to and_yield" do
|
|
107
|
+
@instance.stub!(:method_that_yields_multiple_times).and_yield(:yielded_value).
|
|
108
|
+
and_yield(:another_value)
|
|
109
|
+
current_value = []
|
|
110
|
+
@instance.method_that_yields_multiple_times {|val| current_value << val}
|
|
111
|
+
current_value.should == [:yielded_value, :another_value]
|
|
112
|
+
@instance.rspec_verify
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
it "should yield a specified object and return another specified object" do
|
|
116
|
+
yielded_obj = mock("my mock")
|
|
117
|
+
yielded_obj.should_receive(:foo).with(:bar)
|
|
118
|
+
@instance.stub!(:method_that_yields_and_returns).and_yield(yielded_obj).and_return(:baz)
|
|
119
|
+
@instance.method_that_yields_and_returns { |o| o.foo :bar }.should == :baz
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
it "should throw when told to" do
|
|
123
|
+
@mock.stub!(:something).and_throw(:up)
|
|
124
|
+
lambda do
|
|
125
|
+
@mock.something
|
|
126
|
+
end.should throw_symbol(:up)
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
it "should override a pre-existing stub" do
|
|
130
|
+
@stub.stub!(:existing_instance_method).and_return(:updated_stub_value)
|
|
131
|
+
@stub.existing_instance_method.should == :updated_stub_value
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
it "should limit " do
|
|
135
|
+
@stub.stub!(:foo).with("bar")
|
|
136
|
+
@stub.should_receive(:foo).with("baz")
|
|
137
|
+
@stub.foo("bar")
|
|
138
|
+
@stub.foo("baz")
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
it "calculates return value by executing block passed to #and_return" do
|
|
142
|
+
@mock.stub!(:something).with("a","b","c").and_return { |a,b,c| c+b+a }
|
|
143
|
+
@mock.something("a","b","c").should == "cba"
|
|
144
|
+
@mock.rspec_verify
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
describe "A method stub with args" do
|
|
149
|
+
before(:each) do
|
|
150
|
+
@stub = Object.new
|
|
151
|
+
@stub.stub!(:foo).with("bar")
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
it "should not complain if not called" do
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
it "should not complain if called with arg" do
|
|
158
|
+
@stub.foo("bar")
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
it "should complain if called with no arg" do
|
|
162
|
+
lambda do
|
|
163
|
+
@stub.foo
|
|
164
|
+
end.should raise_error
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
it "should complain if called with other arg" do
|
|
168
|
+
lambda do
|
|
169
|
+
@stub.foo("other")
|
|
170
|
+
end.should raise_error
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
it "should not complain if also mocked w/ different args" do
|
|
174
|
+
@stub.should_receive(:foo).with("baz")
|
|
175
|
+
@stub.foo("bar")
|
|
176
|
+
@stub.foo("baz")
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
it "should complain if also mocked w/ different args AND called w/ a 3rd set of args" do
|
|
180
|
+
@stub.should_receive(:foo).with("baz")
|
|
181
|
+
@stub.foo("bar")
|
|
182
|
+
@stub.foo("baz")
|
|
183
|
+
lambda do
|
|
184
|
+
@stub.foo("other")
|
|
185
|
+
end.should raise_error
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
it "should support options" do
|
|
189
|
+
@stub.stub!(:foo, :expected_from => "bar")
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
end
|
|
194
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Mocks
|
|
5
|
+
describe "Example with stubbed and then called message" do
|
|
6
|
+
it "should fail if the message is expected and then subsequently not called again" do
|
|
7
|
+
mock_obj = mock("mock", :msg => nil)
|
|
8
|
+
mock_obj.msg
|
|
9
|
+
mock_obj.should_receive(:msg)
|
|
10
|
+
lambda { mock_obj.rspec_verify }.should raise_error(Spec::Mocks::MockExpectationError)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Mocks
|
|
5
|
+
describe "TwiceCounts" do
|
|
6
|
+
before(:each) do
|
|
7
|
+
@mock = mock("test mock")
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "twice should fail when call count is higher than expected" do
|
|
11
|
+
@mock.should_receive(:random_call).twice
|
|
12
|
+
@mock.random_call
|
|
13
|
+
@mock.random_call
|
|
14
|
+
@mock.random_call
|
|
15
|
+
lambda do
|
|
16
|
+
@mock.rspec_verify
|
|
17
|
+
end.should raise_error(MockExpectationError)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "twice should fail when call count is lower than expected" do
|
|
21
|
+
@mock.should_receive(:random_call).twice
|
|
22
|
+
@mock.random_call
|
|
23
|
+
lambda do
|
|
24
|
+
@mock.rspec_verify
|
|
25
|
+
end.should raise_error(MockExpectationError)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "twice should fail when called twice with wrong args on the first call" do
|
|
29
|
+
@mock.should_receive(:random_call).twice.with("1", 1)
|
|
30
|
+
lambda do
|
|
31
|
+
@mock.random_call(1, "1")
|
|
32
|
+
end.should raise_error(MockExpectationError)
|
|
33
|
+
@mock.rspec_reset
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "twice should fail when called twice with wrong args on the second call" do
|
|
37
|
+
@mock.should_receive(:random_call).twice.with("1", 1)
|
|
38
|
+
@mock.random_call("1", 1)
|
|
39
|
+
lambda do
|
|
40
|
+
@mock.random_call(1, "1")
|
|
41
|
+
end.should raise_error(MockExpectationError)
|
|
42
|
+
@mock.rspec_reset
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "twice should pass when called twice" do
|
|
46
|
+
@mock.should_receive(:random_call).twice
|
|
47
|
+
@mock.random_call
|
|
48
|
+
@mock.random_call
|
|
49
|
+
@mock.rspec_verify
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it "twice should pass when called twice with specified args" do
|
|
53
|
+
@mock.should_receive(:random_call).twice.with("1", 1)
|
|
54
|
+
@mock.random_call("1", 1)
|
|
55
|
+
@mock.random_call("1", 1)
|
|
56
|
+
@mock.rspec_verify
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it "twice should pass when called twice with unspecified args" do
|
|
60
|
+
@mock.should_receive(:random_call).twice
|
|
61
|
+
@mock.random_call("1")
|
|
62
|
+
@mock.random_call(1)
|
|
63
|
+
@mock.rspec_verify
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
+
require File.dirname(__FILE__) + '/../../ruby_forker'
|
|
3
|
+
|
|
4
|
+
describe "The bin/spec script" do
|
|
5
|
+
include RubyForker
|
|
6
|
+
|
|
7
|
+
it "should have no warnings" do
|
|
8
|
+
pending "Hangs on JRuby" if PLATFORM =~ /java/
|
|
9
|
+
spec_path = "#{File.dirname(__FILE__)}/../../../bin/spec"
|
|
10
|
+
|
|
11
|
+
output = ruby "-w #{spec_path} --help 2>&1"
|
|
12
|
+
output.should_not =~ /warning/n
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should show the help w/ no args" do
|
|
16
|
+
pending "Hangs on JRuby" if PLATFORM =~ /java/
|
|
17
|
+
spec_path = "#{File.dirname(__FILE__)}/../../../bin/spec"
|
|
18
|
+
|
|
19
|
+
output = ruby "-w #{spec_path} 2>&1"
|
|
20
|
+
output.should =~ /^Usage: spec/
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Runner
|
|
5
|
+
describe ClassAndArgumentsParser, ".parse" do
|
|
6
|
+
|
|
7
|
+
it "should use a single : to separate class names from arguments" do
|
|
8
|
+
ClassAndArgumentsParser.parse('Foo').should == ['Foo', nil]
|
|
9
|
+
ClassAndArgumentsParser.parse('Foo:arg').should == ['Foo', 'arg']
|
|
10
|
+
ClassAndArgumentsParser.parse('Foo::Bar::Zap:arg').should == ['Foo::Bar::Zap', 'arg']
|
|
11
|
+
ClassAndArgumentsParser.parse('Foo:arg1,arg2').should == ['Foo', 'arg1,arg2']
|
|
12
|
+
ClassAndArgumentsParser.parse('Foo::Bar::Zap:arg1,arg2').should == ['Foo::Bar::Zap', 'arg1,arg2']
|
|
13
|
+
ClassAndArgumentsParser.parse('Foo::Bar::Zap:drb://foo,drb://bar').should == ['Foo::Bar::Zap', 'drb://foo,drb://bar']
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should raise an error when passed an empty string" do
|
|
17
|
+
lambda do
|
|
18
|
+
ClassAndArgumentsParser.parse('')
|
|
19
|
+
end.should raise_error("Couldn't parse \"\"")
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
module Spec
|
|
4
|
+
module Runner
|
|
5
|
+
describe CommandLine, ".run" do
|
|
6
|
+
with_sandboxed_options do
|
|
7
|
+
attr_reader :err, :out
|
|
8
|
+
before do
|
|
9
|
+
@err = options.error_stream
|
|
10
|
+
@out = options.output_stream
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "should run directory" do
|
|
14
|
+
file = File.dirname(__FILE__) + '/../../../examples/passing'
|
|
15
|
+
run_with(OptionParser.parse([file,"-p","**/*_spec.rb,**/*_example.rb"], @err, @out))
|
|
16
|
+
|
|
17
|
+
@out.rewind
|
|
18
|
+
@out.read.should =~ /\d+ examples, 0 failures, 3 pending/n
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should run file" do
|
|
22
|
+
file = File.dirname(__FILE__) + '/../../../examples/failing/predicate_example.rb'
|
|
23
|
+
run_with(OptionParser.parse([file], @err, @out))
|
|
24
|
+
|
|
25
|
+
@out.rewind
|
|
26
|
+
@out.read.should =~ /3 examples, 2 failures/n
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "should raise when file does not exist" do
|
|
30
|
+
file = File.dirname(__FILE__) + '/doesntexist'
|
|
31
|
+
|
|
32
|
+
lambda {
|
|
33
|
+
Spec::Runner::CommandLine.run(OptionParser.parse([file], @err, @out))
|
|
34
|
+
}.should raise_error
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "should return true when in --generate-options mode" do
|
|
38
|
+
# NOTE - this used to say /dev/null but jruby hangs on that for some reason
|
|
39
|
+
Spec::Runner::CommandLine.run(
|
|
40
|
+
OptionParser.parse(['--generate-options', '/tmp/foo'], @err, @out)
|
|
41
|
+
).should be_true
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "should dump even if Interrupt exception is occurred" do
|
|
45
|
+
example_group = Class.new(::Spec::Example::ExampleGroup) do
|
|
46
|
+
describe("example_group")
|
|
47
|
+
it "no error" do
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "should interrupt" do
|
|
51
|
+
raise Interrupt, "I'm interrupting"
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
options = ::Spec::Runner::Options.new(@err, @out)
|
|
56
|
+
::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
|
|
57
|
+
options.reporter.should_receive(:dump)
|
|
58
|
+
options.add_example_group(example_group)
|
|
59
|
+
|
|
60
|
+
Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it "should heckle when options have heckle_runner" do
|
|
64
|
+
example_group = Class.new(::Spec::Example::ExampleGroup).describe("example_group") do
|
|
65
|
+
it "no error" do
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
options = ::Spec::Runner::Options.new(@err, @out)
|
|
69
|
+
::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
|
|
70
|
+
options.add_example_group example_group
|
|
71
|
+
|
|
72
|
+
heckle_runner = mock("heckle_runner")
|
|
73
|
+
heckle_runner.should_receive(:heckle_with)
|
|
74
|
+
$rspec_mocks.__send__(:mocks).delete(heckle_runner)
|
|
75
|
+
|
|
76
|
+
options.heckle_runner = heckle_runner
|
|
77
|
+
options.add_example_group(example_group)
|
|
78
|
+
|
|
79
|
+
Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
|
|
80
|
+
heckle_runner.rspec_verify
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it "should run examples backwards if options.reverse is true" do
|
|
84
|
+
options = ::Spec::Runner::Options.new(@err, @out)
|
|
85
|
+
::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
|
|
86
|
+
options.reverse = true
|
|
87
|
+
|
|
88
|
+
b1 = Class.new(Spec::Example::ExampleGroup)
|
|
89
|
+
b2 = Class.new(Spec::Example::ExampleGroup)
|
|
90
|
+
|
|
91
|
+
b2.should_receive(:run).ordered
|
|
92
|
+
b1.should_receive(:run).ordered
|
|
93
|
+
|
|
94
|
+
options.add_example_group(b1)
|
|
95
|
+
options.add_example_group(b2)
|
|
96
|
+
|
|
97
|
+
Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
it "should pass its ExampleGroup to the reporter" do
|
|
101
|
+
example_group = describe("example_group") do
|
|
102
|
+
it "should" do
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
options = ::Spec::Runner::Options.new(@err, @out)
|
|
106
|
+
options.add_example_group(example_group)
|
|
107
|
+
|
|
108
|
+
::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
|
|
109
|
+
options.reporter.should_receive(:add_example_group).with(example_group)
|
|
110
|
+
|
|
111
|
+
Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
it "runs only selected Examples when options.examples is set" do
|
|
115
|
+
options = ::Spec::Runner::Options.new(@err, @out)
|
|
116
|
+
::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
|
|
117
|
+
|
|
118
|
+
options.examples << "example group expected example"
|
|
119
|
+
expected_example_was_run = false
|
|
120
|
+
unexpected_example_was_run = false
|
|
121
|
+
example_group = describe("example group") do
|
|
122
|
+
it "expected example" do
|
|
123
|
+
expected_example_was_run = true
|
|
124
|
+
end
|
|
125
|
+
it "unexpected example" do
|
|
126
|
+
unexpected_example_was_run = true
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
options.reporter.should_receive(:add_example_group).with(example_group)
|
|
131
|
+
|
|
132
|
+
options.add_example_group example_group
|
|
133
|
+
run_with(options)
|
|
134
|
+
|
|
135
|
+
expected_example_was_run.should be_true
|
|
136
|
+
unexpected_example_was_run.should be_false
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|