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
|
@@ -11,22 +11,22 @@ module HaveSpecHelper
|
|
|
11
11
|
end
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
describe "should have(n).items" do
|
|
15
15
|
include HaveSpecHelper
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
it "should pass if target has a collection of items with n members" do
|
|
18
18
|
owner = create_collection_owner_with(3)
|
|
19
19
|
owner.should have(3).items_in_collection_with_length_method
|
|
20
20
|
owner.should have(3).items_in_collection_with_size_method
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
it "should convert :no to 0" do
|
|
24
24
|
owner = create_collection_owner_with(0)
|
|
25
25
|
owner.should have(:no).items_in_collection_with_length_method
|
|
26
26
|
owner.should have(:no).items_in_collection_with_size_method
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
it "should fail if target has a collection of items with < n members" do
|
|
30
30
|
owner = create_collection_owner_with(3)
|
|
31
31
|
lambda {
|
|
32
32
|
owner.should have(4).items_in_collection_with_length_method
|
|
@@ -36,7 +36,7 @@ context "should have(n).items" do
|
|
|
36
36
|
}.should fail_with("expected 4 items_in_collection_with_size_method, got 3")
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
it "should fail if target has a collection of items with > n members" do
|
|
40
40
|
owner = create_collection_owner_with(3)
|
|
41
41
|
lambda {
|
|
42
42
|
owner.should have(2).items_in_collection_with_length_method
|
|
@@ -47,22 +47,22 @@ context "should have(n).items" do
|
|
|
47
47
|
end
|
|
48
48
|
end
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
describe "should_not have(n).items" do
|
|
51
51
|
include HaveSpecHelper
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
it "should pass if target has a collection of items with < n members" do
|
|
54
54
|
owner = create_collection_owner_with(3)
|
|
55
55
|
owner.should_not have(4).items_in_collection_with_length_method
|
|
56
56
|
owner.should_not have(4).items_in_collection_with_size_method
|
|
57
57
|
end
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
it "should pass if target has a collection of items with > n members" do
|
|
60
60
|
owner = create_collection_owner_with(3)
|
|
61
61
|
owner.should_not have(2).items_in_collection_with_length_method
|
|
62
62
|
owner.should_not have(2).items_in_collection_with_size_method
|
|
63
63
|
end
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
it "should fail if target has a collection of items with n members" do
|
|
66
66
|
owner = create_collection_owner_with(3)
|
|
67
67
|
lambda {
|
|
68
68
|
owner.should_not have(3).items_in_collection_with_length_method
|
|
@@ -73,22 +73,22 @@ context "should_not have(n).items" do
|
|
|
73
73
|
end
|
|
74
74
|
end
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
describe "should have_exactly(n).items" do
|
|
77
77
|
include HaveSpecHelper
|
|
78
78
|
|
|
79
|
-
|
|
79
|
+
it "should pass if target has a collection of items with n members" do
|
|
80
80
|
owner = create_collection_owner_with(3)
|
|
81
81
|
owner.should have_exactly(3).items_in_collection_with_length_method
|
|
82
82
|
owner.should have_exactly(3).items_in_collection_with_size_method
|
|
83
83
|
end
|
|
84
84
|
|
|
85
|
-
|
|
85
|
+
it "should convert :no to 0" do
|
|
86
86
|
owner = create_collection_owner_with(0)
|
|
87
87
|
owner.should have_exactly(:no).items_in_collection_with_length_method
|
|
88
88
|
owner.should have_exactly(:no).items_in_collection_with_size_method
|
|
89
89
|
end
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
it "should fail if target has a collection of items with < n members" do
|
|
92
92
|
owner = create_collection_owner_with(3)
|
|
93
93
|
lambda {
|
|
94
94
|
owner.should have_exactly(4).items_in_collection_with_length_method
|
|
@@ -98,7 +98,7 @@ context "should have_exactly(n).items" do
|
|
|
98
98
|
}.should fail_with("expected 4 items_in_collection_with_size_method, got 3")
|
|
99
99
|
end
|
|
100
100
|
|
|
101
|
-
|
|
101
|
+
it "should fail if target has a collection of items with > n members" do
|
|
102
102
|
owner = create_collection_owner_with(3)
|
|
103
103
|
lambda {
|
|
104
104
|
owner.should have_exactly(2).items_in_collection_with_length_method
|
|
@@ -109,22 +109,22 @@ context "should have_exactly(n).items" do
|
|
|
109
109
|
end
|
|
110
110
|
end
|
|
111
111
|
|
|
112
|
-
|
|
112
|
+
describe "should have_at_least(n).items" do
|
|
113
113
|
include HaveSpecHelper
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
it "should pass if target has a collection of items with n members" do
|
|
116
116
|
owner = create_collection_owner_with(3)
|
|
117
117
|
owner.should have_at_least(3).items_in_collection_with_length_method
|
|
118
118
|
owner.should have_at_least(3).items_in_collection_with_size_method
|
|
119
119
|
end
|
|
120
120
|
|
|
121
|
-
|
|
121
|
+
it "should pass if target has a collection of items with > n members" do
|
|
122
122
|
owner = create_collection_owner_with(3)
|
|
123
123
|
owner.should have_at_least(2).items_in_collection_with_length_method
|
|
124
124
|
owner.should have_at_least(2).items_in_collection_with_size_method
|
|
125
125
|
end
|
|
126
126
|
|
|
127
|
-
|
|
127
|
+
it "should fail if target has a collection of items with < n members" do
|
|
128
128
|
owner = create_collection_owner_with(3)
|
|
129
129
|
lambda {
|
|
130
130
|
owner.should have_at_least(4).items_in_collection_with_length_method
|
|
@@ -134,7 +134,7 @@ context "should have_at_least(n).items" do
|
|
|
134
134
|
}.should fail_with("expected at least 4 items_in_collection_with_size_method, got 3")
|
|
135
135
|
end
|
|
136
136
|
|
|
137
|
-
|
|
137
|
+
it "should provide educational negative failure messages" do
|
|
138
138
|
#given
|
|
139
139
|
owner = create_collection_owner_with(3)
|
|
140
140
|
length_matcher = have_at_least(3).items_in_collection_with_length_method
|
|
@@ -163,16 +163,16 @@ EOF
|
|
|
163
163
|
end
|
|
164
164
|
end
|
|
165
165
|
|
|
166
|
-
|
|
166
|
+
describe "should have_at_most(n).items" do
|
|
167
167
|
include HaveSpecHelper
|
|
168
168
|
|
|
169
|
-
|
|
169
|
+
it "should pass if target has a collection of items with n members" do
|
|
170
170
|
owner = create_collection_owner_with(3)
|
|
171
171
|
owner.should have_at_most(3).items_in_collection_with_length_method
|
|
172
172
|
owner.should have_at_most(3).items_in_collection_with_size_method
|
|
173
173
|
end
|
|
174
174
|
|
|
175
|
-
|
|
175
|
+
it "should fail if target has a collection of items with > n members" do
|
|
176
176
|
owner = create_collection_owner_with(3)
|
|
177
177
|
lambda {
|
|
178
178
|
owner.should have_at_most(2).items_in_collection_with_length_method
|
|
@@ -182,13 +182,13 @@ context "should have_at_most(n).items" do
|
|
|
182
182
|
}.should fail_with("expected at most 2 items_in_collection_with_size_method, got 3")
|
|
183
183
|
end
|
|
184
184
|
|
|
185
|
-
|
|
185
|
+
it "should pass if target has a collection of items with < n members" do
|
|
186
186
|
owner = create_collection_owner_with(3)
|
|
187
187
|
owner.should have_at_most(4).items_in_collection_with_length_method
|
|
188
188
|
owner.should have_at_most(4).items_in_collection_with_size_method
|
|
189
189
|
end
|
|
190
190
|
|
|
191
|
-
|
|
191
|
+
it "should provide educational negative failure messages" do
|
|
192
192
|
#given
|
|
193
193
|
owner = create_collection_owner_with(3)
|
|
194
194
|
length_matcher = have_at_most(3).items_in_collection_with_length_method
|
|
@@ -217,14 +217,14 @@ EOF
|
|
|
217
217
|
end
|
|
218
218
|
end
|
|
219
219
|
|
|
220
|
-
|
|
221
|
-
|
|
220
|
+
describe "have(n).items(args, block)" do
|
|
221
|
+
it "should pass args to target" do
|
|
222
222
|
target = mock("target")
|
|
223
223
|
target.should_receive(:items).with("arg1","arg2").and_return([1,2,3])
|
|
224
224
|
target.should have(3).items("arg1","arg2")
|
|
225
225
|
end
|
|
226
226
|
|
|
227
|
-
|
|
227
|
+
it "should pass block to target" do
|
|
228
228
|
target = mock("target")
|
|
229
229
|
block = lambda { 5 }
|
|
230
230
|
target.should_receive(:items).with("arg1","arg2", block).and_return([1,2,3])
|
|
@@ -232,28 +232,28 @@ context "have(n).items(args, block)" do
|
|
|
232
232
|
end
|
|
233
233
|
end
|
|
234
234
|
|
|
235
|
-
|
|
236
|
-
|
|
235
|
+
describe "have(n).items where target IS a collection" do
|
|
236
|
+
it "should reference the number of items IN the collection" do
|
|
237
237
|
[1,2,3].should have(3).items
|
|
238
238
|
end
|
|
239
239
|
|
|
240
|
-
|
|
241
|
-
lambda { [1,2,3].should have(7).items }.
|
|
240
|
+
it "should reference the number of items IN the collection" do
|
|
241
|
+
lambda { [1,2,3].should have(7).items }.should fail_with("expected 7 items, got 3")
|
|
242
242
|
end
|
|
243
243
|
end
|
|
244
244
|
|
|
245
|
-
|
|
246
|
-
|
|
245
|
+
describe "have(n).characters where target IS a String" do
|
|
246
|
+
it "should pass if the length is correct" do
|
|
247
247
|
"this string".should have(11).characters
|
|
248
248
|
end
|
|
249
249
|
|
|
250
|
-
|
|
251
|
-
lambda { "this string".should have(12).characters }.
|
|
250
|
+
it "should fail if the length is incorrect" do
|
|
251
|
+
lambda { "this string".should have(12).characters }.should fail_with("expected 12 characters, got 11")
|
|
252
252
|
end
|
|
253
253
|
end
|
|
254
254
|
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
lambda { Object.new.should have(2).things }.
|
|
255
|
+
describe "have(n).things on an object which is not a collection nor contains one" do
|
|
256
|
+
it "should fail" do
|
|
257
|
+
lambda { Object.new.should have(2).things }.should raise_error(NoMethodError, /undefined method `things' for #<Object:/)
|
|
258
258
|
end
|
|
259
259
|
end
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
describe "should include(expected)" do
|
|
4
|
+
it "should pass if target includes expected" do
|
|
5
5
|
[1,2,3].should include(3)
|
|
6
6
|
"abc".should include("a")
|
|
7
7
|
end
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
it "should fail if target does not include expected" do
|
|
10
10
|
lambda {
|
|
11
11
|
[1,2,3].should include(4)
|
|
12
12
|
}.should fail_with("expected [1, 2, 3] to include 4")
|
|
@@ -16,13 +16,13 @@ context "should include(expected)" do
|
|
|
16
16
|
end
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
describe "should_not include(expected)" do
|
|
20
|
+
it "should pass if target does not include expected" do
|
|
21
21
|
[1,2,3].should_not include(4)
|
|
22
22
|
"abc".should_not include("d")
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
it "should fail if target includes expected" do
|
|
26
26
|
lambda {
|
|
27
27
|
[1,2,3].should_not include(3)
|
|
28
28
|
}.should fail_with("expected [1, 2, 3] not to include 3")
|
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
describe "should match(expected)" do
|
|
4
|
+
it "should pass when target (String) matches expected (Regexp)" do
|
|
5
5
|
"string".should match(/tri/)
|
|
6
6
|
end
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
it "should fail when target (String) matches expected (Regexp)" do
|
|
9
9
|
lambda {
|
|
10
10
|
"string".should match(/rings/)
|
|
11
11
|
}.should fail
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
it "should provide message, expected and actual on failure" do
|
|
15
15
|
matcher = match(/rings/)
|
|
16
16
|
matcher.matches?("string")
|
|
17
17
|
matcher.failure_message.should == ["expected \"string\" to match /rings/", /rings/, "string"]
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
describe "should_not match(expected)" do
|
|
22
|
+
it "should pass when target (String) matches expected (Regexp)" do
|
|
23
23
|
"string".should_not match(/rings/)
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
it "should fail when target (String) matches expected (Regexp)" do
|
|
27
27
|
lambda {
|
|
28
28
|
"string".should_not match(/tri/)
|
|
29
29
|
}.should fail
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
it "should provide message, expected and actual on failure" do
|
|
33
33
|
matcher = match(/tri/)
|
|
34
34
|
matcher.matches?("string")
|
|
35
35
|
matcher.negative_failure_message.should == ["expected \"string\" not to match /tri/", /tri/, "string"]
|
|
@@ -2,84 +2,77 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
4
|
module Matchers
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
context %Q{The Spec::Matchers module gets included in the execution context of every spec.
|
|
6
|
+
This module should provide the following methods, each of which returns a Matcher object.} do
|
|
7
|
+
it "be_true" do
|
|
8
8
|
be_true.should be_an_instance_of(Be)
|
|
9
9
|
end
|
|
10
|
-
|
|
10
|
+
it "be_false" do
|
|
11
11
|
be_false.should be_an_instance_of(Be)
|
|
12
12
|
end
|
|
13
|
-
|
|
13
|
+
it "be_nil" do
|
|
14
14
|
be_nil.should be_an_instance_of(Be)
|
|
15
15
|
end
|
|
16
|
-
|
|
16
|
+
it "be_arbitrary_predicate" do
|
|
17
17
|
be_arbitrary_predicate.should be_an_instance_of(Be)
|
|
18
18
|
end
|
|
19
|
-
|
|
19
|
+
it "be_close" do
|
|
20
20
|
be_close(1,2).should be_an_instance_of(BeClose)
|
|
21
21
|
end
|
|
22
|
-
|
|
22
|
+
it "change" do
|
|
23
23
|
change("target", :message).should be_an_instance_of(Change)
|
|
24
24
|
end
|
|
25
|
-
|
|
25
|
+
it "eql" do
|
|
26
26
|
eql(:expected).should be_an_instance_of(Eql)
|
|
27
27
|
end
|
|
28
|
-
|
|
28
|
+
it "equal" do
|
|
29
29
|
equal(:expected).should be_an_instance_of(Equal)
|
|
30
30
|
end
|
|
31
|
-
|
|
32
|
-
have_key(:key).should be_an_instance_of(Has)
|
|
33
|
-
end
|
|
34
|
-
specify "have" do
|
|
31
|
+
it "have" do
|
|
35
32
|
have(0).should be_an_instance_of(Have)
|
|
36
33
|
end
|
|
37
|
-
|
|
34
|
+
it "have_exactly" do
|
|
38
35
|
have_exactly(0).should be_an_instance_of(Have)
|
|
39
36
|
end
|
|
40
|
-
|
|
37
|
+
it "have_at_least" do
|
|
41
38
|
have_at_least(0).should be_an_instance_of(Have)
|
|
42
39
|
end
|
|
43
|
-
|
|
40
|
+
it "have_at_most" do
|
|
44
41
|
have_at_most(0).should be_an_instance_of(Have)
|
|
45
42
|
end
|
|
46
|
-
|
|
43
|
+
it "include" do
|
|
47
44
|
include(:value).should be_an_instance_of(Include)
|
|
48
45
|
end
|
|
49
|
-
|
|
46
|
+
it "match" do
|
|
50
47
|
match(:value).should be_an_instance_of(Match)
|
|
51
48
|
end
|
|
52
|
-
|
|
49
|
+
it "raise_error" do
|
|
53
50
|
raise_error.should be_an_instance_of(RaiseError)
|
|
54
51
|
raise_error(NoMethodError).should be_an_instance_of(RaiseError)
|
|
55
52
|
raise_error(NoMethodError, "message").should be_an_instance_of(RaiseError)
|
|
56
53
|
end
|
|
57
|
-
|
|
54
|
+
it "satisfy" do
|
|
58
55
|
satisfy{}.should be_an_instance_of(Satisfy)
|
|
59
56
|
end
|
|
60
|
-
|
|
57
|
+
it "throw_symbol" do
|
|
61
58
|
throw_symbol.should be_an_instance_of(ThrowSymbol)
|
|
62
59
|
throw_symbol(:sym).should be_an_instance_of(ThrowSymbol)
|
|
63
60
|
end
|
|
64
|
-
|
|
61
|
+
it "respond_to" do
|
|
65
62
|
respond_to(:sym).should be_an_instance_of(RespondTo)
|
|
66
63
|
end
|
|
67
|
-
|
|
68
64
|
end
|
|
69
65
|
|
|
70
|
-
|
|
71
|
-
|
|
66
|
+
describe "Spec::Matchers#method_missing" do
|
|
67
|
+
it "should convert be_xyz to Be(:be_xyz)" do
|
|
72
68
|
Be.should_receive(:new).with(:be_whatever)
|
|
73
69
|
be_whatever
|
|
74
70
|
end
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
context "Spec::Matchers should convert have_xyz to..." do
|
|
78
|
-
specify "string passed to Has" do
|
|
71
|
+
|
|
72
|
+
it "should convert have_xyz to Has(:have_xyz)" do
|
|
79
73
|
Has.should_receive(:new).with(:have_whatever)
|
|
80
74
|
have_whatever
|
|
81
75
|
end
|
|
82
76
|
end
|
|
83
|
-
|
|
84
77
|
end
|
|
85
78
|
end
|
|
@@ -1,145 +1,145 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
describe "should raise_error" do
|
|
4
|
+
it "should pass if anything is raised" do
|
|
5
5
|
lambda {raise}.should raise_error
|
|
6
6
|
end
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
it "should fail if nothing is raised" do
|
|
9
9
|
lambda {
|
|
10
10
|
lambda {}.should raise_error
|
|
11
11
|
}.should fail_with("expected Exception but nothing was raised")
|
|
12
12
|
end
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
describe "should_not raise_error" do
|
|
16
|
+
it "should pass if nothing is raised" do
|
|
17
17
|
lambda {}.should_not raise_error
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
it "should fail if anything is raised" do
|
|
21
21
|
lambda {
|
|
22
22
|
lambda {raise}.should_not raise_error
|
|
23
23
|
}.should fail_with("expected no Exception, got RuntimeError")
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
describe "should raise_error(NamedError)" do
|
|
28
|
+
it "should pass if named error is raised" do
|
|
29
29
|
lambda { non_existent_method }.should raise_error(NameError)
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
it "should fail if nothing is raised" do
|
|
33
33
|
lambda {
|
|
34
34
|
lambda { }.should raise_error(NameError)
|
|
35
35
|
}.should fail_with("expected NameError but nothing was raised")
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
it "should fail if another error is raised" do
|
|
39
39
|
lambda {
|
|
40
40
|
lambda { raise }.should raise_error(NameError)
|
|
41
41
|
}.should fail_with("expected NameError, got RuntimeError")
|
|
42
42
|
end
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
describe "should_not raise_error(NamedError)" do
|
|
46
|
+
it "should pass if nothing is raised" do
|
|
47
47
|
lambda { }.should_not raise_error(NameError)
|
|
48
48
|
end
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
it "should pass if another error is raised" do
|
|
51
51
|
lambda { raise }.should_not raise_error(NameError)
|
|
52
52
|
end
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
it "should fail if named error is raised" do
|
|
55
55
|
lambda {
|
|
56
56
|
lambda { non_existent_method }.should_not raise_error(NameError)
|
|
57
57
|
}.should fail_with(/expected no NameError, got #<NameError: undefined/)
|
|
58
58
|
end
|
|
59
59
|
end
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
describe "should raise_error(NamedError, error_message) with String" do
|
|
62
|
+
it "should pass if named error is raised with same message" do
|
|
63
63
|
lambda { raise "example message" }.should raise_error(RuntimeError, "example message")
|
|
64
64
|
end
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
it "should fail if nothing is raised" do
|
|
67
67
|
lambda {
|
|
68
68
|
lambda {}.should raise_error(RuntimeError, "example message")
|
|
69
69
|
}.should fail_with("expected RuntimeError with \"example message\" but nothing was raised")
|
|
70
70
|
end
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
it "should fail if incorrect error is raised" do
|
|
73
73
|
lambda {
|
|
74
74
|
lambda { raise }.should raise_error(NameError, "example message")
|
|
75
75
|
}.should fail_with("expected NameError with \"example message\", got RuntimeError")
|
|
76
76
|
end
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
it "should fail if correct error is raised with incorrect message" do
|
|
79
79
|
lambda {
|
|
80
80
|
lambda { raise RuntimeError.new("not the example message") }.should raise_error(RuntimeError, "example message")
|
|
81
81
|
}.should fail_with(/expected RuntimeError with \"example message\", got #<RuntimeError: not the example message/)
|
|
82
82
|
end
|
|
83
83
|
end
|
|
84
84
|
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
describe "should_not raise_error(NamedError, error_message) with String" do
|
|
86
|
+
it "should pass if nothing is raised" do
|
|
87
87
|
lambda {}.should_not raise_error(RuntimeError, "example message")
|
|
88
88
|
end
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
it "should pass if a different error is raised" do
|
|
91
91
|
lambda { raise }.should_not raise_error(NameError, "example message")
|
|
92
92
|
end
|
|
93
93
|
|
|
94
|
-
|
|
94
|
+
it "should pass if same error is raised with different message" do
|
|
95
95
|
lambda { raise RuntimeError.new("not the example message") }.should_not raise_error(RuntimeError, "example message")
|
|
96
96
|
end
|
|
97
97
|
|
|
98
|
-
|
|
98
|
+
it "should fail if named error is raised with same message" do
|
|
99
99
|
lambda {
|
|
100
100
|
lambda { raise "example message" }.should_not raise_error(RuntimeError, "example message")
|
|
101
101
|
}.should fail_with("expected no RuntimeError with \"example message\", got #<RuntimeError: example message>")
|
|
102
102
|
end
|
|
103
103
|
end
|
|
104
104
|
|
|
105
|
-
|
|
106
|
-
|
|
105
|
+
describe "should raise_error(NamedError, error_message) with Regexp" do
|
|
106
|
+
it "should pass if named error is raised with matching message" do
|
|
107
107
|
lambda { raise "example message" }.should raise_error(RuntimeError, /ample mess/)
|
|
108
108
|
end
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
it "should fail if nothing is raised" do
|
|
111
111
|
lambda {
|
|
112
112
|
lambda {}.should raise_error(RuntimeError, /ample mess/)
|
|
113
113
|
}.should fail_with("expected RuntimeError with message matching /ample mess/ but nothing was raised")
|
|
114
114
|
end
|
|
115
115
|
|
|
116
|
-
|
|
116
|
+
it "should fail if incorrect error is raised" do
|
|
117
117
|
lambda {
|
|
118
118
|
lambda { raise }.should raise_error(NameError, /ample mess/)
|
|
119
119
|
}.should fail_with("expected NameError with message matching /ample mess/, got RuntimeError")
|
|
120
120
|
end
|
|
121
121
|
|
|
122
|
-
|
|
122
|
+
it "should fail if correct error is raised with incorrect message" do
|
|
123
123
|
lambda {
|
|
124
124
|
lambda { raise RuntimeError.new("not the example message") }.should raise_error(RuntimeError, /less than ample mess/)
|
|
125
125
|
}.should fail_with("expected RuntimeError with message matching /less than ample mess/, got #<RuntimeError: not the example message>")
|
|
126
126
|
end
|
|
127
127
|
end
|
|
128
128
|
|
|
129
|
-
|
|
130
|
-
|
|
129
|
+
describe "should_not raise_error(NamedError, error_message) with Regexp" do
|
|
130
|
+
it "should pass if nothing is raised" do
|
|
131
131
|
lambda {}.should_not raise_error(RuntimeError, /ample mess/)
|
|
132
132
|
end
|
|
133
133
|
|
|
134
|
-
|
|
134
|
+
it "should pass if a different error is raised" do
|
|
135
135
|
lambda { raise }.should_not raise_error(NameError, /ample mess/)
|
|
136
136
|
end
|
|
137
137
|
|
|
138
|
-
|
|
138
|
+
it "should pass if same error is raised with non-matching message" do
|
|
139
139
|
lambda { raise RuntimeError.new("non matching message") }.should_not raise_error(RuntimeError, /ample mess/)
|
|
140
140
|
end
|
|
141
141
|
|
|
142
|
-
|
|
142
|
+
it "should fail if named error is raised with matching message" do
|
|
143
143
|
lambda {
|
|
144
144
|
lambda { raise "example message" }.should_not raise_error(RuntimeError, /ample mess/)
|
|
145
145
|
}.should fail_with("expected no RuntimeError with message matching /ample mess/, got #<RuntimeError: example message>")
|