rspec 1.2.2 → 1.2.3

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.
Files changed (138) hide show
  1. data/History.rdoc +31 -1
  2. data/Manifest.txt +14 -12
  3. data/Rakefile +1 -1
  4. data/Upgrade.rdoc +43 -3
  5. data/examples/failing/failing_implicit_docstrings_example.rb +5 -5
  6. data/examples/passing/implicit_docstrings_example.rb +3 -3
  7. data/features/before_and_after_blocks/before_and_after_blocks.feature +20 -21
  8. data/features/example_groups/example_group_with_should_methods.feature +20 -8
  9. data/features/example_groups/implicit_docstrings.feature +36 -20
  10. data/features/example_groups/nested_groups.feature +25 -10
  11. data/features/extensions/custom_example_group.feature +19 -0
  12. data/features/formatters/custom_formatter.feature +30 -0
  13. data/features/heckle/heckle.feature +7 -7
  14. data/features/interop/examples_and_tests_together.feature +63 -14
  15. data/features/interop/rspec_output.feature +25 -0
  16. data/features/interop/test_but_not_test_unit.feature +19 -7
  17. data/features/interop/test_case_with_should_methods.feature +37 -8
  18. data/features/matchers/{create_matcher.feature → define_matcher.feature} +54 -30
  19. data/features/matchers/{create_matcher_outside_rspec.feature → define_matcher_outside_rspec.feature} +7 -7
  20. data/features/mock_framework_integration/use_flexmock.feature +3 -3
  21. data/features/mock_framework_integration/use_mocha.feature +3 -3
  22. data/features/mock_framework_integration/use_rr.feature +3 -3
  23. data/features/mocks/mix_stubs_and_mocks.feature +4 -4
  24. data/features/pending/pending_examples.feature +18 -18
  25. data/features/runner/specify_line_number.feature +32 -0
  26. data/features/step_definitions/running_rspec_steps.rb +41 -0
  27. data/features/subject/explicit_subject.feature +4 -4
  28. data/features/subject/implicit_subject.feature +4 -4
  29. data/features/support/env.rb +64 -11
  30. data/features/support/matchers/smart_match.rb +10 -35
  31. data/lib/spec.rb +1 -0
  32. data/lib/spec/deprecation.rb +40 -0
  33. data/lib/spec/dsl/main.rb +10 -5
  34. data/lib/spec/example.rb +1 -27
  35. data/lib/spec/example/args_and_options.rb +27 -0
  36. data/lib/spec/example/before_and_after_hooks.rb +30 -21
  37. data/lib/spec/example/errors.rb +8 -18
  38. data/lib/spec/example/example_group_factory.rb +0 -4
  39. data/lib/spec/example/example_group_methods.rb +27 -41
  40. data/lib/spec/example/example_group_proxy.rb +12 -22
  41. data/lib/spec/example/example_methods.rb +8 -18
  42. data/lib/spec/example/example_proxy.rb +4 -4
  43. data/lib/spec/example/pending.rb +3 -4
  44. data/lib/spec/example/predicate_matchers.rb +1 -1
  45. data/lib/spec/example/subject.rb +2 -0
  46. data/lib/spec/expectations.rb +1 -26
  47. data/lib/spec/expectations/extensions.rb +1 -1
  48. data/lib/spec/expectations/extensions/kernel.rb +52 -0
  49. data/lib/spec/expectations/handler.rb +21 -10
  50. data/lib/spec/matchers/be.rb +3 -3
  51. data/lib/spec/matchers/be_close.rb +17 -21
  52. data/lib/spec/matchers/be_instance_of.rb +7 -26
  53. data/lib/spec/matchers/be_kind_of.rb +7 -26
  54. data/lib/spec/matchers/dsl.rb +9 -4
  55. data/lib/spec/matchers/eql.rb +24 -25
  56. data/lib/spec/matchers/equal.rb +25 -25
  57. data/lib/spec/matchers/exist.rb +5 -21
  58. data/lib/spec/matchers/include.rb +22 -44
  59. data/lib/spec/matchers/match.rb +5 -25
  60. data/lib/spec/matchers/match_array.rb +8 -4
  61. data/lib/spec/matchers/matcher.rb +13 -2
  62. data/lib/spec/matchers/pretty.rb +1 -0
  63. data/lib/spec/matchers/simple_matcher.rb +2 -2
  64. data/lib/spec/mocks/mock.rb +10 -10
  65. data/lib/spec/mocks/spec_methods.rb +1 -1
  66. data/lib/spec/runner/configuration.rb +53 -42
  67. data/lib/spec/{expectations → runner}/differs/default.rb +0 -0
  68. data/lib/spec/{expectations → runner}/differs/load-diff-lcs.rb +0 -0
  69. data/lib/spec/runner/drb_command_line.rb +1 -1
  70. data/lib/spec/runner/example_group_runner.rb +0 -12
  71. data/lib/spec/runner/formatter/base_formatter.rb +77 -30
  72. data/lib/spec/runner/formatter/base_text_formatter.rb +19 -24
  73. data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +1 -1
  74. data/lib/spec/runner/formatter/html_formatter.rb +4 -6
  75. data/lib/spec/runner/formatter/nested_text_formatter.rb +2 -2
  76. data/lib/spec/runner/formatter/no_op_method_missing.rb +21 -0
  77. data/lib/spec/runner/formatter/profile_formatter.rb +0 -4
  78. data/lib/spec/runner/formatter/progress_bar_formatter.rb +4 -5
  79. data/lib/spec/runner/formatter/silent_formatter.rb +10 -0
  80. data/lib/spec/runner/formatter/specdoc_formatter.rb +2 -2
  81. data/lib/spec/runner/option_parser.rb +14 -7
  82. data/lib/spec/runner/options.rb +17 -7
  83. data/lib/spec/runner/reporter.rb +69 -64
  84. data/lib/spec/version.rb +1 -1
  85. data/spec/spec/dsl/main_spec.rb +7 -0
  86. data/spec/spec/example/example_group_methods_spec.rb +16 -32
  87. data/spec/spec/example/example_group_proxy_spec.rb +25 -5
  88. data/spec/spec/example/example_group_spec.rb +2 -2
  89. data/spec/spec/example/example_methods_spec.rb +19 -24
  90. data/spec/spec/example/example_proxy_spec.rb +11 -1
  91. data/spec/spec/example/pending_module_spec.rb +2 -108
  92. data/spec/spec/example/predicate_matcher_spec.rb +23 -3
  93. data/spec/spec/expectations/extensions/object_spec.rb +9 -9
  94. data/spec/spec/expectations/fail_with_spec.rb +13 -13
  95. data/spec/spec/expectations/handler_spec.rb +44 -15
  96. data/spec/spec/matchers/be_close_spec.rb +9 -0
  97. data/spec/spec/matchers/be_instance_of_spec.rb +6 -4
  98. data/spec/spec/matchers/be_kind_of_spec.rb +5 -3
  99. data/spec/spec/matchers/be_spec.rb +1 -5
  100. data/spec/spec/matchers/compatibility_spec.rb +1 -1
  101. data/spec/spec/matchers/dsl_spec.rb +10 -1
  102. data/spec/spec/matchers/eql_spec.rb +8 -4
  103. data/spec/spec/matchers/equal_spec.rb +8 -4
  104. data/spec/spec/matchers/exist_spec.rb +1 -1
  105. data/spec/spec/matchers/include_spec.rb +1 -1
  106. data/spec/spec/matchers/match_array_spec.rb +26 -1
  107. data/spec/spec/matchers/match_spec.rb +2 -2
  108. data/spec/spec/matchers/matcher_methods_spec.rb +0 -3
  109. data/spec/spec/matchers/matcher_spec.rb +53 -0
  110. data/spec/spec/matchers/operator_matcher_spec.rb +1 -1
  111. data/spec/spec/mocks/mock_spec.rb +6 -0
  112. data/spec/spec/runner/configuration_spec.rb +11 -1
  113. data/spec/spec/runner/drb_command_line_spec.rb +13 -1
  114. data/spec/spec/runner/example_group_runner_spec.rb +0 -7
  115. data/spec/spec/runner/formatter/base_formatter_spec.rb +19 -12
  116. data/spec/spec/runner/formatter/base_text_formatter_spec.rb +2 -2
  117. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +4 -4
  118. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +2 -2
  119. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +31 -34
  120. data/spec/spec/runner/formatter/html_formatter_spec.rb +20 -0
  121. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +20 -20
  122. data/spec/spec/runner/formatter/profile_formatter_spec.rb +22 -3
  123. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +24 -3
  124. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +6 -6
  125. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +25 -28
  126. data/spec/spec/runner/formatter/text_mate_formatter_spec.rb +2 -2
  127. data/spec/spec/runner/option_parser_spec.rb +108 -40
  128. data/spec/spec/runner/reporter_spec.rb +16 -17
  129. data/spec/spec_helper.rb +4 -1
  130. metadata +20 -18
  131. data/features/example_groups/output.feature +0 -20
  132. data/features/step_definitions/running_rspec.rb +0 -69
  133. data/lib/spec/expectations/extensions/object.rb +0 -63
  134. data/resources/spec/example_group_with_should_methods.rb +0 -12
  135. data/resources/spec/simple_spec.rb +0 -8
  136. data/resources/test/spec_and_test_together.rb +0 -56
  137. data/resources/test/spec_including_test_but_not_unit.rb +0 -11
  138. data/resources/test/test_case_with_should_methods.rb +0 -29
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
2
 
3
3
  module Spec
4
4
  module Example
@@ -47,6 +47,14 @@ module Spec
47
47
  @child_example_group.location.should =~ /#{__FILE__}:#{__LINE__ - 15}/
48
48
  end
49
49
  end
50
+
51
+ describe "when creating an example group with no description" do
52
+ it "raises an ArgumentError" do
53
+ lambda do
54
+ Class.new(ExampleGroupDouble).describe
55
+ end.should raise_error(Spec::Example::NoDescriptionError, /No description supplied for example group declared on #{__FILE__}:#{__LINE__ - 1}/)
56
+ end
57
+ end
50
58
 
51
59
  describe "when creating a SharedExampleGroup" do
52
60
  before(:each) do
@@ -79,6 +87,7 @@ module Spec
79
87
  before(:all) do
80
88
  @example_group = Class.new(ExampleGroupDouble).describe("bar")
81
89
  @example_proxy = @example_group.__send__(method, "foo", {:this => :that}) {}
90
+ @location = "#{__FILE__}:#{__LINE__ - 1}"
82
91
  end
83
92
 
84
93
  specify "with a description" do
@@ -89,12 +98,13 @@ module Spec
89
98
  @example_proxy.options.should == {:this => :that}
90
99
  end
91
100
 
92
- specify "with a default backtrace" do
93
- @example_proxy.backtrace.should =~ /#{__FILE__}:#{__LINE__ - 12}/
101
+ specify "with a default backtrace (DEPRECATED)" do
102
+ Spec.stub!(:deprecate)
103
+ @example_proxy.backtrace.should =~ /#{@location}/
94
104
  end
95
105
 
96
106
  specify "with a default location" do
97
- @example_proxy.location.should =~ /#{__FILE__}:#{__LINE__ - 16}/
107
+ @example_proxy.location.should =~ /#{@location}/
98
108
  end
99
109
  end
100
110
  end
@@ -106,7 +116,8 @@ module Spec
106
116
  @example_proxy = @example_group.__send__(method, "foo", {:this => :that}, "the location") {}
107
117
  end
108
118
 
109
- specify "with the supplied location as #backtrace" do
119
+ specify "with the supplied location as #backtrace (DEPRECATED)" do
120
+ Spec.stub!(:deprecate)
110
121
  @example_proxy.backtrace.should == "the location"
111
122
  end
112
123
 
@@ -593,33 +604,6 @@ module Spec
593
604
  end
594
605
  end
595
606
 
596
- describe "#backtrace" do
597
- it "returns the backtrace from where the example group was defined" do
598
- example_group = Class.new(ExampleGroupDouble).describe("foo") do
599
- example "bar" do; end
600
- end
601
- example_group.backtrace.join("\n").should include("#{__FILE__}:#{__LINE__-3}")
602
- end
603
- end
604
-
605
- describe "#example_group_backtrace (deprecated)" do
606
- before(:each) do
607
- Kernel.stub!(:warn)
608
- end
609
- it "sends a deprecation warning" do
610
- example_group = Class.new(ExampleGroupDouble) {}
611
- Kernel.should_receive(:warn).with(/#example_group_backtrace.*deprecated.*#backtrace instead/m)
612
- example_group.example_group_backtrace
613
- end
614
-
615
- it "returns the backtrace from where the example group was defined" do
616
- example_group = Class.new(ExampleGroupDouble).describe("foo") do
617
- example "bar" do; end
618
- end
619
- example_group.example_group_backtrace.join("\n").should include("#{__FILE__}:#{__LINE__-3}")
620
- end
621
- end
622
-
623
607
  describe "#before" do
624
608
  it "stores before(:each) blocks" do
625
609
  example_group = Class.new(ExampleGroupDouble) {}
@@ -26,14 +26,24 @@ module Spec
26
26
  end
27
27
  end
28
28
 
29
- describe "#filtered_description" do
29
+ describe "#filtered_description (DEPRECATED)" do
30
+ before(:each) do
31
+ Spec.stub!(:deprecate)
32
+ end
33
+
34
+ it "is deprecated" do
35
+ Spec.should_receive(:deprecate)
36
+ proxy.filtered_description(/(ignore)/)
37
+ end
38
+
30
39
  it "builds the description from the group's nested_descriptions" do
31
40
  group.stub!(:nested_descriptions => ["ignore","the","description"])
32
- proxy.filtered_description(/ignore/).should == "the description"
41
+ proxy.filtered_description(/(ignore)/).should == "the description"
33
42
  end
43
+
34
44
  it "filters out description parts that match the supplied regexp" do
35
- group.stub!(:nested_descriptions => ["ignore this one","the","description"])
36
- proxy.filtered_description(/ignore/).should == "the description"
45
+ group.stub!(:nested_descriptions => ["ignore the","description"])
46
+ proxy.filtered_description(/(ignore )/).should == "the description"
37
47
  end
38
48
  end
39
49
 
@@ -45,10 +55,20 @@ module Spec
45
55
  end
46
56
 
47
57
  describe "#backtrace (deprecated - use #location)" do
58
+ before(:each) do
59
+ Spec.stub!(:deprecate)
60
+ end
61
+
48
62
  it "provides the location of the declaration of this group" do
49
- group.stub!(:backtrace => "path/to/location:37")
63
+ group.stub!(:location => "path/to/location:37")
50
64
  proxy.backtrace.should == "path/to/location:37"
51
65
  end
66
+
67
+ it "warns deprecation" do
68
+ Spec.should_receive(:deprecate)
69
+ group.stub!(:location => "path/to/location:37")
70
+ proxy.backtrace
71
+ end
52
72
  end
53
73
 
54
74
  describe "#location" do
@@ -278,9 +278,9 @@ module Spec
278
278
  ExampleGroupFactory.reset
279
279
  end
280
280
 
281
- it "should send reporter add_example_group" do
281
+ it "should send reporter example_group_started" do
282
+ reporter.should_receive(:example_group_started)
282
283
  example_group.run(options)
283
- reporter.example_groups.should == [example_group]
284
284
  end
285
285
 
286
286
  it "should run example on run" do
@@ -32,30 +32,6 @@ module Spec
32
32
  end
33
33
  end
34
34
 
35
- describe "#backtrace" do
36
- it "returns the backtrace from where the example was defined" do
37
- example = ExampleGroup.dup.new ExampleProxy.new
38
- example.backtrace.join("\n").should include("#{__FILE__}:#{__LINE__-1}")
39
- end
40
- end
41
-
42
- describe "#implementation_backtrace (deprecated)" do
43
- before(:each) do
44
- Kernel.stub!(:warn)
45
- end
46
-
47
- it "sends a deprecation warning" do
48
- Kernel.should_receive(:warn).with(/#implementation_backtrace.*deprecated.*#backtrace instead/m)
49
- example = ExampleGroup.dup.new ExampleProxy.new
50
- example.implementation_backtrace
51
- end
52
-
53
- it "returns the backtrace from where the example was defined" do
54
- example = ExampleGroup.dup.new ExampleProxy.new
55
- example.implementation_backtrace.join("\n").should include("#{__FILE__}:#{__LINE__-1}")
56
- end
57
- end
58
-
59
35
  describe "#should" do
60
36
  before(:each) do
61
37
  @example_group = Class.new(ExampleGroupDouble)
@@ -122,6 +98,25 @@ module Spec
122
98
  example.options[:this].should == 'that'
123
99
  end
124
100
  end
101
+
102
+ describe "#description" do
103
+ it "returns the supplied description" do
104
+ example = ExampleGroupDouble.new ExampleProxy.new("name") do; end
105
+ example.description.should == "name"
106
+ end
107
+ it "returns the generated description if there is no description supplied" do
108
+ example = ExampleGroupDouble.new ExampleProxy.new do; end
109
+ Spec::Matchers.stub!(:generated_description).and_return('this message')
110
+ example.description.should == "this message"
111
+ end
112
+ it "raises if there is no supplied or generated description" do
113
+ example = ExampleGroupDouble.new ExampleProxy.new(nil, {}, "this backtrace") do; end
114
+ Spec::Matchers.stub!(:generated_description).and_return(nil)
115
+ lambda do
116
+ example.description
117
+ end.should raise_error(/No description supplied for example declared on this backtrace/)
118
+ end
119
+ end
125
120
 
126
121
  end
127
122
  end
@@ -27,7 +27,17 @@ module Spec
27
27
  end
28
28
  end
29
29
 
30
- describe "#backtrace (deprecated - use #location)" do
30
+ describe "#backtrace (DEPRECATED - use #location)" do
31
+ before(:each) do
32
+ Spec.stub!(:deprecate)
33
+ end
34
+
35
+ it "is deprecated" do
36
+ Spec.should_receive(:deprecate)
37
+ proxy = ExampleProxy.new(:ignore, {}, "path/to/location:37")
38
+ proxy.backtrace
39
+ end
40
+
31
41
  it "provides the location of the declaration of this group" do
32
42
  proxy = ExampleProxy.new(:ignore, {}, "path/to/location:37")
33
43
  proxy.backtrace.should == "path/to/location:37"
@@ -8,17 +8,6 @@ module Spec
8
8
  pending "TODO"
9
9
  }.should raise_error(ExamplePendingError, /TODO/)
10
10
  end
11
-
12
- it "reports the file and line number" do
13
- file = __FILE__
14
- line_number = __LINE__ + 2
15
- begin
16
- pending("TODO")
17
- rescue => error
18
- ensure
19
- error.pending_caller.should =~ /^#{file}:#{line_number}/
20
- end
21
- end
22
11
  end
23
12
 
24
13
  context "when the supplied block fails" do
@@ -29,19 +18,6 @@ module Spec
29
18
  end
30
19
  }.should raise_error(ExamplePendingError, /TODO/)
31
20
  end
32
-
33
- it "reports the file and line number" do
34
- file = __FILE__
35
- line_number = __LINE__ + 2
36
- begin
37
- pending do
38
- raise
39
- end
40
- rescue => error
41
- ensure
42
- error.pending_caller.should =~ /#{file}:#{line_number}/
43
- end
44
- end
45
21
  end
46
22
 
47
23
  context "when the supplied block fails with a mock" do
@@ -54,21 +30,6 @@ module Spec
54
30
  end
55
31
  }.should raise_error(ExamplePendingError, /TODO/)
56
32
  end
57
-
58
- it "reports the file and line number" do
59
- file = __FILE__
60
- line_number = __LINE__ + 2
61
- begin
62
- pending do
63
- m = mock("thing")
64
- m.should_receive(:foo)
65
- m.rspec_verify
66
- end
67
- rescue => error
68
- ensure
69
- error.pending_caller.should =~ /#{file}:#{line_number}/
70
- end
71
- end
72
33
  end
73
34
 
74
35
  context "when the supplied block passes" do
@@ -83,81 +44,14 @@ module Spec
83
44
  end
84
45
 
85
46
  describe ExamplePendingError do
86
- it "should have the caller (from two calls from initialization)" do
87
- two_calls_ago = caller[0]
88
- ExamplePendingError.new("a message").pending_caller.should == two_calls_ago
89
- end
90
-
91
- it "should keep the trace information from initialization" do
92
- two_calls_ago = caller[0]
93
- obj = ExamplePendingError.new("a message")
94
- obj.pending_caller
95
- def another_caller(obj)
96
- obj.pending_caller
97
- end
98
-
99
- another_caller(obj).should == two_calls_ago
100
- end
101
-
102
47
  it "should have the message provided" do
103
48
  ExamplePendingError.new("a message").message.should == "a message"
104
49
  end
105
-
106
- it "should use a 'ExamplePendingError' as it's default message" do
107
- ExamplePendingError.new.message.should == "Spec::Example::ExamplePendingError"
108
- end
109
50
  end
110
51
 
111
52
  describe NotYetImplementedError do
112
- def rspec_root
113
- File.expand_path(__FILE__.gsub("/spec/spec/example/pending_module_spec.rb", "/lib"))
114
- end
115
-
116
- it "should have the root rspec path" do
117
- NotYetImplementedError::RSPEC_ROOT_LIB.should == rspec_root
118
- end
119
-
120
- it "should always have the error 'Not Yet Implemented'" do
121
- NotYetImplementedError.new([]).message.should == "Not Yet Implemented"
122
- end
123
-
124
- describe "pending_caller" do
125
- it "should select an element out of the backtrace" do
126
- error = NotYetImplementedError.new(["foo/bar.rb:18"])
127
-
128
- error.pending_caller.should == "foo/bar.rb:18"
129
- end
130
-
131
- it "should actually report the element from the backtrace" do
132
- error = NotYetImplementedError.new(["bar.rb:18"])
133
-
134
- error.pending_caller.should == "bar.rb:18"
135
- end
136
-
137
- it "should not use an element with the rspec root path" do
138
- error = NotYetImplementedError.new(["#{rspec_root}:8"])
139
-
140
- error.pending_caller.should be_nil
141
- end
142
-
143
- it "should select the first line in the backtrace which isn't in the rspec root" do
144
- error = NotYetImplementedError.new([
145
- "#{rspec_root}/foo.rb:2",
146
- "#{rspec_root}/foo/bar.rb:18",
147
- "path1.rb:22",
148
- "path2.rb:33"
149
- ])
150
-
151
- error.pending_caller.should == "path1.rb:22"
152
- end
153
-
154
- it "should cache the caller" do
155
- backtrace = mock('backtrace')
156
- backtrace.should_receive(:detect).once
157
-
158
- error = NotYetImplementedError.new(backtrace)
159
- error.pending_caller.should == error.pending_caller
160
- end
53
+ it "should have the message 'Not Yet Implemented'" do
54
+ NotYetImplementedError.new.message.should == "Not Yet Implemented"
161
55
  end
162
56
  end
163
57
  end
@@ -9,12 +9,32 @@ module Spec
9
9
  end
10
10
 
11
11
  describe "predicate_matcher[method_on_object] = matcher_method" do
12
- predicate_matchers[:swim] = :can_swim?
12
+ before(:each) do
13
+ Spec.stub!(:deprecate)
14
+ end
15
+
16
+ it "is deprecated" do
17
+ Spec.should_receive(:deprecate)
18
+ group = ExampleGroupDouble.describe("foo") do
19
+ predicate_matchers[:swim] = :can_swim?
20
+ end
21
+ group.run(Spec::Runner::Options.new(StringIO.new, StringIO.new))
22
+ end
23
+
13
24
  it "should match matcher_method if method_on_object returns true" do
14
- swim(100).matches?(Fish.new).should be_true
25
+ group = ExampleGroupDouble.describe(Fish) do
26
+ predicate_matchers[:swim] = :can_swim?
27
+ it { should swim(100) }
28
+ end
29
+ group.run(Spec::Runner::Options.new(StringIO.new, StringIO.new))
15
30
  end
31
+
16
32
  it "should not match matcher_method if method_on_object returns false" do
17
- swim(10000).matches?(Fish.new).should be_false
33
+ group = ExampleGroupDouble.describe(Fish) do
34
+ predicate_matchers[:swim] = :can_swim?
35
+ it { should_not swim(1000) }
36
+ end
37
+ group.run(Spec::Runner::Options.new(StringIO.new, StringIO.new))
18
38
  end
19
39
  end
20
40
  end
@@ -5,17 +5,17 @@ describe Object, "#should" do
5
5
  @target = "target"
6
6
  @matcher = mock("matcher")
7
7
  @matcher.stub!(:matches?).and_return(true)
8
- @matcher.stub!(:failure_message)
8
+ @matcher.stub!(:failure_message_for_should)
9
9
  end
10
10
 
11
- it "should accept and interact with a matcher" do
11
+ it "accepts and interacts with a matcher" do
12
12
  @matcher.should_receive(:matches?).with(@target).and_return(true)
13
13
  @target.should @matcher
14
14
  end
15
15
 
16
- it "should ask for a failure_message when matches? returns false" do
16
+ it "asks for a failure_message_for_should when matches? returns false" do
17
17
  @matcher.should_receive(:matches?).with(@target).and_return(false)
18
- @matcher.should_receive(:failure_message).and_return("the failure message")
18
+ @matcher.should_receive(:failure_message_for_should).and_return("the failure message")
19
19
  lambda {
20
20
  @target.should @matcher
21
21
  }.should fail_with("the failure message")
@@ -28,18 +28,18 @@ describe Object, "#should_not" do
28
28
  @matcher = mock("matcher")
29
29
  end
30
30
 
31
- it "should accept and interact with a matcher" do
31
+ it "accepts and interacts with a matcher" do
32
32
  @matcher.should_receive(:matches?).with(@target).and_return(false)
33
- @matcher.stub!(:negative_failure_message)
33
+ @matcher.stub!(:failure_message_for_should_not)
34
34
 
35
35
  @target.should_not @matcher
36
36
  end
37
37
 
38
- it "should ask for a negative_failure_message when matches? returns true" do
38
+ it "asks for a failure_message_for_should_not when matches? returns true" do
39
39
  @matcher.should_receive(:matches?).with(@target).and_return(true)
40
- @matcher.should_receive(:negative_failure_message).and_return("the negative failure message")
40
+ @matcher.should_receive(:failure_message_for_should_not).and_return("the failure message for should not")
41
41
  lambda {
42
42
  @target.should_not @matcher
43
- }.should fail_with("the negative failure message")
43
+ }.should fail_with("the failure message for should not")
44
44
  end
45
45
  end