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,12 +1,12 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
describe "should respond_to(:sym)" do
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
it "should pass if target responds to :sym" do
|
|
6
6
|
Object.new.should respond_to(:methods)
|
|
7
7
|
end
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
it "should fail target does not respond to :sym" do
|
|
10
10
|
lambda {
|
|
11
11
|
Object.new.should respond_to(:some_method)
|
|
12
12
|
}.should fail_with("expected target to respond to :some_method")
|
|
@@ -14,17 +14,41 @@ context "should respond_to(:sym)" do
|
|
|
14
14
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
describe "should respond_to(message1, message2)" do
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
it "should pass if target responds to both messages" do
|
|
20
|
+
Object.new.should respond_to('methods', 'inspect')
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should fail target does not respond to first message" do
|
|
24
|
+
lambda {
|
|
25
|
+
Object.new.should respond_to('method_one', 'inspect')
|
|
26
|
+
}.should fail_with('expected target to respond to "method_one"')
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "should fail target does not respond to second message" do
|
|
30
|
+
lambda {
|
|
31
|
+
Object.new.should respond_to('inspect', 'method_one')
|
|
32
|
+
}.should fail_with('expected target to respond to "method_one"')
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should fail target does not respond to either message" do
|
|
36
|
+
lambda {
|
|
37
|
+
Object.new.should respond_to('method_one', 'method_two')
|
|
38
|
+
}.should fail_with('expected target to respond to "method_one", "method_two"')
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe "should_not respond_to(:sym)" do
|
|
43
|
+
|
|
44
|
+
it "should pass if target does not respond to :sym" do
|
|
20
45
|
Object.new.should_not respond_to(:some_method)
|
|
21
46
|
end
|
|
22
47
|
|
|
23
|
-
|
|
48
|
+
it "should fail target responds to :sym" do
|
|
24
49
|
lambda {
|
|
25
50
|
Object.new.should_not respond_to(:methods)
|
|
26
51
|
}.should fail_with("expected target not to respond to :methods")
|
|
27
52
|
end
|
|
28
53
|
|
|
29
|
-
end
|
|
30
|
-
|
|
54
|
+
end
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
describe "should satisfy { block }" do
|
|
4
|
+
it "should pass if block returns true" do
|
|
5
5
|
true.should satisfy { |val| val }
|
|
6
6
|
true.should satisfy do |val|
|
|
7
7
|
val
|
|
8
8
|
end
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
it "should fail if block returns false" do
|
|
12
12
|
lambda {
|
|
13
13
|
false.should satisfy { |val| val }
|
|
14
14
|
}.should fail_with("expected false to satisfy block")
|
|
@@ -20,15 +20,15 @@ context "should satisfy { block }" do
|
|
|
20
20
|
end
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
describe "should_not satisfy { block }" do
|
|
24
|
+
it "should pass if block returns false" do
|
|
25
25
|
false.should_not satisfy { |val| val }
|
|
26
26
|
false.should_not satisfy do |val|
|
|
27
27
|
val
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
it "should fail if block returns true" do
|
|
32
32
|
lambda {
|
|
33
33
|
true.should_not satisfy { |val| val }
|
|
34
34
|
}.should fail_with("expected true not to satisfy block")
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
require 'spec/expectations/differs/default'
|
|
4
|
+
|
|
5
|
+
describe "should ===" do
|
|
6
|
+
|
|
7
|
+
it "should delegate message to target" do
|
|
8
|
+
subject = "apple"
|
|
9
|
+
subject.should_receive(:===).with("apple").and_return(true)
|
|
10
|
+
subject.should === "apple"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "should fail when target.===(actual) returns false" do
|
|
14
|
+
subject = "apple"
|
|
15
|
+
subject.should_receive(:===).with("orange").and_return(false)
|
|
16
|
+
Spec::Expectations.should_receive(:fail_with).with(%[expected "orange", got "apple" (using ===)], "orange", "apple")
|
|
17
|
+
subject.should === "orange"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
describe "should_not ===" do
|
|
23
|
+
|
|
24
|
+
it "should delegate message to target" do
|
|
25
|
+
subject = "orange"
|
|
26
|
+
subject.should_receive(:===).with("apple").and_return(false)
|
|
27
|
+
subject.should_not === "apple"
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "should fail when target.===(actual) returns false" do
|
|
31
|
+
subject = "apple"
|
|
32
|
+
subject.should_receive(:===).with("apple").and_return(true)
|
|
33
|
+
Spec::Expectations.should_receive(:fail_with).with(%[expected not === "apple", got "apple"], "apple", "apple")
|
|
34
|
+
subject.should_not === "apple"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
require 'spec/expectations/differs/default'
|
|
4
|
+
|
|
5
|
+
describe "should ==" do
|
|
6
|
+
|
|
7
|
+
it "should delegate message to target" do
|
|
8
|
+
subject = "apple"
|
|
9
|
+
subject.should_receive(:==).with("apple").and_return(true)
|
|
10
|
+
subject.should == "apple"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "should fail when target.==(actual) returns false" do
|
|
14
|
+
subject = "apple"
|
|
15
|
+
Spec::Expectations.should_receive(:fail_with).with(%[expected "orange", got "apple" (using ==)], "orange", "apple")
|
|
16
|
+
subject.should == "orange"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe "should_not ==" do
|
|
22
|
+
|
|
23
|
+
it "should delegate message to target" do
|
|
24
|
+
subject = "orange"
|
|
25
|
+
subject.should_receive(:==).with("apple").and_return(false)
|
|
26
|
+
subject.should_not == "apple"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "should fail when target.==(actual) returns false" do
|
|
30
|
+
subject = "apple"
|
|
31
|
+
Spec::Expectations.should_receive(:fail_with).with(%[expected not == "apple", got "apple"], "apple", "apple")
|
|
32
|
+
subject.should_not == "apple"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
describe "should =~" do
|
|
4
|
+
|
|
5
|
+
it "should delegate message to target" do
|
|
6
|
+
subject = "foo"
|
|
7
|
+
subject.should_receive(:=~).with(/oo/).and_return(true)
|
|
8
|
+
subject.should =~ /oo/
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should fail when target.=~(actual) returns false" do
|
|
12
|
+
subject = "fu"
|
|
13
|
+
subject.should_receive(:=~).with(/oo/).and_return(false)
|
|
14
|
+
Spec::Expectations.should_receive(:fail_with).with(%[expected =~ /oo/, got "fu"], /oo/, "fu")
|
|
15
|
+
subject.should =~ /oo/
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
describe "should_not =~" do
|
|
21
|
+
|
|
22
|
+
it "should delegate message to target" do
|
|
23
|
+
subject = "fu"
|
|
24
|
+
subject.should_receive(:=~).with(/oo/).and_return(false)
|
|
25
|
+
subject.should_not =~ /oo/
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "should fail when target.=~(actual) returns false" do
|
|
29
|
+
subject = "foo"
|
|
30
|
+
subject.should_receive(:=~).with(/oo/).and_return(true)
|
|
31
|
+
Spec::Expectations.should_receive(:fail_with).with(%[expected not =~ /oo/, got "foo"], /oo/, "foo")
|
|
32
|
+
subject.should_not =~ /oo/
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
36
|
+
|
|
@@ -1,59 +1,51 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
specify "should pass if other Symbol is thrown" do
|
|
51
|
-
lambda { throw :wrong_sym }.should_not throw_symbol(:sym)
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
specify "should fail if correct Symbol is thrown" do
|
|
55
|
-
lambda {
|
|
56
|
-
lambda{ throw :sym }.should_not throw_symbol(:sym)
|
|
57
|
-
}.should fail_with("expected :sym not to be thrown")
|
|
3
|
+
module Spec
|
|
4
|
+
module Matchers
|
|
5
|
+
describe ThrowSymbol, "(constructed with no Symbol)" do
|
|
6
|
+
before(:each) { @matcher = ThrowSymbol.new }
|
|
7
|
+
|
|
8
|
+
it "should match if any Symbol is thrown" do
|
|
9
|
+
@matcher.matches?(lambda{ throw :sym }).should be_true
|
|
10
|
+
end
|
|
11
|
+
it "should not match if no Symbol is thrown" do
|
|
12
|
+
@matcher.matches?(lambda{ }).should be_false
|
|
13
|
+
end
|
|
14
|
+
it "should provide a failure message" do
|
|
15
|
+
@matcher.matches?(lambda{})
|
|
16
|
+
@matcher.failure_message.should == "expected a Symbol but nothing was thrown"
|
|
17
|
+
end
|
|
18
|
+
it "should provide a negative failure message" do
|
|
19
|
+
@matcher.matches?(lambda{ throw :sym})
|
|
20
|
+
@matcher.negative_failure_message.should == "expected no Symbol, got :sym"
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
describe ThrowSymbol, "(constructed with a Symbol)" do
|
|
25
|
+
before(:each) { @matcher = ThrowSymbol.new(:sym) }
|
|
26
|
+
|
|
27
|
+
it "should match if correct Symbol is thrown" do
|
|
28
|
+
@matcher.matches?(lambda{ throw :sym }).should be_true
|
|
29
|
+
end
|
|
30
|
+
it "should not match no Symbol is thrown" do
|
|
31
|
+
@matcher.matches?(lambda{ }).should be_false
|
|
32
|
+
end
|
|
33
|
+
it "should not match if correct Symbol is thrown" do
|
|
34
|
+
@matcher.matches?(lambda{ throw :other_sym }).should be_false
|
|
35
|
+
@matcher.failure_message.should == "expected :sym, got :other_sym"
|
|
36
|
+
end
|
|
37
|
+
it "should provide a failure message when no Symbol is thrown" do
|
|
38
|
+
@matcher.matches?(lambda{})
|
|
39
|
+
@matcher.failure_message.should == "expected :sym but nothing was thrown"
|
|
40
|
+
end
|
|
41
|
+
it "should provide a failure message when wrong Symbol is thrown" do
|
|
42
|
+
@matcher.matches?(lambda{ throw :other_sym })
|
|
43
|
+
@matcher.failure_message.should == "expected :sym, got :other_sym"
|
|
44
|
+
end
|
|
45
|
+
it "should provide a negative failure message" do
|
|
46
|
+
@matcher.matches?(lambda{ throw :sym })
|
|
47
|
+
@matcher.negative_failure_message.should == "expected :sym not to be thrown"
|
|
48
|
+
end
|
|
49
|
+
end
|
|
58
50
|
end
|
|
59
51
|
end
|
|
@@ -1,34 +1,29 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
|
-
module Mocks
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
specify "should pass if any number of times method is called many times" do
|
|
4
|
+
module Mocks
|
|
5
|
+
|
|
6
|
+
describe "AnyNumberOfTimes" do
|
|
7
|
+
before(:each) do
|
|
8
|
+
@mock = Mock.new("test mock")
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should pass if any number of times method is called many times" do
|
|
13
12
|
@mock.should_receive(:random_call).any_number_of_times
|
|
14
13
|
(1..10).each do
|
|
15
14
|
@mock.random_call
|
|
16
15
|
end
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
specify "should pass if any number of times method is called once" do
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should pass if any number of times method is called once" do
|
|
21
19
|
@mock.should_receive(:random_call).any_number_of_times
|
|
22
20
|
@mock.random_call
|
|
23
|
-
|
|
21
|
+
end
|
|
24
22
|
|
|
25
|
-
|
|
26
|
-
specify "should pass if any number of times method is not called" do
|
|
23
|
+
it "should pass if any number of times method is not called" do
|
|
27
24
|
@mock.should_receive(:random_call).any_number_of_times
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
end
|
|
30
26
|
end
|
|
31
|
-
|
|
32
|
-
end
|
|
33
|
-
end
|
|
27
|
+
|
|
28
|
+
end
|
|
34
29
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
describe "An ArgumentExpectation" do
|
|
4
|
+
it "should consider an object that responds to #matches? and #description to be a matcher" do
|
|
5
5
|
argument_expecatation = Spec::Mocks::ArgumentExpectation.new([])
|
|
6
6
|
obj = mock("matcher")
|
|
7
7
|
obj.should_receive(:respond_to?).with(:matches?).and_return(true)
|
|
@@ -9,7 +9,7 @@ context "An ArgumentExpectation" do
|
|
|
9
9
|
argument_expecatation.is_matcher?(obj).should be_true
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
it "should NOT consider an object that only responds to #matches? to be a matcher" do
|
|
13
13
|
argument_expecatation = Spec::Mocks::ArgumentExpectation.new([])
|
|
14
14
|
obj = mock("matcher")
|
|
15
15
|
obj.should_receive(:respond_to?).with(:matches?).and_return(true)
|
|
@@ -2,95 +2,95 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
4
|
module Mocks
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
@mock = Mock.new("test mock"
|
|
5
|
+
describe "at_least" do
|
|
6
|
+
before(:each) do
|
|
7
|
+
@mock = Mock.new("test mock")
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
it "should fail if method is never called" do
|
|
11
11
|
@mock.should_receive(:random_call).at_least(4).times
|
|
12
12
|
lambda do
|
|
13
|
-
@mock.
|
|
14
|
-
end.
|
|
13
|
+
@mock.rspec_verify
|
|
14
|
+
end.should raise_error(MockExpectationError)
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
it "should fail when called less than n times" do
|
|
18
18
|
@mock.should_receive(:random_call).at_least(4).times
|
|
19
19
|
@mock.random_call
|
|
20
20
|
@mock.random_call
|
|
21
21
|
@mock.random_call
|
|
22
22
|
lambda do
|
|
23
|
-
@mock.
|
|
24
|
-
end.
|
|
23
|
+
@mock.rspec_verify
|
|
24
|
+
end.should raise_error(MockExpectationError)
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
it "should fail when at least once method is never called" do
|
|
28
28
|
@mock.should_receive(:random_call).at_least(:once)
|
|
29
29
|
lambda do
|
|
30
|
-
@mock.
|
|
31
|
-
end.
|
|
30
|
+
@mock.rspec_verify
|
|
31
|
+
end.should raise_error(MockExpectationError)
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
it "should fail when at least twice method is called once" do
|
|
35
35
|
@mock.should_receive(:random_call).at_least(:twice)
|
|
36
36
|
@mock.random_call
|
|
37
37
|
lambda do
|
|
38
|
-
@mock.
|
|
39
|
-
end.
|
|
38
|
+
@mock.rspec_verify
|
|
39
|
+
end.should raise_error(MockExpectationError)
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
it "should fail when at least twice method is never called" do
|
|
43
43
|
@mock.should_receive(:random_call).at_least(:twice)
|
|
44
44
|
lambda do
|
|
45
|
-
@mock.
|
|
46
|
-
end.
|
|
45
|
+
@mock.rspec_verify
|
|
46
|
+
end.should raise_error(MockExpectationError)
|
|
47
47
|
end
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
it "should pass when at least n times method is called exactly n times" do
|
|
50
50
|
@mock.should_receive(:random_call).at_least(4).times
|
|
51
51
|
@mock.random_call
|
|
52
52
|
@mock.random_call
|
|
53
53
|
@mock.random_call
|
|
54
54
|
@mock.random_call
|
|
55
|
-
@mock.
|
|
55
|
+
@mock.rspec_verify
|
|
56
56
|
end
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
it "should pass when at least n times method is called n plus 1 times" do
|
|
59
59
|
@mock.should_receive(:random_call).at_least(4).times
|
|
60
60
|
@mock.random_call
|
|
61
61
|
@mock.random_call
|
|
62
62
|
@mock.random_call
|
|
63
63
|
@mock.random_call
|
|
64
64
|
@mock.random_call
|
|
65
|
-
@mock.
|
|
65
|
+
@mock.rspec_verify
|
|
66
66
|
end
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
it "should pass when at least once method is called once" do
|
|
69
69
|
@mock.should_receive(:random_call).at_least(:once)
|
|
70
70
|
@mock.random_call
|
|
71
|
-
@mock.
|
|
71
|
+
@mock.rspec_verify
|
|
72
72
|
end
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
it "should pass when at least once method is called twice" do
|
|
75
75
|
@mock.should_receive(:random_call).at_least(:once)
|
|
76
76
|
@mock.random_call
|
|
77
77
|
@mock.random_call
|
|
78
|
-
@mock.
|
|
78
|
+
@mock.rspec_verify
|
|
79
79
|
end
|
|
80
80
|
|
|
81
|
-
|
|
81
|
+
it "should pass when at least twice method is called three times" do
|
|
82
82
|
@mock.should_receive(:random_call).at_least(:twice)
|
|
83
83
|
@mock.random_call
|
|
84
84
|
@mock.random_call
|
|
85
85
|
@mock.random_call
|
|
86
|
-
@mock.
|
|
86
|
+
@mock.rspec_verify
|
|
87
87
|
end
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
it "should pass when at least twice method is called twice" do
|
|
90
90
|
@mock.should_receive(:random_call).at_least(:twice)
|
|
91
91
|
@mock.random_call
|
|
92
92
|
@mock.random_call
|
|
93
|
-
@mock.
|
|
93
|
+
@mock.rspec_verify
|
|
94
94
|
end
|
|
95
95
|
end
|
|
96
96
|
end
|