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,134 +1,146 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
describe "Matchers should be able to generate their own descriptions" do
|
|
4
|
+
before(:each) do
|
|
5
5
|
@desc = nil
|
|
6
6
|
@callback = lambda { |desc| @desc = desc }
|
|
7
7
|
Spec::Matchers.description_generated(&@callback)
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
it "should == expected" do
|
|
11
11
|
"this".should == "this"
|
|
12
12
|
@desc.should == "should == \"this\""
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
it "should not == expected" do
|
|
16
16
|
"this".should_not == "that"
|
|
17
17
|
@desc.should == "should not == \"that\""
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
it "should be empty (arbitrary predicate)" do
|
|
21
21
|
[].should be_empty
|
|
22
22
|
@desc.should == "should be empty"
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
it "should not be empty (arbitrary predicate)" do
|
|
26
26
|
[1].should_not be_empty
|
|
27
27
|
@desc.should == "should not be empty"
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
it "should be true" do
|
|
31
31
|
true.should be_true
|
|
32
32
|
@desc.should == "should be true"
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
it "should be false" do
|
|
36
36
|
false.should be_false
|
|
37
37
|
@desc.should == "should be false"
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
it "should be nil" do
|
|
41
41
|
nil.should be_nil
|
|
42
42
|
@desc.should == "should be nil"
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
it "should be > n" do
|
|
46
46
|
5.should be > 3
|
|
47
47
|
@desc.should == "should be > 3"
|
|
48
48
|
end
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
5.0.should
|
|
52
|
-
@desc.should == "should be
|
|
50
|
+
it "should be predicate arg1, arg2 and arg3" do
|
|
51
|
+
5.0.should be_between(0,10)
|
|
52
|
+
@desc.should == "should be between 0 and 10"
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "should be_few_words predicate should be transformed to 'be few words'" do
|
|
56
|
+
5.should be_kind_of(Fixnum)
|
|
57
|
+
@desc.should == "should be kind of Fixnum"
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it "should preserve a proper prefix for be predicate" do
|
|
61
|
+
5.should be_a_kind_of(Fixnum)
|
|
62
|
+
@desc.should == "should be a kind of Fixnum"
|
|
63
|
+
5.should be_an_instance_of(Fixnum)
|
|
64
|
+
@desc.should == "should be an instance of Fixnum"
|
|
53
65
|
end
|
|
54
66
|
|
|
55
|
-
|
|
67
|
+
it "should equal" do
|
|
56
68
|
expected = "expected"
|
|
57
69
|
expected.should equal(expected)
|
|
58
70
|
@desc.should == "should equal \"expected\""
|
|
59
71
|
end
|
|
60
72
|
|
|
61
|
-
|
|
73
|
+
it "should_not equal" do
|
|
62
74
|
5.should_not equal(37)
|
|
63
75
|
@desc.should == "should not equal 37"
|
|
64
76
|
end
|
|
65
77
|
|
|
66
|
-
|
|
78
|
+
it "should eql" do
|
|
67
79
|
"string".should eql("string")
|
|
68
80
|
@desc.should == "should eql \"string\""
|
|
69
81
|
end
|
|
70
82
|
|
|
71
|
-
|
|
83
|
+
it "should not eql" do
|
|
72
84
|
"a".should_not eql(:a)
|
|
73
85
|
@desc.should == "should not eql :a"
|
|
74
86
|
end
|
|
75
87
|
|
|
76
|
-
|
|
88
|
+
it "should have_key" do
|
|
77
89
|
{:a => "a"}.should have_key(:a)
|
|
78
90
|
@desc.should == "should have key :a"
|
|
79
91
|
end
|
|
80
92
|
|
|
81
|
-
|
|
93
|
+
it "should have n items" do
|
|
82
94
|
team.should have(3).players
|
|
83
95
|
@desc.should == "should have 3 players"
|
|
84
96
|
end
|
|
85
97
|
|
|
86
|
-
|
|
98
|
+
it "should have at least n items" do
|
|
87
99
|
team.should have_at_least(2).players
|
|
88
100
|
@desc.should == "should have at least 2 players"
|
|
89
101
|
end
|
|
90
102
|
|
|
91
|
-
|
|
103
|
+
it "should have at most n items" do
|
|
92
104
|
team.should have_at_most(4).players
|
|
93
105
|
@desc.should == "should have at most 4 players"
|
|
94
106
|
end
|
|
95
107
|
|
|
96
|
-
|
|
108
|
+
it "should include" do
|
|
97
109
|
[1,2,3].should include(3)
|
|
98
110
|
@desc.should == "should include 3"
|
|
99
111
|
end
|
|
100
112
|
|
|
101
|
-
|
|
113
|
+
it "should match" do
|
|
102
114
|
"this string".should match(/this string/)
|
|
103
115
|
@desc.should == "should match /this string/"
|
|
104
116
|
end
|
|
105
117
|
|
|
106
|
-
|
|
118
|
+
it "should raise_error" do
|
|
107
119
|
lambda { raise }.should raise_error
|
|
108
120
|
@desc.should == "should raise Exception"
|
|
109
121
|
end
|
|
110
122
|
|
|
111
|
-
|
|
123
|
+
it "should raise_error with type" do
|
|
112
124
|
lambda { raise }.should raise_error(RuntimeError)
|
|
113
125
|
@desc.should == "should raise RuntimeError"
|
|
114
126
|
end
|
|
115
127
|
|
|
116
|
-
|
|
128
|
+
it "should raise_error with type and message" do
|
|
117
129
|
lambda { raise "there was an error" }.should raise_error(RuntimeError, "there was an error")
|
|
118
130
|
@desc.should == "should raise RuntimeError with \"there was an error\""
|
|
119
131
|
end
|
|
120
132
|
|
|
121
|
-
|
|
133
|
+
it "should respond_to" do
|
|
122
134
|
[].should respond_to(:insert)
|
|
123
135
|
@desc.should == "should respond to #insert"
|
|
124
136
|
end
|
|
125
137
|
|
|
126
|
-
|
|
138
|
+
it "should throw symbol" do
|
|
127
139
|
lambda { throw :what_a_mess }.should throw_symbol
|
|
128
140
|
@desc.should == "should throw a Symbol"
|
|
129
141
|
end
|
|
130
142
|
|
|
131
|
-
|
|
143
|
+
it "should throw symbol (with named symbol)" do
|
|
132
144
|
lambda { throw :what_a_mess }.should throw_symbol(:what_a_mess)
|
|
133
145
|
@desc.should == "should throw :what_a_mess"
|
|
134
146
|
end
|
|
@@ -141,7 +153,7 @@ context "Matchers should be able to generate a description" do
|
|
|
141
153
|
end.new
|
|
142
154
|
end
|
|
143
155
|
|
|
144
|
-
|
|
145
|
-
Spec::Matchers.
|
|
156
|
+
after(:each) do
|
|
157
|
+
Spec::Matchers.unregister_description_generated(@callback)
|
|
146
158
|
end
|
|
147
159
|
end
|
|
@@ -1,41 +1,28 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
module Spec
|
|
4
|
+
module Matchers
|
|
5
|
+
describe Eql do
|
|
6
|
+
it "should match when actual.eql?(expected)" do
|
|
7
|
+
Eql.new(1).matches?(1).should be_true
|
|
8
|
+
end
|
|
9
|
+
it "should not match when !actual.eql?(expected)" do
|
|
10
|
+
Eql.new(1).matches?(2).should be_false
|
|
11
|
+
end
|
|
12
|
+
it "should describe itself" do
|
|
13
|
+
matcher = Eql.new(1)
|
|
14
|
+
matcher.description.should == "eql 1"
|
|
15
|
+
end
|
|
16
|
+
it "should provide message, expected and actual on #failure_message" do
|
|
17
|
+
matcher = Eql.new("1")
|
|
18
|
+
matcher.matches?(1)
|
|
19
|
+
matcher.failure_message.should == ["expected \"1\", got 1 (using .eql?)", "1", 1]
|
|
20
|
+
end
|
|
21
|
+
it "should provide message, expected and actual on #negative_failure_message" do
|
|
22
|
+
matcher = Eql.new(1)
|
|
23
|
+
matcher.matches?(1)
|
|
24
|
+
matcher.negative_failure_message.should == ["expected 1 not to equal 1 (using .eql?)", 1, 1]
|
|
25
|
+
end
|
|
26
|
+
end
|
|
7
27
|
end
|
|
8
|
-
|
|
9
|
-
specify "should fail unless target.eql?(expected)" do
|
|
10
|
-
lambda {
|
|
11
|
-
1.should eql("1")
|
|
12
|
-
}.should fail
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
specify "should provide message, expected and actual on failure" do
|
|
16
|
-
matcher = eql("1")
|
|
17
|
-
matcher.matches?(1)
|
|
18
|
-
matcher.failure_message.should == ["expected \"1\", got 1 (using .eql?)", "1", 1]
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
context "should_not eql(expected)" do
|
|
24
|
-
|
|
25
|
-
specify "should pass unless target.eql?(expected)" do
|
|
26
|
-
1.should_not eql("1")
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
specify "should fail if target.eql?(expected)" do
|
|
30
|
-
lambda {
|
|
31
|
-
1.should_not eql(1)
|
|
32
|
-
}.should fail
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
specify "should provide message, expected and actual on failure" do
|
|
36
|
-
matcher = eql(1)
|
|
37
|
-
matcher.matches?(1)
|
|
38
|
-
matcher.negative_failure_message.should == ["expected 1 not to equal 1 (using .eql?)", 1, 1]
|
|
39
|
-
end
|
|
40
|
-
|
|
41
28
|
end
|
|
@@ -1,41 +1,28 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
module Spec
|
|
4
|
+
module Matchers
|
|
5
|
+
describe Equal do
|
|
6
|
+
it "should match when actual.equal?(expected)" do
|
|
7
|
+
Equal.new(1).matches?(1).should be_true
|
|
8
|
+
end
|
|
9
|
+
it "should not match when !actual.equal?(expected)" do
|
|
10
|
+
Equal.new("1").matches?("1").should be_false
|
|
11
|
+
end
|
|
12
|
+
it "should describe itself" do
|
|
13
|
+
matcher = Equal.new(1)
|
|
14
|
+
matcher.description.should == "equal 1"
|
|
15
|
+
end
|
|
16
|
+
it "should provide message, expected and actual on #failure_message" do
|
|
17
|
+
matcher = Equal.new("1")
|
|
18
|
+
matcher.matches?(1)
|
|
19
|
+
matcher.failure_message.should == ["expected \"1\", got 1 (using .equal?)", "1", 1]
|
|
20
|
+
end
|
|
21
|
+
it "should provide message, expected and actual on #negative_failure_message" do
|
|
22
|
+
matcher = Equal.new(1)
|
|
23
|
+
matcher.matches?(1)
|
|
24
|
+
matcher.negative_failure_message.should == ["expected 1 not to equal 1 (using .equal?)", 1, 1]
|
|
25
|
+
end
|
|
26
|
+
end
|
|
7
27
|
end
|
|
8
|
-
|
|
9
|
-
specify "should fail unless target.equal?(expected)" do
|
|
10
|
-
lambda {
|
|
11
|
-
"1".should equal("1")
|
|
12
|
-
}.should fail
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
specify "should provide message, expected and actual on failure" do
|
|
16
|
-
matcher = equal("1")
|
|
17
|
-
matcher.matches?("1")
|
|
18
|
-
matcher.failure_message.should == ["expected \"1\", got \"1\" (using .equal?)", "1", "1"]
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
context "should_not equal(expected)" do
|
|
24
|
-
|
|
25
|
-
specify "should pass unless target.equal?(expected)" do
|
|
26
|
-
"1".should_not equal("1")
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
specify "should fail if target.equal?(expected)" do
|
|
30
|
-
lambda {
|
|
31
|
-
1.should_not equal(1)
|
|
32
|
-
}.should fail
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
specify "should provide message, expected and actual on failure" do
|
|
36
|
-
matcher = equal(1)
|
|
37
|
-
matcher.matches?(1)
|
|
38
|
-
matcher.negative_failure_message.should == ["expected 1 not to equal 1 (using .equal?)", 1, 1]
|
|
39
|
-
end
|
|
40
|
-
|
|
41
28
|
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
# NOTE - this was initially handled by an explicit matcher, but is now
|
|
4
|
+
# handled by a default set of predicate_matchers.
|
|
5
|
+
|
|
6
|
+
class Substance
|
|
7
|
+
def initialize exists, description
|
|
8
|
+
@exists = exists
|
|
9
|
+
@description = description
|
|
10
|
+
end
|
|
11
|
+
def exist?
|
|
12
|
+
@exists
|
|
13
|
+
end
|
|
14
|
+
def inspect
|
|
15
|
+
@description
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe "should exist" do
|
|
20
|
+
before(:each) do
|
|
21
|
+
@real = Substance.new true, 'something real'
|
|
22
|
+
@imaginary = Substance.new false, 'something imaginary'
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "should pass if target exists" do
|
|
26
|
+
@real.should exist
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "should fail if target does not exist" do
|
|
30
|
+
lambda { @imaginary.should exist }.
|
|
31
|
+
should fail
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
describe "should_not exist" do
|
|
36
|
+
before(:each) do
|
|
37
|
+
@real = Substance.new true, 'something real'
|
|
38
|
+
@imaginary = Substance.new false, 'something imaginary'
|
|
39
|
+
end
|
|
40
|
+
it "should pass if target doesn't exist" do
|
|
41
|
+
@imaginary.should_not exist
|
|
42
|
+
end
|
|
43
|
+
it "should fail if target does exist" do
|
|
44
|
+
lambda { @real.should_not exist }.
|
|
45
|
+
should fail
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
@@ -46,30 +46,43 @@ module ExampleExpectations
|
|
|
46
46
|
|
|
47
47
|
end
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
49
|
+
module Spec
|
|
50
|
+
module Expectations
|
|
51
|
+
describe ExpectationMatcherHandler, ".handle_matcher" do
|
|
52
|
+
it "should ask the matcher if it matches" do
|
|
53
|
+
matcher = mock("matcher")
|
|
54
|
+
actual = Object.new
|
|
55
|
+
matcher.should_receive(:matches?).with(actual).and_return(true)
|
|
56
|
+
ExpectationMatcherHandler.handle_matcher(actual, matcher)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
describe ExpectationMatcherHandler do
|
|
61
|
+
include ExampleExpectations
|
|
62
|
+
|
|
63
|
+
it "should handle submitted args" do
|
|
64
|
+
5.should arbitrary_matcher(:expected => 5)
|
|
65
|
+
5.should arbitrary_matcher(:expected => "wrong").with(5)
|
|
66
|
+
lambda { 5.should arbitrary_matcher(:expected => 4) }.should fail_with("expected 4, got 5")
|
|
67
|
+
lambda { 5.should arbitrary_matcher(:expected => 5).with(4) }.should fail_with("expected 4, got 5")
|
|
68
|
+
5.should_not arbitrary_matcher(:expected => 4)
|
|
69
|
+
5.should_not arbitrary_matcher(:expected => 5).with(4)
|
|
70
|
+
lambda { 5.should_not arbitrary_matcher(:expected => 5) }.should fail_with("expected not 5, got 5")
|
|
71
|
+
lambda { 5.should_not arbitrary_matcher(:expected => 4).with(5) }.should fail_with("expected not 5, got 5")
|
|
72
|
+
end
|
|
62
73
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
74
|
+
it "should handle the submitted block" do
|
|
75
|
+
5.should arbitrary_matcher { 5 }
|
|
76
|
+
5.should arbitrary_matcher(:expected => 4) { 5 }
|
|
77
|
+
5.should arbitrary_matcher(:expected => 4).with(5) { 3 }
|
|
78
|
+
end
|
|
68
79
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
80
|
+
it "should explain when matcher does not support should_not" do
|
|
81
|
+
lambda {
|
|
82
|
+
5.should_not positive_only_matcher(:expected => 5)
|
|
83
|
+
}.should fail_with(/Matcher does not support should_not.\n/)
|
|
84
|
+
end
|
|
74
85
|
|
|
86
|
+
end
|
|
87
|
+
end
|
|
75
88
|
end
|
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
describe "should have_sym(*args)" do
|
|
4
|
+
it "should pass if #has_sym?(*args) returns true" do
|
|
5
5
|
{:a => "A"}.should have_key(:a)
|
|
6
6
|
end
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
it "should fail if #has_sym?(*args) returns false" do
|
|
9
9
|
lambda {
|
|
10
10
|
{:b => "B"}.should have_key(:a)
|
|
11
11
|
}.should fail_with("expected #has_key?(:a) to return true, got false")
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
it "should fail if target does not respond to #has_sym?" do
|
|
15
15
|
lambda {
|
|
16
16
|
Object.new.should have_key(:a)
|
|
17
17
|
}.should raise_error(NoMethodError)
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
describe "should_not have_sym(*args)" do
|
|
22
|
+
it "should pass if #has_sym?(*args) returns false" do
|
|
23
23
|
{:a => "A"}.should_not have_key(:b)
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
it "should fail if #has_sym?(*args) returns true" do
|
|
27
27
|
lambda {
|
|
28
28
|
{:a => "A"}.should_not have_key(:a)
|
|
29
29
|
}.should fail_with("expected #has_key?(:a) to return false, got true")
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
it "should fail if target does not respond to #has_sym?" do
|
|
33
33
|
lambda {
|
|
34
34
|
Object.new.should have_key(:a)
|
|
35
35
|
}.should raise_error(NoMethodError)
|