rspec 0.8.2 → 0.9.0
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/CHANGES +125 -9
- data/EXAMPLES.rd +50 -27
- data/README +14 -1
- data/Rakefile +95 -42
- data/UPGRADE +31 -0
- data/bin/spec +0 -1
- data/bin/spec_translator +6 -0
- data/examples/auto_spec_description_example.rb +19 -0
- data/examples/{setup_teardown_example.rb → before_and_after_example.rb} +6 -6
- data/examples/behave_as_example.rb +45 -0
- data/examples/custom_expectation_matchers.rb +13 -12
- data/examples/dynamic_spec.rb +2 -2
- data/examples/file_accessor_spec.rb +2 -2
- data/examples/greeter_spec.rb +3 -3
- data/examples/helper_method_example.rb +2 -2
- data/examples/io_processor_spec.rb +4 -4
- data/examples/legacy_spec.rb +10 -0
- data/examples/mocking_example.rb +5 -5
- data/examples/multi_threaded_behaviour_runner.rb +25 -0
- data/examples/partial_mock_example.rb +4 -4
- data/examples/predicate_example.rb +4 -4
- data/examples/priority.txt +1 -0
- data/examples/shared_behaviours_example.rb +31 -0
- data/examples/stack_spec.rb +52 -69
- data/examples/stubbing_example.rb +10 -10
- data/examples/test_case_adapter_example.rb +26 -0
- data/examples/test_case_spec.rb +6 -6
- data/lib/spec.rb +9 -4
- data/lib/spec/dsl.rb +10 -0
- data/lib/spec/dsl/behaviour.rb +189 -0
- data/lib/spec/dsl/behaviour_callbacks.rb +43 -0
- data/lib/spec/dsl/behaviour_eval.rb +170 -0
- data/lib/spec/dsl/behaviour_factory.rb +32 -0
- data/lib/spec/dsl/composite_proc_builder.rb +28 -0
- data/lib/spec/dsl/configuration.rb +38 -0
- data/lib/spec/dsl/description.rb +34 -0
- data/lib/spec/dsl/example.rb +114 -0
- data/lib/spec/dsl/example_matcher.rb +28 -0
- data/lib/spec/{runner/spec_should_raise_handler.rb → dsl/example_should_raise_handler.rb} +4 -4
- data/lib/spec/expectations.rb +0 -3
- data/lib/spec/expectations/differs/default.rb +0 -1
- data/lib/spec/expectations/extensions.rb +0 -1
- data/lib/spec/expectations/extensions/object.rb +10 -53
- data/lib/spec/expectations/handler.rb +14 -18
- data/lib/spec/extensions.rb +1 -0
- data/lib/spec/extensions/object.rb +6 -0
- data/lib/spec/matchers.rb +19 -21
- data/lib/spec/matchers/be.rb +40 -11
- data/lib/spec/matchers/be_close.rb +2 -2
- data/lib/spec/matchers/operator_matcher.rb +52 -0
- data/lib/spec/matchers/respond_to.rb +21 -11
- data/lib/spec/mocks.rb +5 -28
- data/lib/spec/mocks/argument_constraint_matchers.rb +12 -0
- data/lib/spec/mocks/argument_expectation.rb +7 -4
- data/lib/spec/mocks/methods.rb +11 -16
- data/lib/spec/mocks/mock.rb +6 -3
- data/lib/spec/mocks/{mock_handler.rb → proxy.rb} +4 -7
- data/lib/spec/mocks/space.rb +28 -0
- data/lib/spec/mocks/spec_methods.rb +30 -0
- data/lib/spec/rake/spectask.rb +23 -21
- data/lib/spec/rake/verify_rcov.rb +1 -0
- data/lib/spec/runner.rb +88 -35
- data/lib/spec/runner/backtrace_tweaker.rb +2 -1
- data/lib/spec/runner/behaviour_runner.rb +102 -0
- data/lib/spec/runner/command_line.rb +5 -17
- data/lib/spec/runner/drb_command_line.rb +2 -2
- data/lib/spec/runner/extensions/kernel.rb +22 -9
- data/lib/spec/runner/formatter.rb +4 -0
- data/lib/spec/runner/formatter/base_formatter.rb +63 -0
- data/lib/spec/runner/formatter/base_text_formatter.rb +22 -52
- data/lib/spec/runner/formatter/failing_behaviours_formatter.rb +25 -0
- data/lib/spec/runner/formatter/failing_examples_formatter.rb +22 -0
- data/lib/spec/runner/formatter/html_formatter.rb +74 -29
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +6 -8
- data/lib/spec/runner/formatter/rdoc_formatter.rb +6 -6
- data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
- data/lib/spec/runner/formatter/specdoc_formatter.rb +6 -6
- data/lib/spec/runner/heckle_runner.rb +8 -7
- data/lib/spec/runner/option_parser.rb +136 -55
- data/lib/spec/runner/options.rb +26 -0
- data/lib/spec/runner/reporter.rb +38 -31
- data/lib/spec/runner/spec_parser.rb +22 -13
- data/lib/spec/test_case_adapter.rb +10 -0
- data/lib/spec/translator.rb +103 -86
- data/lib/spec/version.rb +7 -15
- data/plugins/mock_frameworks/flexmock.rb +27 -0
- data/plugins/mock_frameworks/mocha.rb +21 -0
- data/plugins/mock_frameworks/rspec.rb +18 -0
- data/spec/spec/dsl/behaviour_eval_spec.rb +49 -0
- data/spec/spec/dsl/behaviour_factory_spec.rb +30 -0
- data/spec/spec/dsl/behaviour_spec.rb +508 -0
- data/spec/spec/dsl/composite_proc_builder_spec.rb +57 -0
- data/spec/spec/dsl/configuration_spec.rb +43 -0
- data/spec/spec/dsl/description_spec.rb +51 -0
- data/spec/spec/dsl/example_class_spec.rb +24 -0
- data/spec/spec/dsl/example_instance_spec.rb +140 -0
- data/spec/spec/dsl/example_should_raise_spec.rb +137 -0
- data/spec/spec/dsl/predicate_matcher_spec.rb +21 -0
- data/spec/spec/dsl/shared_behaviour_spec.rb +186 -0
- data/spec/spec/expectations/differs/default_spec.rb +12 -12
- data/spec/spec/expectations/extensions/object_spec.rb +10 -10
- data/spec/spec/expectations/fail_with_spec.rb +20 -20
- data/spec/spec/matchers/be_close_spec.rb +37 -31
- data/spec/spec/matchers/be_spec.rb +50 -41
- data/spec/spec/matchers/change_spec.rb +54 -54
- data/spec/spec/matchers/description_generation_spec.rb +43 -31
- data/spec/spec/matchers/eql_spec.rb +24 -37
- data/spec/spec/matchers/equal_spec.rb +24 -37
- data/spec/spec/matchers/exist_spec.rb +48 -0
- data/spec/spec/matchers/handler_spec.rb +36 -23
- data/spec/spec/matchers/has_spec.rb +8 -8
- data/spec/spec/matchers/have_spec.rb +38 -38
- data/spec/spec/matchers/include_spec.rb +6 -6
- data/spec/spec/matchers/match_spec.rb +8 -8
- data/spec/spec/matchers/matcher_methods_spec.rb +24 -31
- data/spec/spec/matchers/raise_error_spec.rb +34 -34
- data/spec/spec/matchers/respond_to_spec.rb +32 -8
- data/spec/spec/matchers/satisfy_spec.rb +6 -6
- data/spec/spec/matchers/should_===_spec.rb +38 -0
- data/spec/spec/matchers/should_==_spec.rb +37 -0
- data/spec/spec/matchers/should_=~_spec.rb +36 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +47 -55
- data/spec/spec/mocks/any_number_of_times_spec.rb +16 -21
- data/spec/spec/mocks/argument_expectation_spec.rb +3 -3
- data/spec/spec/mocks/at_least_spec.rb +30 -30
- data/spec/spec/mocks/at_most_spec.rb +53 -57
- data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
- data/spec/spec/mocks/bug_report_7611_spec.rb +3 -3
- data/spec/spec/mocks/bug_report_7805_spec.rb +3 -3
- data/spec/spec/mocks/bug_report_8165_spec.rb +5 -5
- data/spec/spec/mocks/bug_report_8302_spec.rb +5 -5
- data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +26 -27
- data/spec/spec/mocks/mock_ordering_spec.rb +19 -15
- data/spec/spec/mocks/mock_space_spec.rb +54 -0
- data/spec/spec/mocks/mock_spec.rb +111 -141
- data/spec/spec/mocks/multiple_return_value_spec.rb +48 -48
- data/spec/spec/mocks/null_object_mock_spec.rb +10 -10
- data/spec/spec/mocks/once_counts_spec.rb +32 -35
- data/spec/spec/mocks/options_hash_spec.rb +12 -10
- data/spec/spec/mocks/partial_mock_spec.rb +15 -15
- data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +24 -22
- data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +19 -19
- data/spec/spec/mocks/precise_counts_spec.rb +28 -32
- data/spec/spec/mocks/record_messages_spec.rb +10 -10
- data/spec/spec/mocks/stub_spec.rb +45 -45
- data/spec/spec/mocks/twice_counts_spec.rb +21 -21
- data/spec/spec/package/bin_spec_spec.rb +12 -0
- data/spec/spec/runner/behaviour_runner_spec.rb +114 -0
- data/spec/spec/runner/command_line_spec.rb +8 -8
- data/spec/spec/runner/context_matching_spec.rb +14 -15
- data/spec/spec/runner/drb_command_line_spec.rb +12 -12
- data/spec/spec/runner/execution_context_spec.rb +8 -29
- data/spec/spec/runner/extensions/kernel_spec.rb +36 -0
- data/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +27 -0
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +28 -0
- data/spec/spec/runner/formatter/html_formatter_spec.rb +9 -8
- data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +6 -6
- data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +10 -10
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +22 -27
- data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +6 -5
- data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +17 -17
- data/spec/spec/runner/formatter/snippet_extractor_spec.rb +11 -0
- data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +6 -6
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +17 -17
- data/spec/spec/runner/heckle_runner_spec.rb +21 -21
- data/spec/spec/runner/heckler_spec.rb +5 -5
- data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +12 -12
- data/spec/spec/runner/object_ext_spec.rb +3 -3
- data/spec/spec/runner/option_parser_spec.rb +171 -102
- data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +21 -12
- data/spec/spec/runner/reporter_spec.rb +106 -97
- data/spec/spec/runner/spec_matcher_spec.rb +46 -51
- data/spec/spec/runner/spec_parser_spec.rb +72 -16
- data/spec/spec/spec_classes.rb +12 -3
- data/spec/spec/translator_spec.rb +165 -36
- metadata +66 -76
- data/RELEASE-PLAN +0 -117
- data/examples/auto_spec_name_generation_example.rb +0 -18
- data/lib/spec/callback.rb +0 -11
- data/lib/spec/callback/callback_container.rb +0 -60
- data/lib/spec/callback/extensions/module.rb +0 -24
- data/lib/spec/callback/extensions/object.rb +0 -37
- data/lib/spec/deprecated.rb +0 -3
- data/lib/spec/expectations/extensions/proc.rb +0 -57
- data/lib/spec/expectations/should.rb +0 -5
- data/lib/spec/expectations/should/base.rb +0 -64
- data/lib/spec/expectations/should/change.rb +0 -69
- data/lib/spec/expectations/should/have.rb +0 -128
- data/lib/spec/expectations/should/not.rb +0 -74
- data/lib/spec/expectations/should/should.rb +0 -81
- data/lib/spec/expectations/sugar.rb +0 -47
- data/lib/spec/runner/context.rb +0 -154
- data/lib/spec/runner/context_eval.rb +0 -142
- data/lib/spec/runner/context_runner.rb +0 -55
- data/lib/spec/runner/execution_context.rb +0 -17
- data/lib/spec/runner/spec_matcher.rb +0 -25
- data/lib/spec/runner/specification.rb +0 -114
- data/spec/spec/callback/callback_container_spec.rb +0 -27
- data/spec/spec/callback/module_spec.rb +0 -37
- data/spec/spec/callback/object_spec.rb +0 -90
- data/spec/spec/callback/object_with_class_callback_spec.rb +0 -19
- data/spec/spec/expectations/should/should_==_spec.rb +0 -19
- data/spec/spec/expectations/should/should_=~_spec.rb +0 -13
- data/spec/spec/expectations/should/should_be_a_kind_of_spec.rb +0 -21
- data/spec/spec/expectations/should/should_be_an_instance_of_spec.rb +0 -30
- data/spec/spec/expectations/should/should_be_arbitrary_predicate_spec.rb +0 -81
- data/spec/spec/expectations/should/should_be_close_spec.rb +0 -18
- data/spec/spec/expectations/should/should_be_comparison_operator_spec.rb +0 -44
- data/spec/spec/expectations/should/should_be_false_spec.rb +0 -39
- data/spec/spec/expectations/should/should_be_spec.rb +0 -11
- data/spec/spec/expectations/should/should_be_true_spec.rb +0 -27
- data/spec/spec/expectations/should/should_change_spec.rb +0 -184
- data/spec/spec/expectations/should/should_eql_spec.rb +0 -11
- data/spec/spec/expectations/should/should_equal_spec.rb +0 -11
- data/spec/spec/expectations/should/should_have_at_least_spec.rb +0 -53
- data/spec/spec/expectations/should/should_have_at_most_spec.rb +0 -45
- data/spec/spec/expectations/should/should_have_key_spec.rb +0 -21
- data/spec/spec/expectations/should/should_have_spec.rb +0 -64
- data/spec/spec/expectations/should/should_include_spec.rb +0 -59
- data/spec/spec/expectations/should/should_match_spec.rb +0 -25
- data/spec/spec/expectations/should/should_not_==_spec.rb +0 -15
- data/spec/spec/expectations/should/should_not_be_a_kind_of_spec.rb +0 -21
- data/spec/spec/expectations/should/should_not_be_an_instance_of_spec.rb +0 -11
- data/spec/spec/expectations/should/should_not_be_arbitrary_predicate_spec.rb +0 -68
- data/spec/spec/expectations/should/should_not_be_spec.rb +0 -11
- data/spec/spec/expectations/should/should_not_change_spec.rb +0 -24
- data/spec/spec/expectations/should/should_not_eql_spec.rb +0 -11
- data/spec/spec/expectations/should/should_not_equal_spec.rb +0 -11
- data/spec/spec/expectations/should/should_not_have_key_spec.rb +0 -15
- data/spec/spec/expectations/should/should_not_include_spec.rb +0 -58
- data/spec/spec/expectations/should/should_not_match_spec.rb +0 -11
- data/spec/spec/expectations/should/should_not_raise_spec.rb +0 -75
- data/spec/spec/expectations/should/should_not_respond_to_spec.rb +0 -15
- data/spec/spec/expectations/should/should_not_throw_spec.rb +0 -35
- data/spec/spec/expectations/should/should_raise_spec.rb +0 -66
- data/spec/spec/expectations/should/should_respond_to_spec.rb +0 -15
- data/spec/spec/expectations/should/should_satisfy_spec.rb +0 -35
- data/spec/spec/expectations/should/should_throw_spec.rb +0 -27
- data/spec/spec/runner/context_runner_spec.rb +0 -100
- data/spec/spec/runner/context_spec.rb +0 -405
- data/spec/spec/runner/kernel_ext_spec.rb +0 -16
- data/spec/spec/runner/spec_name_generation_spec.rb +0 -102
- data/spec/spec/runner/specification_class_spec.rb +0 -72
- data/spec/spec/runner/specification_instance_spec.rb +0 -160
- data/spec/spec/runner/specification_should_raise_spec.rb +0 -136
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
|
-
module Mocks
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
@mock = Mock.new("test mock"
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
end
|
|
12
|
-
specify "should fail when at most n times method is called n plus 1 times" do
|
|
4
|
+
module Mocks
|
|
5
|
+
describe "AtMost" do
|
|
6
|
+
before(:each) do
|
|
7
|
+
@mock = Mock.new("test mock")
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should fail when at most n times method is called n plus 1 times" do
|
|
13
11
|
@mock.should_receive(:random_call).at_most(4).times
|
|
14
12
|
@mock.random_call
|
|
15
13
|
@mock.random_call
|
|
@@ -17,81 +15,79 @@ context "AtMost" do
|
|
|
17
15
|
@mock.random_call
|
|
18
16
|
@mock.random_call
|
|
19
17
|
lambda do
|
|
20
|
-
@mock.
|
|
21
|
-
end.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
18
|
+
@mock.rspec_verify
|
|
19
|
+
end.should raise_error(MockExpectationError)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "should fail when at most once method is called twice" do
|
|
25
23
|
@mock.should_receive(:random_call).at_most(:once)
|
|
26
24
|
@mock.random_call
|
|
27
25
|
@mock.random_call
|
|
28
26
|
lambda do
|
|
29
|
-
@mock.
|
|
30
|
-
end.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
@mock.rspec_verify
|
|
28
|
+
end.should raise_error(MockExpectationError)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should fail when at most twice method is called three times" do
|
|
34
32
|
@mock.should_receive(:random_call).at_most(:twice)
|
|
35
33
|
@mock.random_call
|
|
36
34
|
@mock.random_call
|
|
37
35
|
@mock.random_call
|
|
38
36
|
lambda do
|
|
39
|
-
@mock.
|
|
40
|
-
end.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
37
|
+
@mock.rspec_verify
|
|
38
|
+
end.should raise_error(MockExpectationError)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "should pass when at most n times method is called exactly n times" do
|
|
44
42
|
@mock.should_receive(:random_call).at_most(4).times
|
|
45
43
|
@mock.random_call
|
|
46
44
|
@mock.random_call
|
|
47
45
|
@mock.random_call
|
|
48
46
|
@mock.random_call
|
|
49
|
-
@mock.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
47
|
+
@mock.rspec_verify
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "should pass when at most n times method is called less than n times" do
|
|
53
51
|
@mock.should_receive(:random_call).at_most(4).times
|
|
54
52
|
@mock.random_call
|
|
55
53
|
@mock.random_call
|
|
56
54
|
@mock.random_call
|
|
57
|
-
@mock.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
55
|
+
@mock.rspec_verify
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "should pass when at most n times method is never called" do
|
|
61
59
|
@mock.should_receive(:random_call).at_most(4).times
|
|
62
|
-
@mock.
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
60
|
+
@mock.rspec_verify
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it "should pass when at most once method is called once" do
|
|
66
64
|
@mock.should_receive(:random_call).at_most(:once)
|
|
67
65
|
@mock.random_call
|
|
68
|
-
@mock.
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
66
|
+
@mock.rspec_verify
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "should pass when at most once method is never called" do
|
|
72
70
|
@mock.should_receive(:random_call).at_most(:once)
|
|
73
|
-
@mock.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
71
|
+
@mock.rspec_verify
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it "should pass when at most twice method is called once" do
|
|
77
75
|
@mock.should_receive(:random_call).at_most(:twice)
|
|
78
76
|
@mock.random_call
|
|
79
|
-
@mock.
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
77
|
+
@mock.rspec_verify
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
it "should pass when at most twice method is called twice" do
|
|
83
81
|
@mock.should_receive(:random_call).at_most(:twice)
|
|
84
82
|
@mock.random_call
|
|
85
83
|
@mock.random_call
|
|
86
|
-
@mock.
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
84
|
+
@mock.rspec_verify
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it "should pass when at most twice method is never called" do
|
|
90
88
|
@mock.should_receive(:random_call).at_most(:twice)
|
|
91
|
-
@mock.
|
|
92
|
-
|
|
89
|
+
@mock.rspec_verify
|
|
90
|
+
end
|
|
93
91
|
end
|
|
94
|
-
|
|
95
|
-
end
|
|
96
|
-
end
|
|
92
|
+
end
|
|
97
93
|
end
|
|
@@ -7,12 +7,12 @@ module Bug7611
|
|
|
7
7
|
class Bar < Foo
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
describe "A Partial Mock" do
|
|
11
|
+
it "should respect subclasses" do
|
|
12
12
|
Foo.stub!(:new).and_return(Object.new)
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
it "should" do
|
|
16
16
|
Bar.new.class.should == Bar
|
|
17
17
|
end
|
|
18
18
|
end
|
|
@@ -3,12 +3,12 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
|
3
3
|
module Bug7805
|
|
4
4
|
#This is really a duplicate of 8302
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
describe "Stubs should correctly restore module methods" do
|
|
7
|
+
it "1 - stub the open method" do
|
|
8
8
|
File.stub!(:open).and_return("something")
|
|
9
9
|
File.open.should == "something"
|
|
10
10
|
end
|
|
11
|
-
|
|
11
|
+
it "2 - use File.open to create example.txt" do
|
|
12
12
|
filename = "#{File.dirname(__FILE__)}/example-#{Time.new.to_i}.txt"
|
|
13
13
|
File.exist?(filename).should be_false
|
|
14
14
|
file = File.open(filename,'w')
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
# When should_receive(:sym) is sent to any object, the
|
|
3
|
+
describe "An object where respond_to? is true and does not have method" do
|
|
4
|
+
# When should_receive(:sym) is sent to any object, the Proxy sends
|
|
5
5
|
# respond_to?(:sym) to that object to see if the method should be proxied.
|
|
6
6
|
#
|
|
7
|
-
# If respond_to? itself is proxied, then when the
|
|
7
|
+
# If respond_to? itself is proxied, then when the Proxy sends respond_to?
|
|
8
8
|
# to the object, the proxy is invoked and responds yes (if so set in the spec).
|
|
9
9
|
# When the object does NOT actually respond to :sym, an exception is thrown
|
|
10
10
|
# when trying to proxy it.
|
|
@@ -12,7 +12,7 @@ context "An object where respond_to? is true and does not have method" do
|
|
|
12
12
|
# The fix was to keep track of whether :respond_to? had been proxied and, if
|
|
13
13
|
# so, call the munged copy of :respond_to? on the object.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
it "should not raise an exception" do
|
|
16
16
|
obj = Object.new
|
|
17
17
|
obj.should_receive(:respond_to?).with(:foobar).and_return(true)
|
|
18
18
|
obj.should_receive(:foobar).and_return(:baz)
|
|
@@ -20,7 +20,7 @@ context "An object where respond_to? is true and does not have method" do
|
|
|
20
20
|
obj.foobar.should == :baz
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
it "should not raise an exception" do
|
|
24
24
|
obj = mock("obj")
|
|
25
25
|
obj.should_receive(:respond_to?).with(:foobar).and_return(true)
|
|
26
26
|
obj.should_receive(:foobar).and_return(:baz)
|
|
@@ -9,17 +9,17 @@ module Bug8302
|
|
|
9
9
|
end
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
describe "Bug report 8302:" do
|
|
13
|
+
it "class method is not restored correctly when proxied" do
|
|
14
14
|
Foo.should_not_receive(:class_method).with(Array.new)
|
|
15
|
-
Foo.
|
|
15
|
+
Foo.rspec_verify
|
|
16
16
|
Foo.class_method(Array.new)
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
it "instance method is not restored correctly when proxied" do
|
|
20
20
|
foo = Foo.new
|
|
21
21
|
foo.should_not_receive(:instance_bar).with(Array.new)
|
|
22
|
-
foo.
|
|
22
|
+
foo.rspec_verify
|
|
23
23
|
foo.instance_bar(Array.new)
|
|
24
24
|
end
|
|
25
25
|
end
|
|
@@ -2,72 +2,71 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
4
|
module Mocks
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
@mock =
|
|
8
|
-
|
|
9
|
-
})
|
|
10
|
-
@reporter = Mock.new("reporter", {
|
|
11
|
-
:null_object => true,
|
|
12
|
-
:auto_verify => false
|
|
13
|
-
})
|
|
5
|
+
describe "FailingMockArgumentConstraints" do
|
|
6
|
+
before do
|
|
7
|
+
@mock = mock("test mock")
|
|
8
|
+
@reporter = Mock.new("reporter", :null_object => true)
|
|
14
9
|
end
|
|
15
10
|
|
|
16
|
-
|
|
11
|
+
after do
|
|
12
|
+
@mock.rspec_reset
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should reject goose when expecting a duck" do
|
|
17
16
|
@mock.should_receive(:random_call).with(DuckTypeArgConstraint.new(:abs, :div))
|
|
18
|
-
lambda { @mock.random_call("I don't respond to :abs or :div") }.
|
|
17
|
+
lambda { @mock.random_call("I don't respond to :abs or :div") }.should raise_error(MockExpectationError)
|
|
19
18
|
end
|
|
20
19
|
|
|
21
|
-
|
|
20
|
+
it "should reject non boolean" do
|
|
22
21
|
@mock.should_receive(:random_call).with(:boolean)
|
|
23
22
|
lambda do
|
|
24
23
|
@mock.random_call("false")
|
|
25
|
-
end.
|
|
24
|
+
end.should raise_error(MockExpectationError)
|
|
26
25
|
end
|
|
27
26
|
|
|
28
|
-
|
|
27
|
+
it "should reject non numeric" do
|
|
29
28
|
@mock.should_receive(:random_call).with(:numeric)
|
|
30
29
|
lambda do
|
|
31
30
|
@mock.random_call("1")
|
|
32
|
-
end.
|
|
31
|
+
end.should raise_error(MockExpectationError)
|
|
33
32
|
end
|
|
34
33
|
|
|
35
|
-
|
|
34
|
+
it "should reject non string" do
|
|
36
35
|
@mock.should_receive(:random_call).with(:string)
|
|
37
36
|
lambda do
|
|
38
37
|
@mock.random_call(123)
|
|
39
|
-
end.
|
|
38
|
+
end.should raise_error(MockExpectationError)
|
|
40
39
|
end
|
|
41
40
|
|
|
42
|
-
|
|
41
|
+
it "should fail if regexp does not match submitted string" do
|
|
43
42
|
@mock.should_receive(:random_call).with(/bcd/)
|
|
44
|
-
lambda { @mock.random_call("abc") }.
|
|
43
|
+
lambda { @mock.random_call("abc") }.should raise_error(MockExpectationError)
|
|
45
44
|
end
|
|
46
45
|
|
|
47
|
-
|
|
46
|
+
it "should fail if regexp does not match submitted regexp" do
|
|
48
47
|
@mock.should_receive(:random_call).with(/bcd/)
|
|
49
|
-
lambda { @mock.random_call(/bcde/) }.
|
|
48
|
+
lambda { @mock.random_call(/bcde/) }.should raise_error(MockExpectationError)
|
|
50
49
|
end
|
|
51
50
|
|
|
52
|
-
|
|
51
|
+
it "should fail for a hash w/ wrong values" do
|
|
53
52
|
@mock.should_receive(:random_call).with(:a => "b", :c => "d")
|
|
54
53
|
lambda do
|
|
55
54
|
@mock.random_call(:a => "b", :c => "e")
|
|
56
|
-
end.
|
|
55
|
+
end.should raise_error(MockExpectationError, /Mock 'test mock' expected :random_call with \(\{(:a=>\"b\", :c=>\"d\"|:c=>\"d\", :a=>\"b\")\}\) but received it with \(\{(:a=>\"b\", :c=>\"e\"|:c=>\"e\", :a=>\"b\")\}\)/)
|
|
57
56
|
end
|
|
58
57
|
|
|
59
|
-
|
|
58
|
+
it "should fail for a hash w/ wrong keys" do
|
|
60
59
|
@mock.should_receive(:random_call).with(:a => "b", :c => "d")
|
|
61
60
|
lambda do
|
|
62
61
|
@mock.random_call("a" => "b", "c" => "d")
|
|
63
|
-
end.
|
|
62
|
+
end.should raise_error(MockExpectationError, /Mock 'test mock' expected :random_call with \(\{(:a=>\"b\", :c=>\"d\"|:c=>\"d\", :a=>\"b\")\}\) but received it with \(\{(\"a\"=>\"b\", \"c\"=>\"d\"|\"c\"=>\"d\", \"a\"=>\"b\")\}\)/)
|
|
64
63
|
end
|
|
65
64
|
|
|
66
|
-
|
|
65
|
+
it "should match against a Matcher" do
|
|
67
66
|
lambda do
|
|
68
67
|
@mock.should_receive(:msg).with(equal(3))
|
|
69
68
|
@mock.msg(37)
|
|
70
|
-
end.
|
|
69
|
+
end.should raise_error(MockExpectationError, "Mock 'test mock' expected :msg with (equal 3) but received it with (37)")
|
|
71
70
|
end
|
|
72
71
|
end
|
|
73
72
|
end
|
|
@@ -3,59 +3,63 @@ require File.dirname(__FILE__) + '/../../spec_helper'
|
|
|
3
3
|
module Spec
|
|
4
4
|
module Mocks
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
describe "Mock ordering" do
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
@mock =
|
|
8
|
+
before do
|
|
9
|
+
@mock = mock("test mock")
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
after do
|
|
13
|
+
@mock.rspec_reset
|
|
10
14
|
end
|
|
11
15
|
|
|
12
|
-
|
|
16
|
+
it "should pass two calls in order" do
|
|
13
17
|
@mock.should_receive(:one).ordered
|
|
14
18
|
@mock.should_receive(:two).ordered
|
|
15
19
|
@mock.one
|
|
16
20
|
@mock.two
|
|
17
|
-
@mock.
|
|
21
|
+
@mock.rspec_verify
|
|
18
22
|
end
|
|
19
23
|
|
|
20
|
-
|
|
24
|
+
it "should pass three calls in order" do
|
|
21
25
|
@mock.should_receive(:one).ordered
|
|
22
26
|
@mock.should_receive(:two).ordered
|
|
23
27
|
@mock.should_receive(:three).ordered
|
|
24
28
|
@mock.one
|
|
25
29
|
@mock.two
|
|
26
30
|
@mock.three
|
|
27
|
-
@mock.
|
|
31
|
+
@mock.rspec_verify
|
|
28
32
|
end
|
|
29
33
|
|
|
30
|
-
|
|
34
|
+
it "should fail if second call comes first" do
|
|
31
35
|
@mock.should_receive(:one).ordered
|
|
32
36
|
@mock.should_receive(:two).ordered
|
|
33
37
|
lambda do
|
|
34
38
|
@mock.two
|
|
35
|
-
end.
|
|
39
|
+
end.should raise_error(MockExpectationError, "Mock 'test mock' received :two out of order")
|
|
36
40
|
end
|
|
37
41
|
|
|
38
|
-
|
|
42
|
+
it "should fail if third call comes first" do
|
|
39
43
|
@mock.should_receive(:one).ordered
|
|
40
44
|
@mock.should_receive(:two).ordered
|
|
41
45
|
@mock.should_receive(:three).ordered
|
|
42
46
|
@mock.one
|
|
43
47
|
lambda do
|
|
44
48
|
@mock.three
|
|
45
|
-
end.
|
|
49
|
+
end.should raise_error(MockExpectationError, "Mock 'test mock' received :three out of order")
|
|
46
50
|
end
|
|
47
51
|
|
|
48
|
-
|
|
52
|
+
it "should fail if third call comes second" do
|
|
49
53
|
@mock.should_receive(:one).ordered
|
|
50
54
|
@mock.should_receive(:two).ordered
|
|
51
55
|
@mock.should_receive(:three).ordered
|
|
52
56
|
@mock.one
|
|
53
57
|
lambda do
|
|
54
58
|
@mock.three
|
|
55
|
-
end.
|
|
59
|
+
end.should raise_error(MockExpectationError, "Mock 'test mock' received :three out of order")
|
|
56
60
|
end
|
|
57
61
|
|
|
58
|
-
|
|
62
|
+
it "should ignore order of non ordered calls" do
|
|
59
63
|
@mock.should_receive(:ignored_0)
|
|
60
64
|
@mock.should_receive(:ordered_1).ordered
|
|
61
65
|
@mock.should_receive(:ignored_1)
|
|
@@ -72,7 +76,7 @@ module Spec
|
|
|
72
76
|
@mock.ignored_2
|
|
73
77
|
@mock.ordered_3
|
|
74
78
|
@mock.ignored_1
|
|
75
|
-
@mock.
|
|
79
|
+
@mock.rspec_verify
|
|
76
80
|
end
|
|
77
81
|
|
|
78
82
|
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
|
+
require 'spec/mocks'
|
|
3
|
+
|
|
4
|
+
module Spec
|
|
5
|
+
module Mocks
|
|
6
|
+
describe Space do
|
|
7
|
+
before :each do
|
|
8
|
+
@space = Space.new
|
|
9
|
+
klazz = Class.new do
|
|
10
|
+
def rspec_verify
|
|
11
|
+
@verified = true
|
|
12
|
+
end
|
|
13
|
+
def verified?
|
|
14
|
+
@verified
|
|
15
|
+
end
|
|
16
|
+
def rspec_reset
|
|
17
|
+
@reset = true
|
|
18
|
+
end
|
|
19
|
+
def reset?
|
|
20
|
+
@reset
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
@m1 = klazz.new
|
|
24
|
+
@m2 = klazz.new
|
|
25
|
+
end
|
|
26
|
+
it "should verify all mocks within" do
|
|
27
|
+
@space.add(@m1)
|
|
28
|
+
@space.add(@m2)
|
|
29
|
+
@space.verify_all
|
|
30
|
+
@m1.should be_verified
|
|
31
|
+
@m2.should be_verified
|
|
32
|
+
end
|
|
33
|
+
it "should reset all mocks within" do
|
|
34
|
+
@space.add(m1 = mock("mock1"))
|
|
35
|
+
@space.add(m2 = mock("mock2"))
|
|
36
|
+
m1.should_receive(:rspec_reset)
|
|
37
|
+
m2.should_receive(:rspec_reset)
|
|
38
|
+
@space.reset_all
|
|
39
|
+
end
|
|
40
|
+
it "should clear internal mocks on reset_all" do
|
|
41
|
+
@space.add(m = mock("mock"))
|
|
42
|
+
@space.reset_all
|
|
43
|
+
@space.instance_eval { mocks.empty? }.should be_true
|
|
44
|
+
end
|
|
45
|
+
it "should only add an instance once" do
|
|
46
|
+
@space.add(m1 = mock("mock1"))
|
|
47
|
+
@space.add(m1)
|
|
48
|
+
m1.should_receive(:rspec_verify)
|
|
49
|
+
@space.verify_all
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|