mocha 0.4.0 → 0.5.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.
Files changed (78) hide show
  1. data/Rakefile +28 -10
  2. data/examples/stubba.rb +1 -1
  3. data/lib/mocha/auto_verify.rb +6 -6
  4. data/lib/mocha/deprecation.rb +22 -0
  5. data/lib/mocha/exception_raiser.rb +17 -0
  6. data/lib/mocha/expectation.rb +167 -84
  7. data/lib/mocha/infinite_range.rb +4 -6
  8. data/lib/mocha/inspect.rb +3 -1
  9. data/lib/mocha/is_a.rb +9 -0
  10. data/lib/mocha/missing_expectation.rb +27 -0
  11. data/lib/mocha/mock.rb +191 -5
  12. data/lib/mocha/multiple_yields.rb +20 -0
  13. data/lib/mocha/no_yields.rb +11 -0
  14. data/lib/mocha/object.rb +11 -1
  15. data/lib/mocha/parameter_matchers.rb +9 -0
  16. data/lib/mocha/parameter_matchers/all_of.rb +39 -0
  17. data/lib/mocha/parameter_matchers/any_of.rb +44 -0
  18. data/lib/mocha/parameter_matchers/anything.rb +30 -0
  19. data/lib/mocha/parameter_matchers/has_entry.rb +39 -0
  20. data/lib/mocha/parameter_matchers/has_key.rb +39 -0
  21. data/lib/mocha/parameter_matchers/has_value.rb +39 -0
  22. data/lib/mocha/parameter_matchers/includes.rb +37 -0
  23. data/lib/mocha/return_values.rb +31 -0
  24. data/lib/mocha/single_return_value.rb +24 -0
  25. data/lib/mocha/single_yield.rb +18 -0
  26. data/lib/mocha/standalone.rb +2 -0
  27. data/lib/mocha/stub.rb +18 -0
  28. data/lib/mocha/yield_parameters.rb +31 -0
  29. data/test/{mocha_acceptance_test.rb → acceptance/mocha_acceptance_test.rb} +1 -1
  30. data/test/acceptance/mocked_methods_dispatch_acceptance_test.rb +72 -0
  31. data/test/acceptance/parameter_matcher_acceptance_test.rb +63 -0
  32. data/test/{standalone_acceptance_test.rb → acceptance/standalone_acceptance_test.rb} +22 -1
  33. data/test/{stubba_acceptance_test.rb → acceptance/stubba_acceptance_test.rb} +1 -1
  34. data/test/deprecation_disabler.rb +15 -0
  35. data/test/{mocha_test_result_integration_test.rb → integration/mocha_test_result_integration_test.rb} +1 -1
  36. data/test/{stubba_integration_test.rb → integration/stubba_integration_test.rb} +1 -1
  37. data/test/{stubba_test_result_integration_test.rb → integration/stubba_test_result_integration_test.rb} +1 -1
  38. data/test/test_helper.rb +8 -0
  39. data/test/test_runner.rb +31 -0
  40. data/test/{mocha → unit}/any_instance_method_test.rb +0 -0
  41. data/test/unit/array_inspect_test.rb +16 -0
  42. data/test/{mocha → unit}/auto_verify_test.rb +0 -0
  43. data/test/{mocha → unit}/central_test.rb +0 -0
  44. data/test/{mocha → unit}/class_method_test.rb +0 -0
  45. data/test/unit/date_time_inspect_test.rb +21 -0
  46. data/test/unit/expectation_raiser_test.rb +28 -0
  47. data/test/{mocha → unit}/expectation_test.rb +105 -63
  48. data/test/unit/hash_inspect_test.rb +16 -0
  49. data/test/{mocha → unit}/infinite_range_test.rb +8 -5
  50. data/test/{mocha → unit}/metaclass_test.rb +0 -0
  51. data/test/unit/missing_expectation_test.rb +51 -0
  52. data/test/unit/mock_test.rb +351 -0
  53. data/test/unit/multiple_yields_test.rb +18 -0
  54. data/test/unit/no_yield_test.rb +18 -0
  55. data/test/unit/object_inspect_test.rb +35 -0
  56. data/test/{mocha → unit}/object_test.rb +0 -0
  57. data/test/unit/parameter_matchers/all_of_test.rb +26 -0
  58. data/test/unit/parameter_matchers/any_of_test.rb +26 -0
  59. data/test/unit/parameter_matchers/anything_test.rb +21 -0
  60. data/test/unit/parameter_matchers/has_entry_test.rb +25 -0
  61. data/test/unit/parameter_matchers/has_key_test.rb +25 -0
  62. data/test/unit/parameter_matchers/has_value_test.rb +25 -0
  63. data/test/unit/parameter_matchers/includes_test.rb +25 -0
  64. data/test/unit/parameter_matchers/stub_matcher.rb +22 -0
  65. data/test/{mocha → unit}/pretty_parameters_test.rb +0 -0
  66. data/test/unit/return_values_test.rb +63 -0
  67. data/test/{mocha → unit}/setup_and_teardown_test.rb +0 -0
  68. data/test/unit/single_return_value_test.rb +33 -0
  69. data/test/unit/single_yield_test.rb +18 -0
  70. data/test/unit/string_inspect_test.rb +11 -0
  71. data/test/unit/stub_test.rb +24 -0
  72. data/test/unit/yield_parameters_test.rb +93 -0
  73. metadata +117 -73
  74. data/lib/mocha/mock_methods.rb +0 -122
  75. data/test/all_tests.rb +0 -75
  76. data/test/mocha/inspect_test.rb +0 -90
  77. data/test/mocha/mock_methods_test.rb +0 -235
  78. data/test/mocha/mock_test.rb +0 -84
@@ -1,4 +1,4 @@
1
- require 'test_helper'
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
2
  require 'mocha_standalone'
3
3
 
4
4
  class NotATestUnitAssertionFailedError < StandardError
@@ -70,6 +70,18 @@ class SampleTest < NotATestUnitTestCase
70
70
  stubbee.expects(:blah)
71
71
  end
72
72
 
73
+ def mocha_with_matching_parameter
74
+ mockee = mock()
75
+ mockee.expects(:blah).with(has_key(:wibble))
76
+ mockee.blah(:wibble => 1)
77
+ end
78
+
79
+ def mocha_with_non_matching_parameter
80
+ mockee = mock()
81
+ mockee.expects(:blah).with(has_key(:wibble))
82
+ mockee.blah(:wobble => 2)
83
+ end
84
+
73
85
  end
74
86
 
75
87
  require 'test/unit'
@@ -107,4 +119,13 @@ class StandaloneAcceptanceTest < Test::Unit::TestCase
107
119
  assert_equal 1, sample_test.assertion_count
108
120
  end
109
121
 
122
+ def test_should_pass_mocha_test_with_matching_parameter
123
+ assert_nothing_raised { sample_test.run(:mocha_with_matching_parameter) }
124
+ assert_equal 1, sample_test.assertion_count
125
+ end
126
+
127
+ def test_should_fail_mocha_test_with_non_matching_parameter
128
+ assert_raises(NotATestUnitAssertionFailedError) { sample_test.run(:mocha_with_non_matching_parameter) }
129
+ end
130
+
110
131
  end
@@ -1,4 +1,4 @@
1
- require 'test_helper'
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
2
  require 'mocha'
3
3
 
4
4
  class Widget
@@ -0,0 +1,15 @@
1
+ require 'mocha/deprecation'
2
+
3
+ module DeprecationDisabler
4
+
5
+ def disable_deprecations
6
+ original_mode = Mocha::Deprecation.mode
7
+ Mocha::Deprecation.mode = :disabled
8
+ begin
9
+ yield
10
+ ensure
11
+ Mocha::Deprecation.mode = original_mode
12
+ end
13
+ end
14
+
15
+ end
@@ -1,4 +1,4 @@
1
- require 'test_helper'
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
2
  require 'mocha/standalone'
3
3
  require 'mocha/test_case_adapter'
4
4
  require 'execution_point'
@@ -1,4 +1,4 @@
1
- require 'test_helper'
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
2
 
3
3
  require 'mocha/object'
4
4
  require 'mocha/test_case_adapter'
@@ -1,4 +1,4 @@
1
- require 'test_helper'
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
2
  require 'mocha/object'
3
3
  require 'mocha/standalone'
4
4
  require 'mocha/test_case_adapter'
data/test/test_helper.rb CHANGED
@@ -1,4 +1,12 @@
1
+ unless defined?(STANDARD_OBJECT_PUBLIC_INSTANCE_METHODS)
2
+ STANDARD_OBJECT_PUBLIC_INSTANCE_METHODS = Object.public_instance_methods
3
+ end
4
+
1
5
  $:.unshift File.expand_path(File.join(File.dirname(__FILE__), "..", "lib"))
2
6
  $:.unshift File.expand_path(File.join(File.dirname(__FILE__)))
7
+ $:.unshift File.expand_path(File.join(File.dirname(__FILE__), 'unit'))
8
+ $:.unshift File.expand_path(File.join(File.dirname(__FILE__), 'unit', 'parameter_matchers'))
9
+ $:.unshift File.expand_path(File.join(File.dirname(__FILE__), 'integration'))
10
+ $:.unshift File.expand_path(File.join(File.dirname(__FILE__), 'acceptance'))
3
11
 
4
12
  require 'test/unit'
@@ -0,0 +1,31 @@
1
+ require 'test/unit/testresult'
2
+ require 'test/unit/testcase'
3
+ require 'mocha/standalone'
4
+ require 'mocha/test_case_adapter'
5
+
6
+ module TestRunner
7
+
8
+ def run_test(test_result = Test::Unit::TestResult.new, &block)
9
+ test_class = Class.new(Test::Unit::TestCase) do
10
+ include Mocha::Standalone
11
+ include Mocha::TestCaseAdapter
12
+ define_method(:test_me, &block)
13
+ end
14
+ test = test_class.new(:test_me)
15
+ test.run(test_result) {}
16
+ class << test_result
17
+ attr_reader :failures, :errors
18
+ end
19
+ test_result
20
+ end
21
+
22
+ def assert_passed(test_result)
23
+ flunk "Test failed unexpectedly with message: #{test_result.failures.first.message}" if test_result.failure_count > 0
24
+ flunk "Test failed unexpectedly with message: #{test_result.errors.first.message}" if test_result.error_count > 0
25
+ end
26
+
27
+ def assert_failed(test_result)
28
+ flunk "Test passed unexpectedly" if test_result.passed?
29
+ end
30
+
31
+ end
File without changes
@@ -0,0 +1,16 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+ require 'mocha/inspect'
3
+
4
+ class ArrayInstanceTest < Test::Unit::TestCase
5
+
6
+ def test_should_use_inspect
7
+ array = [1, 2]
8
+ assert_equal array.inspect, array.mocha_inspect
9
+ end
10
+
11
+ def test_should_use_mocha_inspect_on_each_item
12
+ array = [1, 2, "chris"]
13
+ assert_equal "[1, 2, 'chris']", array.mocha_inspect
14
+ end
15
+
16
+ end
File without changes
File without changes
File without changes
@@ -0,0 +1,21 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+ require 'mocha/inspect'
3
+
4
+ class TimeDateInspectTest < Test::Unit::TestCase
5
+
6
+ def test_should_use_include_date_in_seconds
7
+ time = Time.now
8
+ assert_equal "#{time.inspect} (#{time.to_f} secs)", time.mocha_inspect
9
+ end
10
+
11
+ def test_should_use_to_s_for_date
12
+ date = Date.new(2006, 1, 1)
13
+ assert_equal date.to_s, date.mocha_inspect
14
+ end
15
+
16
+ def test_should_use_to_s_for_datetime
17
+ datetime = DateTime.new(2006, 1, 1)
18
+ assert_equal datetime.to_s, datetime.mocha_inspect
19
+ end
20
+
21
+ end
@@ -0,0 +1,28 @@
1
+ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
+
3
+ require 'mocha/exception_raiser'
4
+
5
+ class ExceptionRaiserTest < Test::Unit::TestCase
6
+
7
+ include Mocha
8
+
9
+ def test_should_raise_exception_with_specified_class_and_default_message
10
+ exception_class = Class.new(StandardError)
11
+ raiser = ExceptionRaiser.new(exception_class, nil)
12
+ exception = assert_raises(exception_class) { raiser.evaluate }
13
+ assert_equal exception_class.to_s, exception.message
14
+ end
15
+
16
+ def test_should_raise_exception_with_specified_class_and_message
17
+ exception_class = Class.new(StandardError)
18
+ raiser = ExceptionRaiser.new(exception_class, 'message')
19
+ exception = assert_raises(exception_class) { raiser.evaluate }
20
+ assert_equal 'message', exception.message
21
+ end
22
+
23
+ def test_should_raise_interrupt_exception_with_default_message_so_it_works_in_ruby_1_8_6
24
+ raiser = ExceptionRaiser.new(Interrupt, nil)
25
+ assert_raises(Interrupt) { raiser.evaluate }
26
+ end
27
+
28
+ end
@@ -2,10 +2,12 @@ require File.join(File.dirname(__FILE__), "..", "test_helper")
2
2
  require 'method_definer'
3
3
  require 'mocha/expectation'
4
4
  require 'execution_point'
5
+ require 'deprecation_disabler'
5
6
 
6
7
  class ExpectationTest < Test::Unit::TestCase
7
8
 
8
9
  include Mocha
10
+ include DeprecationDisabler
9
11
 
10
12
  def new_expectation
11
13
  Expectation.new(nil, :expected_method)
@@ -35,6 +37,11 @@ class ExpectationTest < Test::Unit::TestCase
35
37
  assert expectation.match?(:expected_method, 1, 2, 3)
36
38
  end
37
39
 
40
+ def test_should_not_match_calls_to_different_method_with_parameters_constrained_as_expected
41
+ expectation = new_expectation.with() {|x, y, z| x + y == z}
42
+ assert !expectation.match?(:different_method, 1, 2, 3)
43
+ end
44
+
38
45
  def test_should_not_match_calls_to_different_methods_with_no_parameters
39
46
  assert !new_expectation.match?(:unexpected_method)
40
47
  end
@@ -59,6 +66,33 @@ class ExpectationTest < Test::Unit::TestCase
59
66
  assert !expectation.match?(:expected_method, 1, 0, 3)
60
67
  end
61
68
 
69
+ def test_should_match_until_expected_invocation_count_is_one_and_actual_invocation_count_would_be_two
70
+ expectation = new_expectation.times(1)
71
+ assert expectation.match?(:expected_method)
72
+ expectation.invoke
73
+ assert !expectation.match?(:expected_method)
74
+ end
75
+
76
+ def test_should_match_until_expected_invocation_count_is_two_and_actual_invocation_count_would_be_three
77
+ expectation = new_expectation.times(2)
78
+ assert expectation.match?(:expected_method)
79
+ expectation.invoke
80
+ assert expectation.match?(:expected_method)
81
+ expectation.invoke
82
+ assert !expectation.match?(:expected_method)
83
+ end
84
+
85
+ def test_should_match_until_expected_invocation_count_is_a_range_from_two_to_three_and_actual_invocation_count_would_be_four
86
+ expectation = new_expectation.times(2..3)
87
+ assert expectation.match?(:expected_method)
88
+ expectation.invoke
89
+ assert expectation.match?(:expected_method)
90
+ expectation.invoke
91
+ assert expectation.match?(:expected_method)
92
+ expectation.invoke
93
+ assert !expectation.match?(:expected_method)
94
+ end
95
+
62
96
  def test_should_store_provided_backtrace
63
97
  backtrace = Object.new
64
98
  expectation = Expectation.new(nil, :expected_method, backtrace)
@@ -77,18 +111,40 @@ class ExpectationTest < Test::Unit::TestCase
77
111
  end
78
112
 
79
113
  def test_should_yield_no_parameters
80
- expectation = new_expectation.yields
114
+ expectation = new_expectation().yields()
81
115
  yielded_parameters = nil
82
- expectation.invoke() { |*parameters| yielded_parameters = parameters }
116
+ expectation.invoke() { |*parameters| yielded_parameters = parameters }
83
117
  assert_equal Array.new, yielded_parameters
84
118
  end
85
119
 
86
120
  def test_should_yield_with_specified_parameters
87
- parameters_for_yield = [1, 2, 3]
88
- expectation = new_expectation.yields(*parameters_for_yield)
121
+ expectation = new_expectation().yields(1, 2, 3)
89
122
  yielded_parameters = nil
90
- expectation.invoke() { |*parameters| yielded_parameters = parameters }
91
- assert_equal parameters_for_yield, yielded_parameters
123
+ expectation.invoke() { |*parameters| yielded_parameters = parameters }
124
+ assert_equal [1, 2, 3], yielded_parameters
125
+ end
126
+
127
+ def test_should_yield_different_parameters_on_consecutive_invocations
128
+ expectation = new_expectation().yields(1, 2, 3).yields(4, 5)
129
+ yielded_parameters = []
130
+ expectation.invoke() { |*parameters| yielded_parameters << parameters }
131
+ expectation.invoke() { |*parameters| yielded_parameters << parameters }
132
+ assert_equal [[1, 2, 3], [4, 5]], yielded_parameters
133
+ end
134
+
135
+ def test_should_yield_multiple_times_for_single_invocation
136
+ expectation = new_expectation().multiple_yields([1, 2, 3], [4, 5])
137
+ yielded_parameters = []
138
+ expectation.invoke() { |*parameters| yielded_parameters << parameters }
139
+ assert_equal [[1, 2, 3], [4, 5]], yielded_parameters
140
+ end
141
+
142
+ def test_should_yield_multiple_times_for_first_invocation_and_once_for_second_invocation
143
+ expectation = new_expectation().multiple_yields([1, 2, 3], [4, 5]).then.yields(6, 7)
144
+ yielded_parameters = []
145
+ expectation.invoke() { |*parameters| yielded_parameters << parameters }
146
+ expectation.invoke() { |*parameters| yielded_parameters << parameters }
147
+ assert_equal [[1, 2, 3], [4, 5], [6, 7]], yielded_parameters
92
148
  end
93
149
 
94
150
  def test_should_return_specified_value
@@ -130,7 +186,9 @@ class ExpectationTest < Test::Unit::TestCase
130
186
  def test_should_return_evaluated_proc
131
187
  proc = lambda { 99 }
132
188
  expectation = new_expectation.returns(proc)
133
- assert_equal 99, expectation.invoke
189
+ result = nil
190
+ disable_deprecations { result = expectation.invoke }
191
+ assert_equal 99, result
134
192
  end
135
193
 
136
194
  def test_should_return_evaluated_proc_without_using_is_a_method
@@ -139,7 +197,7 @@ class ExpectationTest < Test::Unit::TestCase
139
197
  proc.called = false
140
198
  proc.replace_instance_method(:is_a?) { self.called = true; true}
141
199
  expectation = new_expectation.returns(proc)
142
- expectation.invoke
200
+ disable_deprecations { expectation.invoke }
143
201
  assert_equal false, proc.called
144
202
  end
145
203
 
@@ -175,6 +233,20 @@ class ExpectationTest < Test::Unit::TestCase
175
233
  assert_equal exception_msg, exception.message
176
234
  end
177
235
 
236
+ def test_should_return_values_then_raise_exception
237
+ expectation = new_expectation.returns(1, 2).then.raises()
238
+ assert_equal 1, expectation.invoke
239
+ assert_equal 2, expectation.invoke
240
+ assert_raise(RuntimeError) { expectation.invoke }
241
+ end
242
+
243
+ def test_should_raise_exception_then_return_values
244
+ expectation = new_expectation.raises().then.returns(1, 2)
245
+ assert_raise(RuntimeError) { expectation.invoke }
246
+ assert_equal 1, expectation.invoke
247
+ assert_equal 2, expectation.invoke
248
+ end
249
+
178
250
  def test_should_not_raise_error_on_verify_if_expected_call_was_made
179
251
  expectation = new_expectation
180
252
  expectation.invoke
@@ -183,6 +255,30 @@ class ExpectationTest < Test::Unit::TestCase
183
255
  }
184
256
  end
185
257
 
258
+ def test_should_raise_error_on_verify_if_call_expected_once_but_invoked_twice
259
+ expectation = new_expectation.once
260
+ expectation.invoke
261
+ expectation.invoke
262
+ assert_raises(ExpectationError) {
263
+ expectation.verify
264
+ }
265
+ end
266
+
267
+ def test_should_raise_error_on_verify_if_call_expected_once_but_not_invoked
268
+ expectation = new_expectation.once
269
+ assert_raises(ExpectationError) {
270
+ expectation.verify
271
+ }
272
+ end
273
+
274
+ def test_should_not_raise_error_on_verify_if_call_expected_once_and_invoked_once
275
+ expectation = new_expectation.once
276
+ expectation.invoke
277
+ assert_nothing_raised(ExpectationError) {
278
+ expectation.verify
279
+ }
280
+ end
281
+
186
282
  def test_should_not_raise_error_on_verify_if_expected_call_was_made_at_least_once
187
283
  expectation = new_expectation.at_least_once
188
284
  3.times {expectation.invoke}
@@ -280,13 +376,6 @@ class ExpectationTest < Test::Unit::TestCase
280
376
  assert_equal "expected_method", new_expectation.method_signature
281
377
  end
282
378
 
283
- def test_should_always_verify_successfully
284
- stub = Stub.new(nil, :expected_method)
285
- assert stub.verify
286
- stub.invoke
287
- assert stub.verify
288
- end
289
-
290
379
  def test_should_raise_error_with_message_indicating_which_method_was_expected_to_be_called_on_which_mock_object
291
380
  mock = Class.new { def mocha_inspect; 'mock'; end }.new
292
381
  expectation = Expectation.new(mock, :expected_method)
@@ -294,53 +383,6 @@ class ExpectationTest < Test::Unit::TestCase
294
383
  assert_match "mock.expected_method", e.message
295
384
  end
296
385
 
297
- end
298
-
299
- class ExpectationSimilarExpectationsTest < Test::Unit::TestCase
300
-
301
- include Mocha
302
-
303
- def new_expectation
304
- Expectation.new(nil, :expected_method)
305
- end
306
-
307
- def test_should_find_expectations_to_the_same_method
308
- expectation = new_expectation.with(1)
309
- mock = Object.new
310
- mock.define_instance_method(:expectations) { [expectation] }
311
- failed_expectation = MissingExpectation.new(mock, :expected_method).with(2)
312
- assert_equal [expectation], failed_expectation.similar_expectations
313
- end
314
-
315
- def test_should_report_similar_expectations
316
- mock = Object.new
317
- expectation_1 = new_expectation.with(1)
318
- expectation_2 = new_expectation.with(2)
319
- mock = Object.new
320
- mock.define_instance_method(:expectations) { [expectation_1, expectation_2] }
321
- missing_expectation = MissingExpectation.new(mock, :expected_method).with(3)
322
- exception = assert_raise(ExpectationError) { missing_expectation.verify }
323
- assert_equal "#{mock.mocha_inspect}.expected_method(3) - expected calls: 0, actual calls: 1\nSimilar expectations:\nexpected_method(1)\nexpected_method(2)", exception.message
324
- end
325
-
326
- def test_should_ignore_expectations_to_different_methods
327
- expectation = new_expectation.with(1)
328
- mock = Object.new
329
- mock.define_instance_method(:expectations) { [expectation] }
330
- failed_expectation = MissingExpectation.new(mock, :other_method).with(1)
331
- assert failed_expectation.similar_expectations.empty?
332
- end
333
-
334
- def test_should_not_report_similar_expectations
335
- expectation = new_expectation.with(1)
336
- mock = Object.new
337
- mock.define_instance_method(:expectations) { [expectation] }
338
- mock.define_instance_method(:mocha_inspect) { 'mocha_inspect' }
339
- missing_expectation = MissingExpectation.new(mock, :unexpected_method).with(1)
340
- exception = assert_raise(ExpectationError) { missing_expectation.verify }
341
- assert_equal "mocha_inspect.unexpected_method(1) - expected calls: 0, actual calls: 1", exception.message
342
- end
343
-
344
386
  def test_should_exclude_mocha_locations_from_backtrace
345
387
  mocha_lib = "/username/workspace/mocha_wibble/lib/"
346
388
  backtrace = [ mocha_lib + 'exclude/me/1', mocha_lib + 'exclude/me/2', '/keep/me', mocha_lib + 'exclude/me/3']
@@ -354,4 +396,4 @@ class ExpectationSimilarExpectationsTest < Test::Unit::TestCase
354
396
  assert_match Regexp.new("/lib/$"), expectation.mocha_lib_directory
355
397
  end
356
398
 
357
- end
399
+ end