rspec 1.2.9 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. data/History.rdoc +34 -1
  2. data/License.txt +1 -1
  3. data/Manifest.txt +11 -4
  4. data/README.rdoc +2 -3
  5. data/Rakefile +17 -13
  6. data/Upgrade.rdoc +63 -2
  7. data/features/formatters/nested_formatter.feature +32 -0
  8. data/features/interop/cucumber_stubs_dont_leak.feature +11 -0
  9. data/features/matchers/define_matcher_with_fluent_interface.feature +21 -0
  10. data/features/matchers/define_wrapped_matcher.feature +28 -1
  11. data/features/matchers/match_unless_raises.feature +60 -0
  12. data/features/matchers/match_unless_raises_unexpected_error.feature +39 -0
  13. data/features/mocks/block_local_expectations.feature +62 -0
  14. data/features/step_definitions/running_rspec_steps.rb +9 -0
  15. data/features/step_definitions/stubbing_steps.rb +16 -0
  16. data/features/support/env.rb +1 -0
  17. data/features/support/matchers/smart_match.rb +23 -4
  18. data/geminstaller.yml +28 -0
  19. data/lib/autotest/rspec.rb +14 -7
  20. data/lib/spec/dsl/main.rb +1 -1
  21. data/lib/spec/example/example_methods.rb +4 -0
  22. data/lib/spec/{matchers/extensions → extensions}/instance_exec.rb +0 -0
  23. data/lib/spec/interop/test.rb +1 -1
  24. data/lib/spec/matchers.rb +21 -2
  25. data/lib/spec/matchers/be.rb +167 -128
  26. data/lib/spec/matchers/has.rb +3 -3
  27. data/lib/spec/matchers/have.rb +1 -0
  28. data/lib/spec/matchers/matcher.rb +55 -10
  29. data/lib/spec/matchers/method_missing.rb +2 -2
  30. data/lib/spec/matchers/raise_exception.rb +131 -0
  31. data/lib/spec/matchers/throw_symbol.rb +16 -20
  32. data/lib/spec/mocks/message_expectation.rb +63 -48
  33. data/lib/spec/mocks/methods.rb +13 -8
  34. data/lib/spec/mocks/proxy.rb +43 -22
  35. data/lib/spec/runner/differs/default.rb +1 -1
  36. data/lib/spec/runner/drb_command_line.rb +8 -2
  37. data/lib/spec/runner/example_group_runner.rb +1 -2
  38. data/lib/spec/runner/formatter/nested_text_formatter.rb +6 -3
  39. data/lib/spec/runner/option_parser.rb +2 -0
  40. data/lib/spec/runner/options.rb +6 -1
  41. data/lib/spec/stubs/cucumber.rb +2 -2
  42. data/lib/spec/version.rb +2 -2
  43. data/spec/autotest/autotest_helper.rb +1 -1
  44. data/spec/autotest/discover_spec.rb +2 -2
  45. data/spec/autotest/failed_results_re_spec.rb +2 -2
  46. data/spec/autotest/rspec_spec.rb +21 -6
  47. data/spec/spec/example/example_group_methods_spec.rb +2 -1
  48. data/spec/spec/interop/test/unit/spec_spec.rb +7 -7
  49. data/spec/spec/interop/test/unit/testcase_spec.rb +7 -7
  50. data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +1 -1
  51. data/spec/spec/matchers/be_spec.rb +159 -10
  52. data/spec/spec/matchers/has_spec.rb +109 -0
  53. data/spec/spec/matchers/matcher_spec.rb +70 -9
  54. data/spec/spec/matchers/raise_exception_spec.rb +345 -0
  55. data/spec/spec/matchers/throw_symbol_spec.rb +83 -58
  56. data/spec/spec/mocks/and_yield_spec.rb +117 -0
  57. data/spec/spec/mocks/mock_spec.rb +2 -2
  58. data/spec/spec/runner/command_line_spec.rb +26 -5
  59. data/spec/spec/runner/drb_command_line_spec.rb +39 -0
  60. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +35 -11
  61. data/spec/spec/runner/option_parser_spec.rb +12 -6
  62. data/spec/spec/runner/options_spec.rb +7 -0
  63. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +23 -5
  64. metadata +17 -10
  65. data/lib/spec/matchers/raise_error.rb +0 -129
  66. data/spec/spec/matchers/matcher_methods_spec.rb +0 -63
  67. data/spec/spec/matchers/raise_error_spec.rb +0 -333
@@ -0,0 +1,345 @@
1
+ require 'spec_helper'
2
+
3
+ describe "should raise_exception" do
4
+ it "should pass if anything is raised" do
5
+ lambda {raise}.should raise_exception
6
+ end
7
+
8
+ it "should fail if nothing is raised" do
9
+ lambda {
10
+ lambda {}.should raise_exception
11
+ }.should fail_with("expected Exception but nothing was raised")
12
+ end
13
+ end
14
+
15
+ describe "should raise_error" do
16
+ it "should pass if anything is raised" do
17
+ lambda {raise}.should raise_error
18
+ end
19
+
20
+ it "should fail if nothing is raised" do
21
+ lambda {
22
+ lambda {}.should raise_error
23
+ }.should fail_with("expected Exception but nothing was raised")
24
+ end
25
+ end
26
+
27
+ describe "should raise_exception {|e| ... }" do
28
+ it "passes if there is an exception" do
29
+ ran = false
30
+ lambda { non_existent_method }.should raise_exception {|e|
31
+ ran = true
32
+ }
33
+ ran.should be_true
34
+ end
35
+
36
+ it "passes the exception to the block" do
37
+ exception = nil
38
+ lambda { non_existent_method }.should raise_exception {|e|
39
+ exception = e
40
+ }
41
+ exception.should be_kind_of(NameError)
42
+ end
43
+ end
44
+
45
+ describe "should_not raise_exception" do
46
+ it "should pass if nothing is raised" do
47
+ lambda {}.should_not raise_exception
48
+ end
49
+
50
+ it "should fail if anything is raised" do
51
+ lambda {
52
+ lambda {raise}.should_not raise_exception
53
+ }.should fail_with("expected no Exception, got RuntimeError")
54
+ end
55
+ end
56
+
57
+ describe "should raise_exception(message)" do
58
+ it "should pass if RuntimeError is raised with the right message" do
59
+ lambda {raise 'blah'}.should raise_exception('blah')
60
+ end
61
+ it "should pass if RuntimeError is raised with a matching message" do
62
+ lambda {raise 'blah'}.should raise_exception(/blah/)
63
+ end
64
+ it "should pass if any other exception is raised with the right message" do
65
+ lambda {raise NameError.new('blah')}.should raise_exception('blah')
66
+ end
67
+ it "should fail if RuntimeError exception is raised with the wrong message" do
68
+ lambda do
69
+ lambda {raise 'blarg'}.should raise_exception('blah')
70
+ end.should fail_with("expected Exception with \"blah\", got #<RuntimeError: blarg>")
71
+ end
72
+ it "should fail if any other exception is raised with the wrong message" do
73
+ lambda do
74
+ lambda {raise NameError.new('blarg')}.should raise_exception('blah')
75
+ end.should fail_with("expected Exception with \"blah\", got #<NameError: blarg>")
76
+ end
77
+ end
78
+
79
+ describe "should_not raise_exception(message)" do
80
+ it "should pass if RuntimeError exception is raised with the different message" do
81
+ lambda {raise 'blarg'}.should_not raise_exception('blah')
82
+ end
83
+ it "should pass if any other exception is raised with the wrong message" do
84
+ lambda {raise NameError.new('blarg')}.should_not raise_exception('blah')
85
+ end
86
+ it "should fail if RuntimeError is raised with message" do
87
+ lambda do
88
+ lambda {raise 'blah'}.should_not raise_exception('blah')
89
+ end.should fail_with(%Q|expected no Exception with "blah", got #<RuntimeError: blah>|)
90
+ end
91
+ it "should fail if any other exception is raised with message" do
92
+ lambda do
93
+ lambda {raise NameError.new('blah')}.should_not raise_exception('blah')
94
+ end.should fail_with(%Q|expected no Exception with "blah", got #<NameError: blah>|)
95
+ end
96
+ end
97
+
98
+ describe "should raise_exception(NamedError)" do
99
+ it "should pass if named exception is raised" do
100
+ lambda { non_existent_method }.should raise_exception(NameError)
101
+ end
102
+
103
+ it "should fail if nothing is raised" do
104
+ lambda {
105
+ lambda { }.should raise_exception(NameError)
106
+ }.should fail_with("expected NameError but nothing was raised")
107
+ end
108
+
109
+ it "should fail if another exception is raised (NameError)" do
110
+ lambda {
111
+ lambda { raise }.should raise_exception(NameError)
112
+ }.should fail_with("expected NameError, got RuntimeError")
113
+ end
114
+
115
+ it "should fail if another exception is raised (NameError)" do
116
+ lambda {
117
+ lambda { load "non/existent/file" }.should raise_exception(NameError)
118
+ }.should fail_with(/expected NameError, got #<LoadError/)
119
+ end
120
+ end
121
+
122
+ describe "should_not raise_exception(NamedError)" do
123
+ it "should pass if nothing is raised" do
124
+ lambda { }.should_not raise_exception(NameError)
125
+ end
126
+
127
+ it "should pass if another exception is raised" do
128
+ lambda { raise }.should_not raise_exception(NameError)
129
+ end
130
+
131
+ it "should fail if named exception is raised" do
132
+ lambda {
133
+ lambda { 1 + 'b' }.should_not raise_exception(TypeError)
134
+ }.should fail_with(/expected no TypeError, got #<TypeError: String can't be/)
135
+ end
136
+ end
137
+
138
+ describe "should raise_exception(NamedError, exception_message) with String" do
139
+ it "should pass if named exception is raised with same message" do
140
+ lambda { raise "example message" }.should raise_exception(RuntimeError, "example message")
141
+ end
142
+
143
+ it "should fail if nothing is raised" do
144
+ lambda {
145
+ lambda {}.should raise_exception(RuntimeError, "example message")
146
+ }.should fail_with("expected RuntimeError with \"example message\" but nothing was raised")
147
+ end
148
+
149
+ it "should fail if incorrect exception is raised" do
150
+ lambda {
151
+ lambda { raise }.should raise_exception(NameError, "example message")
152
+ }.should fail_with("expected NameError with \"example message\", got RuntimeError")
153
+ end
154
+
155
+ it "should fail if correct exception is raised with incorrect message" do
156
+ lambda {
157
+ lambda { raise RuntimeError.new("not the example message") }.should raise_exception(RuntimeError, "example message")
158
+ }.should fail_with(/expected RuntimeError with \"example message\", got #<RuntimeError: not the example message/)
159
+ end
160
+ end
161
+
162
+ describe "should raise_exception(NamedError, exception_message) { |err| ... }" do
163
+ it "should yield exception if named exception is raised with same message" do
164
+ ran = false
165
+
166
+ lambda {
167
+ raise "example message"
168
+ }.should raise_exception(RuntimeError, "example message") { |err|
169
+ ran = true
170
+ err.class.should == RuntimeError
171
+ err.message.should == "example message"
172
+ }
173
+
174
+ ran.should == true
175
+ end
176
+
177
+ it "yielded block should be able to fail on it's own right" do
178
+ ran, passed = false, false
179
+
180
+ lambda {
181
+ lambda {
182
+ raise "example message"
183
+ }.should raise_exception(RuntimeError, "example message") { |err|
184
+ ran = true
185
+ 5.should == 4
186
+ passed = true
187
+ }
188
+ }.should fail_with(/expected: 4/m)
189
+
190
+ ran.should == true
191
+ passed.should == false
192
+ end
193
+
194
+ it "should NOT yield exception if no exception was thrown" do
195
+ ran = false
196
+
197
+ lambda {
198
+ lambda {}.should raise_exception(RuntimeError, "example message") { |err|
199
+ ran = true
200
+ }
201
+ }.should fail_with("expected RuntimeError with \"example message\" but nothing was raised")
202
+
203
+ ran.should == false
204
+ end
205
+
206
+ it "should not yield exception if exception class is not matched" do
207
+ ran = false
208
+
209
+ lambda {
210
+ lambda {
211
+ raise "example message"
212
+ }.should raise_exception(SyntaxError, "example message") { |err|
213
+ ran = true
214
+ }
215
+ }.should fail_with("expected SyntaxError with \"example message\", got #<RuntimeError: example message>")
216
+
217
+ ran.should == false
218
+ end
219
+
220
+ it "should NOT yield exception if exception message is not matched" do
221
+ ran = false
222
+
223
+ lambda {
224
+ lambda {
225
+ raise "example message"
226
+ }.should raise_exception(RuntimeError, "different message") { |err|
227
+ ran = true
228
+ }
229
+ }.should fail_with("expected RuntimeError with \"different message\", got #<RuntimeError: example message>")
230
+
231
+ ran.should == false
232
+ end
233
+ end
234
+
235
+ describe "should_not raise_exception(NamedError, exception_message) { |err| ... }" do
236
+ it "should pass if nothing is raised" do
237
+ ran = false
238
+
239
+ lambda {}.should_not raise_exception(RuntimeError, "example message") { |err|
240
+ ran = true
241
+ }
242
+
243
+ ran.should == false
244
+ end
245
+
246
+ it "should pass if a different exception is raised" do
247
+ ran = false
248
+
249
+ lambda { raise }.should_not raise_exception(NameError, "example message") { |err|
250
+ ran = true
251
+ }
252
+
253
+ ran.should == false
254
+ end
255
+
256
+ it "should pass if same exception is raised with different message" do
257
+ ran = false
258
+
259
+ lambda {
260
+ raise RuntimeError.new("not the example message")
261
+ }.should_not raise_exception(RuntimeError, "example message") { |err|
262
+ ran = true
263
+ }
264
+
265
+ ran.should == false
266
+ end
267
+
268
+ it "should fail if named exception is raised with same message" do
269
+ ran = false
270
+
271
+ lambda {
272
+ lambda {
273
+ raise "example message"
274
+ }.should_not raise_exception(RuntimeError, "example message") { |err|
275
+ ran = true
276
+ }
277
+ }.should fail_with("expected no RuntimeError with \"example message\", got #<RuntimeError: example message>")
278
+
279
+ ran.should == false
280
+ end
281
+ end
282
+
283
+ describe "should_not raise_exception(NamedError, exception_message) with String" do
284
+ it "should pass if nothing is raised" do
285
+ lambda {}.should_not raise_exception(RuntimeError, "example message")
286
+ end
287
+
288
+ it "should pass if a different exception is raised" do
289
+ lambda { raise }.should_not raise_exception(NameError, "example message")
290
+ end
291
+
292
+ it "should pass if same exception is raised with different message" do
293
+ lambda { raise RuntimeError.new("not the example message") }.should_not raise_exception(RuntimeError, "example message")
294
+ end
295
+
296
+ it "should fail if named exception is raised with same message" do
297
+ lambda {
298
+ lambda { raise "example message" }.should_not raise_exception(RuntimeError, "example message")
299
+ }.should fail_with("expected no RuntimeError with \"example message\", got #<RuntimeError: example message>")
300
+ end
301
+ end
302
+
303
+ describe "should raise_exception(NamedError, exception_message) with Regexp" do
304
+ it "should pass if named exception is raised with matching message" do
305
+ lambda { raise "example message" }.should raise_exception(RuntimeError, /ample mess/)
306
+ end
307
+
308
+ it "should fail if nothing is raised" do
309
+ lambda {
310
+ lambda {}.should raise_exception(RuntimeError, /ample mess/)
311
+ }.should fail_with("expected RuntimeError with message matching /ample mess/ but nothing was raised")
312
+ end
313
+
314
+ it "should fail if incorrect exception is raised" do
315
+ lambda {
316
+ lambda { raise }.should raise_exception(NameError, /ample mess/)
317
+ }.should fail_with("expected NameError with message matching /ample mess/, got RuntimeError")
318
+ end
319
+
320
+ it "should fail if correct exception is raised with incorrect message" do
321
+ lambda {
322
+ lambda { raise RuntimeError.new("not the example message") }.should raise_exception(RuntimeError, /less than ample mess/)
323
+ }.should fail_with("expected RuntimeError with message matching /less than ample mess/, got #<RuntimeError: not the example message>")
324
+ end
325
+ end
326
+
327
+ describe "should_not raise_exception(NamedError, exception_message) with Regexp" do
328
+ it "should pass if nothing is raised" do
329
+ lambda {}.should_not raise_exception(RuntimeError, /ample mess/)
330
+ end
331
+
332
+ it "should pass if a different exception is raised" do
333
+ lambda { raise }.should_not raise_exception(NameError, /ample mess/)
334
+ end
335
+
336
+ it "should pass if same exception is raised with non-matching message" do
337
+ lambda { raise RuntimeError.new("non matching message") }.should_not raise_exception(RuntimeError, /ample mess/)
338
+ end
339
+
340
+ it "should fail if named exception is raised with matching message" do
341
+ lambda {
342
+ lambda { raise "example message" }.should_not raise_exception(RuntimeError, /ample mess/)
343
+ }.should fail_with("expected no RuntimeError with message matching /ample mess/, got #<RuntimeError: example message>")
344
+ end
345
+ end
@@ -4,91 +4,116 @@ module Spec
4
4
  module Matchers
5
5
  describe ThrowSymbol do
6
6
  describe "with no args" do
7
- before(:each) { @matcher = ThrowSymbol.new }
8
-
9
- it "should match if any Symbol is thrown" do
10
- @matcher.matches?(lambda{ throw :sym }).should be_true
7
+ let(:matcher) { ThrowSymbol.new }
8
+
9
+ it "matches if any Symbol is thrown" do
10
+ matcher.matches?(lambda{ throw :sym }).should be_true
11
11
  end
12
- it "should match if any Symbol is thrown with an arg" do
13
- @matcher.matches?(lambda{ throw :sym, "argument" }).should be_true
12
+
13
+ it "matches if any Symbol is thrown with an arg" do
14
+ matcher.matches?(lambda{ throw :sym, "argument" }).should be_true
14
15
  end
15
- it "should not match if no Symbol is thrown" do
16
- @matcher.matches?(lambda{ }).should be_false
16
+
17
+ it "does not match if no Symbol is thrown" do
18
+ matcher.matches?(lambda{ }).should be_false
17
19
  end
18
- it "should provide a failure message" do
19
- @matcher.matches?(lambda{})
20
- @matcher.failure_message_for_should.should == "expected a Symbol but nothing was thrown"
20
+
21
+ it "provides a failure message" do
22
+ matcher.matches?(lambda{})
23
+ matcher.failure_message_for_should.should == "expected a Symbol but nothing was thrown"
21
24
  end
22
- it "should provide a negative failure message" do
23
- @matcher.matches?(lambda{ throw :sym})
24
- @matcher.failure_message_for_should_not.should == "expected no Symbol, got :sym"
25
+
26
+ it "provides a negative failure message" do
27
+ matcher.matches?(lambda{ throw :sym})
28
+ matcher.failure_message_for_should_not.should == "expected no Symbol, got :sym"
25
29
  end
26
30
  end
27
-
31
+
28
32
  describe "with a symbol" do
29
- before(:each) { @matcher = ThrowSymbol.new(:sym) }
30
-
31
- it "should match if correct Symbol is thrown" do
32
- @matcher.matches?(lambda{ throw :sym }).should be_true
33
+ let(:matcher) { ThrowSymbol.new(:sym) }
34
+
35
+ it "matches if correct Symbol is thrown" do
36
+ matcher.matches?(lambda{ throw :sym }).should be_true
33
37
  end
34
- it "should match if correct Symbol is thrown with an arg" do
35
- @matcher.matches?(lambda{ throw :sym, "argument" }).should be_true
38
+
39
+ it "matches if correct Symbol is thrown with an arg" do
40
+ matcher.matches?(lambda{ throw :sym, "argument" }).should be_true
36
41
  end
37
- it "should not match if no Symbol is thrown" do
38
- @matcher.matches?(lambda{ }).should be_false
42
+
43
+ it "does not match if no Symbol is thrown" do
44
+ matcher.matches?(lambda{ }).should be_false
39
45
  end
40
- it "should not match if correct Symbol is thrown" do
41
- @matcher.matches?(lambda{ throw :other_sym }).should be_false
46
+
47
+ it "does not match if correct Symbol is thrown" do
48
+ matcher.matches?(lambda{ throw :other_sym }).should be_false
42
49
  end
43
- it "should provide a failure message when no Symbol is thrown" do
44
- @matcher.matches?(lambda{})
45
- @matcher.failure_message_for_should.should == "expected :sym but nothing was thrown"
50
+
51
+ it "provides a failure message when no Symbol is thrown" do
52
+ matcher.matches?(lambda{})
53
+ matcher.failure_message_for_should.should == "expected :sym but nothing was thrown"
46
54
  end
47
- it "should provide a failure message when wrong Symbol is thrown" do
48
- @matcher.matches?(lambda{ throw :other_sym })
49
- @matcher.failure_message_for_should.should == "expected :sym, got :other_sym"
55
+
56
+ it "provides a failure message when wrong Symbol is thrown" do
57
+ matcher.matches?(lambda{ throw :other_sym })
58
+ matcher.failure_message_for_should.should == "expected :sym, got :other_sym"
50
59
  end
51
- it "should provide a negative failure message" do
52
- @matcher.matches?(lambda{ throw :sym })
53
- @matcher.failure_message_for_should_not.should == "expected :sym not to be thrown"
60
+
61
+ it "provides a negative failure message" do
62
+ matcher.matches?(lambda{ throw :sym })
63
+ matcher.failure_message_for_should_not.should == "expected :sym not to be thrown"
54
64
  end
65
+
55
66
  it "should only match NameErrors raised by uncaught throws" do
56
- @matcher.matches?(lambda{ sym }).should be_false
67
+ matcher.matches?(lambda{ :sym }).should be_false
68
+ end
69
+
70
+ it "bubbles up errors other than NameError" do
71
+ lambda do
72
+ matcher.matches?(lambda{ raise 'foo' })
73
+ end.should raise_error('foo')
57
74
  end
58
75
  end
59
76
 
60
77
  describe "with a symbol and an arg" do
61
- before(:each) { @matcher = ThrowSymbol.new(:sym, "a") }
62
-
63
- it "should match if correct Symbol and args are thrown" do
64
- @matcher.matches?(lambda{ throw :sym, "a" }).should be_true
78
+ let(:matcher) { ThrowSymbol.new(:sym, "a") }
79
+
80
+ it "matches if correct Symbol and args are thrown" do
81
+ matcher.matches?(lambda{ throw :sym, "a" }).should be_true
65
82
  end
66
- it "should not match if nothing is thrown" do
67
- @matcher.matches?(lambda{ }).should be_false
83
+
84
+ it "does not match if nothing is thrown" do
85
+ matcher.matches?(lambda{ }).should be_false
68
86
  end
69
- it "should not match if other Symbol is thrown" do
70
- @matcher.matches?(lambda{ throw :other_sym, "a" }).should be_false
87
+
88
+ it "does not match if other Symbol is thrown" do
89
+ matcher.matches?(lambda{ throw :other_sym, "a" }).should be_false
71
90
  end
72
- it "should not match if no arg is thrown" do
73
- @matcher.matches?(lambda{ throw :sym }).should be_false
91
+
92
+ it "does not match if no arg is thrown" do
93
+ matcher.matches?(lambda{ throw :sym }).should be_false
74
94
  end
75
- it "should not match if wrong arg is thrown" do
76
- @matcher.matches?(lambda{ throw :sym, "b" }).should be_false
95
+
96
+ it "does not match if wrong arg is thrown" do
97
+ matcher.matches?(lambda{ throw :sym, "b" }).should be_false
77
98
  end
78
- it "should provide a failure message when no Symbol is thrown" do
79
- @matcher.matches?(lambda{})
80
- @matcher.failure_message_for_should.should == %q[expected :sym with "a" but nothing was thrown]
99
+
100
+ it "provides a failure message when no Symbol is thrown" do
101
+ matcher.matches?(lambda{})
102
+ matcher.failure_message_for_should.should == %q[expected :sym with "a" but nothing was thrown]
81
103
  end
82
- it "should provide a failure message when wrong Symbol is thrown" do
83
- @matcher.matches?(lambda{ throw :other_sym })
84
- @matcher.failure_message_for_should.should == %q[expected :sym with "a", got :other_sym]
104
+
105
+ it "provides a failure message when wrong Symbol is thrown" do
106
+ matcher.matches?(lambda{ throw :other_sym })
107
+ matcher.failure_message_for_should.should == %q[expected :sym with "a", got :other_sym]
85
108
  end
86
- it "should provide a negative failure message" do
87
- @matcher.matches?(lambda{ throw :sym })
88
- @matcher.failure_message_for_should_not.should == %q[expected :sym with "a" not to be thrown]
109
+
110
+ it "provides a negative failure message" do
111
+ matcher.matches?(lambda{ throw :sym })
112
+ matcher.failure_message_for_should_not.should == %q[expected :sym with "a" not to be thrown]
89
113
  end
90
- it "should only match NameErrors raised by uncaught throws" do
91
- @matcher.matches?(lambda{ sym }).should be_false
114
+
115
+ it "only matches NameErrors raised by uncaught throws" do
116
+ matcher.matches?(lambda{ :sym }).should be_false
92
117
  end
93
118
  end
94
119
  end