rr 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. data/CHANGES +5 -0
  2. data/Rakefile +1 -1
  3. data/examples/high_level_example.rb +6 -4
  4. data/examples/rr/do_not_allow_creator_example.rb +18 -18
  5. data/examples/rr/double_dispatching_example.rb +5 -5
  6. data/examples/rr/double_verify_example.rb +1 -1
  7. data/examples/rr/errors/rr_error_example.rb +47 -0
  8. data/examples/rr/expectations/any_argument_expectation_example.rb +2 -2
  9. data/examples/rr/expectations/anything_argument_equality_expectation_example.rb +4 -4
  10. data/examples/rr/expectations/argument_equality_expectation_example.rb +12 -12
  11. data/examples/rr/expectations/boolean_argument_equality_expectation_example.rb +4 -4
  12. data/examples/rr/expectations/duck_type_argument_equality_expectation_example.rb +4 -4
  13. data/examples/rr/expectations/is_a_argument_equality_expectation_example.rb +4 -4
  14. data/examples/rr/expectations/numeric_argument_equality_expectation_example.rb +4 -4
  15. data/examples/rr/expectations/range_argument_equality_expectation_example.rb +4 -4
  16. data/examples/rr/expectations/regexp_argument_equality_expectation_example.rb +4 -4
  17. data/examples/rr/expectations/times_called_expectation_example.rb +6 -6
  18. data/examples/rr/extensions/double_methods_example.rb +4 -4
  19. data/examples/rr/mock_creator_example.rb +1 -1
  20. data/examples/rr/probe_creator_example.rb +1 -1
  21. data/examples/rr/rspec/rspec_adapter_example.rb +1 -1
  22. data/examples/rr/rspec/rspec_backtrace_tweaking_example.rb +25 -0
  23. data/examples/rr/scenario_example.rb +12 -12
  24. data/examples/rr/space_create_example.rb +6 -6
  25. data/examples/rr/space_verify_example.rb +1 -1
  26. data/examples/rr/test_unit/test_unit_backtrace_test.rb +32 -0
  27. data/examples/rr/test_unit/test_unit_integration_test.rb +1 -1
  28. data/lib/rr/adapters/rspec.rb +2 -2
  29. data/lib/rr/adapters/test_unit.rb +1 -2
  30. data/lib/rr/double.rb +1 -1
  31. data/lib/rr/errors/argument_equality_error.rb +6 -0
  32. data/lib/rr/errors/rr_error.rb +19 -0
  33. data/lib/rr/errors/scenario_not_found_error.rb +6 -0
  34. data/lib/rr/errors/scenario_order_error.rb +6 -0
  35. data/lib/rr/errors/times_called_error.rb +6 -0
  36. data/lib/rr/expectations/argument_equality_expectation.rb +1 -4
  37. data/lib/rr/expectations/times_called_expectation.rb +2 -5
  38. data/lib/rr/extensions/double_methods.rb +5 -5
  39. data/lib/rr/scenario.rb +10 -10
  40. data/lib/rr/space.rb +3 -1
  41. data/lib/rr.rb +5 -2
  42. metadata +10 -4
  43. data/lib/rr/scenario_not_found_error.rb +0 -4
  44. data/lib/rr/scenario_order_error.rb +0 -4
data/CHANGES CHANGED
@@ -1 +1,6 @@
1
+ * 0.1.1
2
+ - Trim the backtrace for Rspec and Test::Unit
3
+ - Rspec and Test::Unit integration fixes
4
+
1
5
  * 0.1.0
6
+ - Initial Release
data/Rakefile CHANGED
@@ -21,7 +21,7 @@ def run_suite
21
21
  end
22
22
 
23
23
  PKG_NAME = "rr"
24
- PKG_VERSION = "0.1.0"
24
+ PKG_VERSION = "0.1.1"
25
25
  PKG_FILES = FileList[
26
26
  '[A-Z]*',
27
27
  '*.rb',
@@ -18,7 +18,7 @@ describe "RR mock:" do
18
18
  it "mocks via inline call" do
19
19
  mock(@obj).to_s {"a value"}
20
20
  @obj.to_s.should == "a value"
21
- proc {@obj.to_s}.should raise_error(RR::Expectations::TimesCalledExpectationError)
21
+ proc {@obj.to_s}.should raise_error(RR::Errors::TimesCalledError)
22
22
  end
23
23
 
24
24
  it "allows ordering" do
@@ -27,7 +27,7 @@ describe "RR mock:" do
27
27
  @obj.to_s.should == "value 1"
28
28
  @obj.to_s.should == "value 2"
29
29
  @obj.to_s.should == "value 2"
30
- proc {@obj.to_s}.should raise_error(RR::Expectations::TimesCalledExpectationError)
30
+ proc {@obj.to_s}.should raise_error(RR::Errors::TimesCalledError)
31
31
  end
32
32
 
33
33
  it "mocks via block" do
@@ -56,7 +56,9 @@ describe "RR mock:" do
56
56
  "My String",
57
57
  "Tabcola"
58
58
  ).should == "value 1"
59
- proc {@obj.foobar(:failure)}.should raise_error( RR::ScenarioNotFoundError )
59
+ proc do
60
+ @obj.foobar(:failure)
61
+ end.should raise_error( RR::Errors::ScenarioNotFoundError )
60
62
  end
61
63
  end
62
64
 
@@ -80,7 +82,7 @@ describe "RR probe:" do
80
82
  @obj.to_s(:foo).should == "Original to_s with arg foo"
81
83
  @obj.to_s(:bar).should == "Original to_s with arg bar"
82
84
  @obj.to_s(:bar).should == "Original to_s with arg bar"
83
- proc {@obj.to_s(:bar)}.should raise_error(RR::Expectations::TimesCalledExpectationError)
85
+ proc {@obj.to_s(:bar)}.should raise_error(RR::Errors::TimesCalledError)
84
86
  end
85
87
 
86
88
  it "probes via block" do
@@ -35,28 +35,28 @@ describe DoNotAllowCreator, ".new with block" do
35
35
  end
36
36
  end
37
37
 
38
- it "raises TimesCalledExpectationError when any_args is called with no arguments" do
39
- proc {@subject.any_args}.should raise_error(Expectations::TimesCalledExpectationError)
38
+ it "raises TimesCalledError when any_args is called with no arguments" do
39
+ proc {@subject.any_args}.should raise_error(Errors::TimesCalledError)
40
40
  end
41
41
 
42
- it "raises TimesCalledExpectationError when any_args is called with arguments" do
43
- proc {@subject.any_args(1, 2)}.should raise_error(Expectations::TimesCalledExpectationError)
42
+ it "raises TimesCalledError when any_args is called with arguments" do
43
+ proc {@subject.any_args(1, 2)}.should raise_error(Errors::TimesCalledError)
44
44
  end
45
45
 
46
- it "raises TimesCalledExpectationError when no_args is called with no arguments" do
47
- proc {@subject.no_args}.should raise_error(Expectations::TimesCalledExpectationError)
46
+ it "raises TimesCalledError when no_args is called with no arguments" do
47
+ proc {@subject.no_args}.should raise_error(Errors::TimesCalledError)
48
48
  end
49
49
 
50
- it "does not raise TimesCalledExpectationError when no_args is called with arguments" do
51
- proc {@subject.no_args(1, 2)}.should raise_error(ScenarioNotFoundError)
50
+ it "does not raise TimesCalledError when no_args is called with arguments" do
51
+ proc {@subject.no_args(1, 2)}.should raise_error(Errors::ScenarioNotFoundError)
52
52
  end
53
53
 
54
- it "raises TimesCalledExpectationError when any_args is called with no arguments" do
55
- proc {@subject.with_args}.should raise_error(ScenarioNotFoundError)
54
+ it "raises TimesCalledError when any_args is called with no arguments" do
55
+ proc {@subject.with_args}.should raise_error(Errors::ScenarioNotFoundError)
56
56
  end
57
57
 
58
- it "raises TimesCalledExpectationError when any_args is called with arguments" do
59
- proc {@subject.any_args(1, 2)}.should raise_error(Expectations::TimesCalledExpectationError)
58
+ it "raises TimesCalledError when any_args is called with arguments" do
59
+ proc {@subject.any_args(1, 2)}.should raise_error(Errors::TimesCalledError)
60
60
  end
61
61
  end
62
62
 
@@ -70,20 +70,20 @@ describe DoNotAllowCreator, "#method_missing" do
70
70
 
71
71
  it "sets expectation for method to never be called with any arguments when on arguments passed in" do
72
72
  @creator.foobar
73
- proc {@subject.foobar}.should raise_error(Expectations::TimesCalledExpectationError)
74
- proc {@subject.foobar(1, 2)}.should raise_error(Expectations::TimesCalledExpectationError)
73
+ proc {@subject.foobar}.should raise_error(Errors::TimesCalledError)
74
+ proc {@subject.foobar(1, 2)}.should raise_error(Errors::TimesCalledError)
75
75
  end
76
76
 
77
77
  it "sets expectation for method to never be called with passed in arguments" do
78
78
  @creator.foobar(1, 2)
79
- proc {@subject.foobar}.should raise_error(ScenarioNotFoundError)
80
- proc {@subject.foobar(1, 2)}.should raise_error(Expectations::TimesCalledExpectationError)
79
+ proc {@subject.foobar}.should raise_error(Errors::ScenarioNotFoundError)
80
+ proc {@subject.foobar(1, 2)}.should raise_error(Errors::TimesCalledError)
81
81
  end
82
82
 
83
83
  it "sets expectation for method to never be called with no arguments when with_no_args is set" do
84
84
  @creator.foobar.with_no_args
85
- proc {@subject.foobar}.should raise_error(Expectations::TimesCalledExpectationError)
86
- proc {@subject.foobar(1, 2)}.should raise_error(ScenarioNotFoundError)
85
+ proc {@subject.foobar}.should raise_error(Errors::TimesCalledError)
86
+ proc {@subject.foobar(1, 2)}.should raise_error(Errors::ScenarioNotFoundError)
87
87
  end
88
88
  end
89
89
 
@@ -65,7 +65,7 @@ describe Double, " method dispatching where there are scenarios" do
65
65
  scenario_2.with(3)
66
66
 
67
67
  proc {@object.foobar(:no_matching_args)}.should raise_error(
68
- ScenarioNotFoundError,
68
+ Errors::ScenarioNotFoundError,
69
69
  "No scenario for arguments [:no_matching_args]"
70
70
  )
71
71
  end
@@ -103,7 +103,7 @@ describe Double, " method dispatching where there are scenarios with duplicate E
103
103
  @object.foobar(:exact_match).should == :return_2
104
104
  end
105
105
 
106
- it "raises TimesCalledExpectationError when all of the scenarios Times Called expectation is satisfied" do
106
+ it "raises TimesCalledError when all of the scenarios Times Called expectation is satisfied" do
107
107
  scenario1_with_exact_match = @space.create_scenario(@double)
108
108
  scenario1_with_exact_match.with(:exact_match).returns {:return_1}.once
109
109
 
@@ -114,7 +114,7 @@ describe Double, " method dispatching where there are scenarios with duplicate E
114
114
  @object.foobar(:exact_match)
115
115
  proc do
116
116
  @object.foobar(:exact_match)
117
- end.should raise_error(Expectations::TimesCalledExpectationError)
117
+ end.should raise_error(Errors::TimesCalledError)
118
118
  end
119
119
  end
120
120
 
@@ -150,7 +150,7 @@ describe Double, " method dispatching where there are scenarios with duplicate W
150
150
  @object.foobar(:anything).should == :return_2
151
151
  end
152
152
 
153
- it "raises TimesCalledExpectationError when all of the scenarios Times Called expectation is satisfied" do
153
+ it "raises TimesCalledError when all of the scenarios Times Called expectation is satisfied" do
154
154
  scenario_1 = @space.create_scenario(@double)
155
155
  scenario_1.with_any_args.returns {:return_1}.once
156
156
 
@@ -161,7 +161,7 @@ describe Double, " method dispatching where there are scenarios with duplicate W
161
161
  @object.foobar(:anything)
162
162
  proc do
163
163
  @object.foobar(:anything)
164
- end.should raise_error(Expectations::TimesCalledExpectationError)
164
+ end.should raise_error(Errors::TimesCalledError)
165
165
  end
166
166
  end
167
167
  end
@@ -16,7 +16,7 @@ describe Double, "#verify" do
16
16
  @double.register_scenario scenario
17
17
 
18
18
  scenario.with(1).once.returns {nil}
19
- proc {@double.verify}.should raise_error(Expectations::TimesCalledExpectationError)
19
+ proc {@double.verify}.should raise_error(Errors::TimesCalledError)
20
20
  @object.foobar(1)
21
21
  proc {@double.verify}.should_not raise_error
22
22
  end
@@ -0,0 +1,47 @@
1
+ dir = File.dirname(__FILE__)
2
+ require "#{dir}/../../example_helper"
3
+
4
+ module RR
5
+ module Errors
6
+ describe RRError, "#backtrace" do
7
+ before do
8
+ @original_trim_backtrace = RR::Space.trim_backtrace
9
+ end
10
+ after do
11
+ RR::Space.trim_backtrace = @original_trim_backtrace
12
+ end
13
+
14
+ it "does not include the rr library files when trim_backtrace is true" do
15
+ RR::Space.trim_backtrace = true
16
+
17
+ error = nil
18
+ begin
19
+ obj = Object.new
20
+ mock(obj).foobar
21
+ RR::Space.verify_double(obj, :foobar)
22
+ rescue RRError=> e
23
+ error = e
24
+ end
25
+ backtrace = error.backtrace.join("\n")
26
+
27
+ backtrace.should_not include("lib/rr")
28
+ end
29
+
30
+ it "includes the rr library files when trim_backtrace is false" do
31
+ RR::Space.trim_backtrace = false
32
+
33
+ error = nil
34
+ begin
35
+ obj = Object.new
36
+ mock(obj).foobar
37
+ RR::Space.verify_double(obj, :foobar)
38
+ rescue RRError=> e
39
+ error = e
40
+ end
41
+ backtrace = error.backtrace.join("\n")
42
+
43
+ backtrace.should include("lib/rr")
44
+ end
45
+ end
46
+ end
47
+ end
@@ -12,8 +12,8 @@ module Expectations
12
12
  @expectation.should == AnyArgumentExpectation.new
13
13
  end
14
14
 
15
- it "returns false when comparing with ArgumentEqualityExpectation" do
16
- @expectation.should_not == ArgumentEqualityExpectation.new(1)
15
+ it "returns false when comparing with ArgumentEqualityError" do
16
+ @expectation.should_not == ArgumentEqualityError.new(1)
17
17
  end
18
18
  end
19
19
 
@@ -3,9 +3,9 @@ require "#{dir}/../../example_helper"
3
3
 
4
4
  module RR
5
5
  module Expectations
6
- describe ArgumentEqualityExpectation, "#exact_match? with anything argument" do
6
+ describe ArgumentEqualityError, "#exact_match? with anything argument" do
7
7
  before do
8
- @expectation = ArgumentEqualityExpectation.new(anything)
8
+ @expectation = ArgumentEqualityError.new(anything)
9
9
  end
10
10
 
11
11
  it "returns true when passed in an Anything module" do
@@ -21,9 +21,9 @@ module Expectations
21
21
  end
22
22
  end
23
23
 
24
- describe ArgumentEqualityExpectation, "#wildcard_match? with is_a String argument" do
24
+ describe ArgumentEqualityError, "#wildcard_match? with is_a String argument" do
25
25
  before do
26
- @expectation = ArgumentEqualityExpectation.new(anything)
26
+ @expectation = ArgumentEqualityError.new(anything)
27
27
  end
28
28
 
29
29
  it "returns true when passed correct number of arguments" do
@@ -3,26 +3,26 @@ require "#{dir}/../../example_helper"
3
3
 
4
4
  module RR
5
5
  module Expectations
6
- describe ArgumentEqualityExpectation, "==" do
6
+ describe ArgumentEqualityError, "==" do
7
7
  before do
8
- @expectation = ArgumentEqualityExpectation.new(1, 2, 3)
8
+ @expectation = ArgumentEqualityError.new(1, 2, 3)
9
9
  end
10
10
 
11
11
  it "returns true when passed in expected_arguments are equal" do
12
- @expectation.should == ArgumentEqualityExpectation.new(1, 2, 3)
12
+ @expectation.should == ArgumentEqualityError.new(1, 2, 3)
13
13
  end
14
14
 
15
15
  it "returns false when passed in expected_arguments are not equal" do
16
- @expectation.should_not == ArgumentEqualityExpectation.new(1, 2)
17
- @expectation.should_not == ArgumentEqualityExpectation.new(1)
18
- @expectation.should_not == ArgumentEqualityExpectation.new(:something)
19
- @expectation.should_not == ArgumentEqualityExpectation.new()
16
+ @expectation.should_not == ArgumentEqualityError.new(1, 2)
17
+ @expectation.should_not == ArgumentEqualityError.new(1)
18
+ @expectation.should_not == ArgumentEqualityError.new(:something)
19
+ @expectation.should_not == ArgumentEqualityError.new()
20
20
  end
21
21
  end
22
22
 
23
- describe ArgumentEqualityExpectation, "#exact_match?" do
23
+ describe ArgumentEqualityError, "#exact_match?" do
24
24
  before do
25
- @expectation = ArgumentEqualityExpectation.new(1, 2, 3)
25
+ @expectation = ArgumentEqualityError.new(1, 2, 3)
26
26
  end
27
27
 
28
28
  it "returns true when all arguments exactly match" do
@@ -34,16 +34,16 @@ module Expectations
34
34
  end
35
35
  end
36
36
 
37
- describe ArgumentEqualityExpectation, "#wildcard_match?" do
37
+ describe ArgumentEqualityError, "#wildcard_match?" do
38
38
  it "returns false when not exact match" do
39
- @expectation = ArgumentEqualityExpectation.new(1)
39
+ @expectation = ArgumentEqualityError.new(1)
40
40
  @expectation.should_not be_wildcard_match(1, 2, 3)
41
41
  @expectation.should_not be_wildcard_match("whatever")
42
42
  @expectation.should_not be_wildcard_match("whatever", "else")
43
43
  end
44
44
 
45
45
  it "returns true when exact match" do
46
- @expectation = ArgumentEqualityExpectation.new(1, 2)
46
+ @expectation = ArgumentEqualityError.new(1, 2)
47
47
  @expectation.should be_wildcard_match(1, 2)
48
48
  @expectation.should_not be_wildcard_match(1)
49
49
  @expectation.should_not be_wildcard_match("whatever", "else")
@@ -3,9 +3,9 @@ require "#{dir}/../../example_helper"
3
3
 
4
4
  module RR
5
5
  module Expectations
6
- describe ArgumentEqualityExpectation, "#exact_match? with is_a argument" do
6
+ describe ArgumentEqualityError, "#exact_match? with is_a argument" do
7
7
  before do
8
- @expectation = ArgumentEqualityExpectation.new(boolean)
8
+ @expectation = ArgumentEqualityError.new(boolean)
9
9
  end
10
10
 
11
11
  it "returns true when passed in an IsA module" do
@@ -22,9 +22,9 @@ module Expectations
22
22
  end
23
23
  end
24
24
 
25
- describe ArgumentEqualityExpectation, "#wildcard_match? with is_a Boolean argument" do
25
+ describe ArgumentEqualityError, "#wildcard_match? with is_a Boolean argument" do
26
26
  before do
27
- @expectation = ArgumentEqualityExpectation.new(boolean)
27
+ @expectation = ArgumentEqualityError.new(boolean)
28
28
  end
29
29
 
30
30
  it "returns true when passed a Boolean" do
@@ -3,9 +3,9 @@ require "#{dir}/../../example_helper"
3
3
 
4
4
  module RR
5
5
  module Expectations
6
- describe ArgumentEqualityExpectation, "#exact_match? with duck_type argument" do
6
+ describe ArgumentEqualityError, "#exact_match? with duck_type argument" do
7
7
  before do
8
- @expectation = ArgumentEqualityExpectation.new(duck_type(:to_s))
8
+ @expectation = ArgumentEqualityError.new(duck_type(:to_s))
9
9
  end
10
10
 
11
11
  it "returns true when passed in an DuckType matcher with the same argument list" do
@@ -26,7 +26,7 @@ module Expectations
26
26
  end
27
27
  end
28
28
 
29
- describe ArgumentEqualityExpectation, "#wildcard_match? with DuckType argument" do
29
+ describe ArgumentEqualityError, "#wildcard_match? with DuckType argument" do
30
30
  before do
31
31
  @matching_object = Object.new
32
32
  def @matching_object.quack
@@ -40,7 +40,7 @@ module Expectations
40
40
 
41
41
  @not_match_object = Object.new
42
42
 
43
- @expectation = ArgumentEqualityExpectation.new(duck_type(:quack, :waddle))
43
+ @expectation = ArgumentEqualityError.new(duck_type(:quack, :waddle))
44
44
  end
45
45
 
46
46
  it "returns true when object matches all required methods" do
@@ -3,9 +3,9 @@ require "#{dir}/../../example_helper"
3
3
 
4
4
  module RR
5
5
  module Expectations
6
- describe ArgumentEqualityExpectation, "#exact_match? with is_a argument" do
6
+ describe ArgumentEqualityError, "#exact_match? with is_a argument" do
7
7
  before do
8
- @expectation = ArgumentEqualityExpectation.new(is_a(String))
8
+ @expectation = ArgumentEqualityError.new(is_a(String))
9
9
  end
10
10
 
11
11
  it "returns true when passed in an IsA module" do
@@ -25,9 +25,9 @@ module Expectations
25
25
  end
26
26
  end
27
27
 
28
- describe ArgumentEqualityExpectation, "#wildcard_match? with is_a String argument" do
28
+ describe ArgumentEqualityError, "#wildcard_match? with is_a String argument" do
29
29
  before do
30
- @expectation = ArgumentEqualityExpectation.new(is_a(String))
30
+ @expectation = ArgumentEqualityError.new(is_a(String))
31
31
  end
32
32
 
33
33
  it "returns true when passed a String" do
@@ -3,9 +3,9 @@ require "#{dir}/../../example_helper"
3
3
 
4
4
  module RR
5
5
  module Expectations
6
- describe ArgumentEqualityExpectation, "#exact_match? with is_a argument" do
6
+ describe ArgumentEqualityError, "#exact_match? with is_a argument" do
7
7
  before do
8
- @expectation = ArgumentEqualityExpectation.new(numeric)
8
+ @expectation = ArgumentEqualityError.new(numeric)
9
9
  end
10
10
 
11
11
  it "returns true when passed in an IsA module" do
@@ -21,9 +21,9 @@ module Expectations
21
21
  end
22
22
  end
23
23
 
24
- describe ArgumentEqualityExpectation, "#wildcard_match? with is_a Numeric argument" do
24
+ describe ArgumentEqualityError, "#wildcard_match? with is_a Numeric argument" do
25
25
  before do
26
- @expectation = ArgumentEqualityExpectation.new(numeric)
26
+ @expectation = ArgumentEqualityError.new(numeric)
27
27
  end
28
28
 
29
29
  it "returns true when passed a Numeric" do
@@ -3,9 +3,9 @@ require "#{dir}/../../example_helper"
3
3
 
4
4
  module RR
5
5
  module Expectations
6
- describe ArgumentEqualityExpectation, "#exact_match? with range argument" do
6
+ describe ArgumentEqualityError, "#exact_match? with range argument" do
7
7
  before do
8
- @expectation = ArgumentEqualityExpectation.new(2..5)
8
+ @expectation = ArgumentEqualityError.new(2..5)
9
9
  end
10
10
 
11
11
  it "returns true when passed in an Range matcher with the same argument list" do
@@ -26,9 +26,9 @@ module Expectations
26
26
  end
27
27
  end
28
28
 
29
- describe ArgumentEqualityExpectation, "#wildcard_match? with Range argument" do
29
+ describe ArgumentEqualityError, "#wildcard_match? with Range argument" do
30
30
  before do
31
- @expectation = ArgumentEqualityExpectation.new(2..6)
31
+ @expectation = ArgumentEqualityError.new(2..6)
32
32
  end
33
33
 
34
34
  it "returns true when string matches the range" do
@@ -3,9 +3,9 @@ require "#{dir}/../../example_helper"
3
3
 
4
4
  module RR
5
5
  module Expectations
6
- describe ArgumentEqualityExpectation, "#exact_match? with regexp argument" do
6
+ describe ArgumentEqualityError, "#exact_match? with regexp argument" do
7
7
  before do
8
- @expectation = ArgumentEqualityExpectation.new(/abc/)
8
+ @expectation = ArgumentEqualityError.new(/abc/)
9
9
  end
10
10
 
11
11
  it "returns true when passed in an Regexp matcher with the same argument list" do
@@ -26,7 +26,7 @@ module Expectations
26
26
  end
27
27
  end
28
28
 
29
- describe ArgumentEqualityExpectation, "#wildcard_match? with Regexp argument" do
29
+ describe ArgumentEqualityError, "#wildcard_match? with Regexp argument" do
30
30
  before do
31
31
  @matching_object = Object.new
32
32
  def @matching_object.quack
@@ -40,7 +40,7 @@ module Expectations
40
40
 
41
41
  @not_match_object = Object.new
42
42
 
43
- @expectation = ArgumentEqualityExpectation.new(/abc/)
43
+ @expectation = ArgumentEqualityError.new(/abc/)
44
44
  end
45
45
 
46
46
  it "returns true when string matches the regexp" do
@@ -14,7 +14,7 @@ describe TimesCalledExpectation, :shared => true do
14
14
  end
15
15
 
16
16
  def raises_expectation_error(&block)
17
- proc {block.call}.should raise_error(TimesCalledExpectationError)
17
+ proc {block.call}.should raise_error(Errors::TimesCalledError)
18
18
  end
19
19
  end
20
20
 
@@ -76,7 +76,7 @@ describe TimesCalledExpectation, "#verify! when passed an Integer (2)" do
76
76
 
77
77
  it "fails after verify_input called 1 time" do
78
78
  @expectation.verify_input
79
- proc {@expectation.verify!}.should raise_error(TimesCalledExpectationError)
79
+ proc {@expectation.verify!}.should raise_error(Errors::TimesCalledError)
80
80
  end
81
81
 
82
82
  it "can't be called when verify_input is called 3 times" do
@@ -84,7 +84,7 @@ describe TimesCalledExpectation, "#verify! when passed an Integer (2)" do
84
84
  @expectation.verify_input
85
85
  proc do
86
86
  @expectation.verify_input
87
- end.should raise_error(TimesCalledExpectationError)
87
+ end.should raise_error(Errors::TimesCalledError)
88
88
  end
89
89
  end
90
90
 
@@ -111,7 +111,7 @@ describe TimesCalledExpectation, "#verify! when passed a Range (1..2)" do
111
111
  @expectation.verify_input
112
112
  proc do
113
113
  @expectation.verify_input
114
- end.should raise_error(TimesCalledExpectationError)
114
+ end.should raise_error(Errors::TimesCalledError)
115
115
  end
116
116
  end
117
117
 
@@ -130,14 +130,14 @@ describe TimesCalledExpectation, "#verify! when passed a block (== 2 times)" do
130
130
 
131
131
  it "fails after verify_input called 1 time" do
132
132
  @expectation.verify_input
133
- proc {@expectation.verify!}.should raise_error(TimesCalledExpectationError)
133
+ proc {@expectation.verify!}.should raise_error(Errors::TimesCalledError)
134
134
  end
135
135
 
136
136
  it "fails after verify_input called 3 times" do
137
137
  @expectation.verify_input
138
138
  @expectation.verify_input
139
139
  @expectation.verify_input
140
- proc {@expectation.verify!}.should raise_error(TimesCalledExpectationError)
140
+ proc {@expectation.verify!}.should raise_error(Errors::TimesCalledError)
141
141
  end
142
142
  end
143
143
 
@@ -26,7 +26,7 @@ module Extensions
26
26
 
27
27
  scenario = creator.foobar(1, 2) {:baz}
28
28
  scenario.times_called_expectation.times.should == 1
29
- scenario.argument_expectation.class.should == RR::Expectations::ArgumentEqualityExpectation
29
+ scenario.argument_expectation.class.should == RR::Expectations::ArgumentEqualityError
30
30
  scenario.argument_expectation.expected_arguments.should == [1, 2]
31
31
 
32
32
  @subject.foobar(1, 2).should == :baz
@@ -56,7 +56,7 @@ module Extensions
56
56
 
57
57
  scenario = creator.foobar(1, 2) {:baz}
58
58
  scenario.times_called_expectation.should == nil
59
- scenario.argument_expectation.class.should == RR::Expectations::ArgumentEqualityExpectation
59
+ scenario.argument_expectation.class.should == RR::Expectations::ArgumentEqualityError
60
60
  @subject.foobar(1, 2).should == :baz
61
61
  end
62
62
  end
@@ -84,7 +84,7 @@ module Extensions
84
84
 
85
85
  scenario = creator.foobar(1, 2)
86
86
  scenario.times_called_expectation.times.should == 1
87
- scenario.argument_expectation.class.should == RR::Expectations::ArgumentEqualityExpectation
87
+ scenario.argument_expectation.class.should == RR::Expectations::ArgumentEqualityError
88
88
  scenario.argument_expectation.expected_arguments.should == [1, 2]
89
89
 
90
90
  @subject.foobar(1, 2).should == :original_value
@@ -122,7 +122,7 @@ module Extensions
122
122
 
123
123
  scenario = creator.foobar(1, 2)
124
124
  scenario.times_called_expectation.times.should == 0
125
- scenario.argument_expectation.class.should == RR::Expectations::ArgumentEqualityExpectation
125
+ scenario.argument_expectation.class.should == RR::Expectations::ArgumentEqualityError
126
126
  scenario.argument_expectation.expected_arguments.should == [1, 2]
127
127
  end
128
128
  end
@@ -58,7 +58,7 @@ describe MockCreator, "#method_missing" do
58
58
 
59
59
  @subject.foobar(1, 2).should == :baz
60
60
  @subject.foobar(1, 2).should == :baz
61
- proc {@subject.foobar(1, 2)}.should raise_error(Expectations::TimesCalledExpectationError)
61
+ proc {@subject.foobar(1, 2)}.should raise_error(Errors::TimesCalledError)
62
62
  end
63
63
  end
64
64
 
@@ -76,7 +76,7 @@ describe ProbeCreator, "#method_missing" do
76
76
  @creator.foobar(1, 2).twice
77
77
  @subject.foobar(1, 2).should == :baz
78
78
  @subject.foobar(1, 2).should == :baz
79
- proc {@subject.foobar(1, 2)}.should raise_error(Expectations::TimesCalledExpectationError)
79
+ proc {@subject.foobar(1, 2)}.should raise_error(Errors::TimesCalledError)
80
80
  end
81
81
  end
82
82
 
@@ -38,7 +38,7 @@ module Adapters
38
38
 
39
39
  proc do
40
40
  @fixture.verify_mocks_for_rspec
41
- end.should raise_error(::RR::Expectations::TimesCalledExpectationError)
41
+ end.should raise_error(::RR::Errors::TimesCalledError)
42
42
  RR::Space.instance.doubles.should be_empty
43
43
  end
44
44
  end
@@ -0,0 +1,25 @@
1
+ dir = File.dirname(__FILE__)
2
+ require "#{dir}/../../example_helper"
3
+
4
+ describe RR, " backtrace tweaking" do
5
+ it "hides rr library from the backtrace by default" do
6
+ output = StringIO.new("")
7
+ backtrace_tweaker = ::Spec::Runner::QuietBacktraceTweaker.new
8
+ formatter = ::Spec::Runner::Formatter::BaseTextFormatter.new(output)
9
+ reporter = ::Spec::Runner::Reporter.new([formatter], backtrace_tweaker)
10
+
11
+ behaviour = ::Spec::DSL::Behaviour.new("example") {}
12
+ subject = @subject
13
+ behaviour.it("hides RR framework in backtrace") do
14
+ mock(subject).foobar()
15
+ RR::Space::instance.verify_double(subject, :foobar)
16
+ end
17
+
18
+ reporter.add_behaviour(behaviour)
19
+
20
+ behaviour.run(reporter)
21
+ reporter.dump
22
+
23
+ output.string.should_not include("lib/rr")
24
+ end
25
+ end
@@ -15,7 +15,7 @@ end
15
15
  describe Scenario, "#with" do
16
16
  it_should_behave_like "RR::Scenario"
17
17
 
18
- it "sets an ArgumentEqualityExpectation" do
18
+ it "sets an ArgumentEqualityError" do
19
19
  @scenario.with(1).should === @scenario
20
20
  @scenario.should be_exact_match(1)
21
21
  @scenario.should_not be_exact_match(2)
@@ -59,8 +59,8 @@ describe Scenario, "#with_no_args" do
59
59
  @scenario.with_no_args.should === @scenario
60
60
  end
61
61
 
62
- it "sets an ArgumentEqualityExpectation with no arguments" do
63
- @scenario.argument_expectation.should == Expectations::ArgumentEqualityExpectation.new()
62
+ it "sets an ArgumentEqualityError with no arguments" do
63
+ @scenario.argument_expectation.should == Expectations::ArgumentEqualityError.new()
64
64
  end
65
65
 
66
66
  it "sets return value when block passed in" do
@@ -77,12 +77,12 @@ describe Scenario, "#never" do
77
77
 
78
78
  it "sets up a Times Called Expectation with 0" do
79
79
  @scenario.never
80
- proc {@scenario.call}.should raise_error(Expectations::TimesCalledExpectationError)
80
+ proc {@scenario.call}.should raise_error(Errors::TimesCalledError)
81
81
  end
82
82
 
83
83
  it "sets return value when block passed in" do
84
84
  @scenario.with_any_args.never
85
- proc {@scenario.call}.should raise_error(Expectations::TimesCalledExpectationError)
85
+ proc {@scenario.call}.should raise_error(Errors::TimesCalledError)
86
86
  end
87
87
  end
88
88
 
@@ -92,7 +92,7 @@ describe Scenario, "#once" do
92
92
  it "sets up a Times Called Expectation with 1" do
93
93
  @scenario.once.should === @scenario
94
94
  @scenario.call
95
- proc {@scenario.call}.should raise_error(Expectations::TimesCalledExpectationError)
95
+ proc {@scenario.call}.should raise_error(Errors::TimesCalledError)
96
96
  end
97
97
 
98
98
  it "sets return value when block passed in" do
@@ -108,7 +108,7 @@ describe Scenario, "#twice" do
108
108
  @scenario.twice.should === @scenario
109
109
  @scenario.call
110
110
  @scenario.call
111
- proc {@scenario.call}.should raise_error(Expectations::TimesCalledExpectationError)
111
+ proc {@scenario.call}.should raise_error(Errors::TimesCalledError)
112
112
  end
113
113
 
114
114
  it "sets return value when block passed in" do
@@ -125,7 +125,7 @@ describe Scenario, "#times" do
125
125
  @scenario.call
126
126
  @scenario.call
127
127
  @scenario.call
128
- proc {@scenario.call}.should raise_error(Expectations::TimesCalledExpectationError)
128
+ proc {@scenario.call}.should raise_error(Errors::TimesCalledError)
129
129
  end
130
130
 
131
131
  it "sets return value when block passed in" do
@@ -219,7 +219,7 @@ describe Scenario, "#call implemented by a proc" do
219
219
 
220
220
  @scenario.call(:foobar)
221
221
  @scenario.call(:foobar)
222
- proc {@scenario.call(:foobar)}.should raise_error(Expectations::TimesCalledExpectationError)
222
+ proc {@scenario.call(:foobar)}.should raise_error(Errors::TimesCalledError)
223
223
  end
224
224
 
225
225
  it "raises ScenarioOrderError when ordered and called out of order" do
@@ -231,7 +231,7 @@ describe Scenario, "#call implemented by a proc" do
231
231
 
232
232
  proc do
233
233
  @object.foobar(2)
234
- end.should raise_error(::RR::ScenarioOrderError)
234
+ end.should raise_error(Errors::ScenarioOrderError)
235
235
  end
236
236
 
237
237
  it "dispatches to Space#verify_ordered_scenario when ordered" do
@@ -380,9 +380,9 @@ describe Scenario, "#verify" do
380
380
  it "verifies that times called expectation was met" do
381
381
  @scenario.twice.returns {:return_value}
382
382
 
383
- proc {@scenario.verify}.should raise_error(Expectations::TimesCalledExpectationError)
383
+ proc {@scenario.verify}.should raise_error(Errors::TimesCalledError)
384
384
  @scenario.call
385
- proc {@scenario.verify}.should raise_error(Expectations::TimesCalledExpectationError)
385
+ proc {@scenario.verify}.should raise_error(Errors::TimesCalledError)
386
386
  @scenario.call
387
387
 
388
388
  proc {@scenario.verify}.should_not raise_error
@@ -14,7 +14,7 @@ describe Space, "#create_mock_creator" do
14
14
  creator = @space.create_mock_creator(@object)
15
15
  creator.foobar(1) {:baz}
16
16
  @object.foobar(1).should == :baz
17
- proc {@object.foobar(1)}.should raise_error(Expectations::TimesCalledExpectationError)
17
+ proc {@object.foobar(1)}.should raise_error(Errors::TimesCalledError)
18
18
  end
19
19
 
20
20
  it "uses block definition when passed a block" do
@@ -22,7 +22,7 @@ describe Space, "#create_mock_creator" do
22
22
  c.foobar(1) {:baz}
23
23
  end
24
24
  @object.foobar(1).should == :baz
25
- proc {@object.foobar(1)}.should raise_error(Expectations::TimesCalledExpectationError)
25
+ proc {@object.foobar(1)}.should raise_error(Errors::TimesCalledError)
26
26
  end
27
27
  end
28
28
 
@@ -70,7 +70,7 @@ describe Space, "#create_probe_creator" do
70
70
  creator = @space.create_probe_creator(@object)
71
71
  creator.foobar(1)
72
72
  @object.foobar(1).should == :original_foobar
73
- proc {@object.foobar(1)}.should raise_error(Expectations::TimesCalledExpectationError)
73
+ proc {@object.foobar(1)}.should raise_error(Errors::TimesCalledError)
74
74
  end
75
75
 
76
76
  it "uses block definition when passed a block" do
@@ -78,7 +78,7 @@ describe Space, "#create_probe_creator" do
78
78
  c.foobar(1)
79
79
  end
80
80
  @object.foobar(1).should == :original_foobar
81
- proc {@object.foobar(1)}.should raise_error(Expectations::TimesCalledExpectationError)
81
+ proc {@object.foobar(1)}.should raise_error(Errors::TimesCalledError)
82
82
  end
83
83
  end
84
84
 
@@ -93,14 +93,14 @@ describe Space, "#create_do_not_allow_creator" do
93
93
  it "creates a MockCreator" do
94
94
  creator = @space.create_do_not_allow_creator(@object)
95
95
  creator.foobar(1)
96
- proc {@object.foobar(1)}.should raise_error(Expectations::TimesCalledExpectationError)
96
+ proc {@object.foobar(1)}.should raise_error(Errors::TimesCalledError)
97
97
  end
98
98
 
99
99
  it "uses block definition when passed a block" do
100
100
  creator = @space.create_do_not_allow_creator(@object) do |c|
101
101
  c.foobar(1)
102
102
  end
103
- proc {@object.foobar(1)}.should raise_error(Expectations::TimesCalledExpectationError)
103
+ proc {@object.foobar(1)}.should raise_error(Errors::TimesCalledError)
104
104
  end
105
105
  end
106
106
 
@@ -140,7 +140,7 @@ describe Space, "#verify_ordered_scenario where the passed in scenario is not at
140
140
 
141
141
  proc do
142
142
  @space.verify_ordered_scenario(second_scenario)
143
- end.should raise_error(RR::ScenarioOrderError)
143
+ end.should raise_error(Errors::ScenarioOrderError)
144
144
  end
145
145
  end
146
146
  end
@@ -0,0 +1,32 @@
1
+ dir = File.dirname(__FILE__)
2
+ require "#{dir}/test_helper"
3
+
4
+ class TestUnitBacktraceTest < Test::Unit::TestCase
5
+ def setup
6
+ super
7
+ @subject = Object.new
8
+ end
9
+
10
+ def teardown
11
+ super
12
+ end
13
+
14
+ def test_backtrace_tweaking
15
+ old_result = @_result
16
+ result = Test::Unit::TestResult.new
17
+
18
+ error_display = nil
19
+ result.add_listener(Test::Unit::TestResult::FAULT) do |f|
20
+ error_display = f.long_display
21
+ end
22
+ test_case = self.class.new(:backtrace_tweaking)
23
+ test_case.run(result) {}
24
+
25
+ assert !error_display.include?("lib/rr")
26
+ end
27
+
28
+ def backtrace_tweaking
29
+ mock(@subject).foobar
30
+ RR::Space::instance.verify_double(@subject, :foobar)
31
+ end
32
+ end
@@ -32,7 +32,7 @@ class TestUnitIntegrationTest < Test::Unit::TestCase
32
32
 
33
33
  def test_times_called_verification
34
34
  mock(@subject).foobar(1, 2) {:baz}
35
- assert_raise RR::Expectations::TimesCalledExpectationError do
35
+ assert_raise RR::Errors::TimesCalledError do
36
36
  teardown
37
37
  end
38
38
  end
@@ -1,5 +1,5 @@
1
- require "spec/mocks"
2
- require "rr"
1
+ patterns = ::Spec::Runner::QuietBacktraceTweaker::IGNORE_PATTERNS
2
+ patterns.push(RR::Errors::BACKTRACE_IDENTIFIER)
3
3
 
4
4
  module RR
5
5
  module Adapters
@@ -1,5 +1,4 @@
1
- require "spec/mocks"
2
- require "rr"
1
+ RR::Space.trim_backtrace = true
3
2
 
4
3
  module RR
5
4
  module Adapters
data/lib/rr/double.rb CHANGED
@@ -77,7 +77,7 @@ module RR
77
77
  end
78
78
  end
79
79
  matching_scenarios.first.call(*args) unless matching_scenarios.empty?
80
- raise ScenarioNotFoundError, "No scenario for arguments #{args.inspect}"
80
+ raise Errors::ScenarioNotFoundError, "No scenario for arguments #{args.inspect}"
81
81
  end
82
82
 
83
83
  def placeholder_name
@@ -0,0 +1,6 @@
1
+ module RR
2
+ module Errors
3
+ class ArgumentEqualityError < RRError
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,19 @@
1
+ module RR
2
+ module Errors
3
+ BACKTRACE_IDENTIFIER = /lib\/rr/
4
+
5
+ class RRError < RuntimeError
6
+ def backtrace
7
+ original_backtrace = super
8
+ return original_backtrace unless RR::Space.trim_backtrace
9
+
10
+ return original_backtrace unless original_backtrace.respond_to?(:each)
11
+ new_backtrace = []
12
+ original_backtrace.each do |line|
13
+ new_backtrace << line unless line =~ BACKTRACE_IDENTIFIER
14
+ end
15
+ new_backtrace
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,6 @@
1
+ module RR
2
+ module Errors
3
+ class ScenarioNotFoundError < RRError
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ module RR
2
+ module Errors
3
+ class ScenarioOrderError < RRError
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ module RR
2
+ module Errors
3
+ class TimesCalledError < RRError
4
+ end
5
+ end
6
+ end
@@ -1,9 +1,6 @@
1
1
  module RR
2
2
  module Expectations
3
- class ArgumentEqualityExpectationError < RuntimeError
4
- end
5
-
6
- class ArgumentEqualityExpectation
3
+ class ArgumentEqualityError
7
4
  attr_reader :expected_arguments
8
5
 
9
6
  def initialize(*expected_arguments)
@@ -1,8 +1,5 @@
1
1
  module RR
2
2
  module Expectations
3
- class TimesCalledExpectationError < RuntimeError
4
- end
5
-
6
3
  class TimesCalledExpectation
7
4
  attr_reader :times, :times_called
8
5
 
@@ -27,12 +24,12 @@ module RR
27
24
  end
28
25
 
29
26
  def verify!
30
- raise TimesCalledExpectationError unless verify
27
+ raise Errors::TimesCalledError unless verify
31
28
  end
32
29
 
33
30
  protected
34
31
  def verify_input_error
35
- raise TimesCalledExpectationError, "Called #{@times_called.inspect} times. Expected #{@times.inspect}"
32
+ raise Errors::TimesCalledError, "Called #{@times_called.inspect} times. Expected #{@times.inspect}"
36
33
  end
37
34
  end
38
35
  end
@@ -30,7 +30,7 @@ module Extensions
30
30
  end
31
31
  alias_method :dont_allow, :do_not_allow
32
32
 
33
- # Sets up an Anything wildcard ArgumentEqualityExpectation
33
+ # Sets up an Anything wildcard ArgumentEqualityError
34
34
  # that succeeds when passed any argument.
35
35
  # mock(object).method_name(anything) {return_value}
36
36
  # object.method_name("an arbitrary value") # passes
@@ -38,7 +38,7 @@ module Extensions
38
38
  RR::Expectations::WildcardMatchers::Anything.new
39
39
  end
40
40
 
41
- # Sets up an IsA wildcard ArgumentEqualityExpectation
41
+ # Sets up an IsA wildcard ArgumentEqualityError
42
42
  # that succeeds when passed an argument of a certain type.
43
43
  # mock(object).method_name(is_a(String)) {return_value}
44
44
  # object.method_name("A String") # passes
@@ -46,7 +46,7 @@ module Extensions
46
46
  RR::Expectations::WildcardMatchers::IsA.new(klass)
47
47
  end
48
48
 
49
- # Sets up an Numeric wildcard ArgumentEqualityExpectation
49
+ # Sets up an Numeric wildcard ArgumentEqualityError
50
50
  # that succeeds when passed an argument that is ::Numeric.
51
51
  # mock(object).method_name(numeric) {return_value}
52
52
  # object.method_name(99) # passes
@@ -54,7 +54,7 @@ module Extensions
54
54
  RR::Expectations::WildcardMatchers::Numeric.new
55
55
  end
56
56
 
57
- # Sets up an Boolean wildcard ArgumentEqualityExpectation
57
+ # Sets up an Boolean wildcard ArgumentEqualityError
58
58
  # that succeeds when passed an argument that is a ::Boolean.
59
59
  # mock(object).method_name(boolean) {return_value}
60
60
  # object.method_name(false) # passes
@@ -62,7 +62,7 @@ module Extensions
62
62
  RR::Expectations::WildcardMatchers::Boolean.new
63
63
  end
64
64
 
65
- # Sets up a DuckType wildcard ArgumentEqualityExpectation
65
+ # Sets up a DuckType wildcard ArgumentEqualityError
66
66
  # that succeeds when passed the argument implements the methods.
67
67
  # arg = Object.new
68
68
  # def arg.foo; end
data/lib/rr/scenario.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module RR
2
2
  # RR::Scenario is the use case for a method call.
3
- # It has the ArgumentEqualityExpectation, TimesCalledExpectation,
3
+ # It has the ArgumentEqualityError, TimesCalledExpectation,
4
4
  # and the implementation.
5
5
  class Scenario
6
6
  attr_reader :times_called, :argument_expectation, :times_called_expectation
@@ -13,19 +13,19 @@ module RR
13
13
  @times_called = 0
14
14
  end
15
15
 
16
- # Scenario#with creates an ArgumentEqualityExpectation for the
16
+ # Scenario#with creates an ArgumentEqualityError for the
17
17
  # Scenario. it takes a list of expected arguments.
18
18
  #
19
19
  # Passing in a block sets the return value.
20
20
  #
21
21
  # mock(subject).method_name.with(1, 2) {:return_value}
22
22
  def with(*args, &returns)
23
- @argument_expectation = Expectations::ArgumentEqualityExpectation.new(*args)
23
+ @argument_expectation = Expectations::ArgumentEqualityError.new(*args)
24
24
  returns(&returns) if returns
25
25
  self
26
26
  end
27
27
 
28
- # Scenario#with_any_args creates an AnyArgumentEqualityExpectation
28
+ # Scenario#with_any_args creates an AnyArgumentEqualityError
29
29
  # for the Scenario.
30
30
  #
31
31
  # Passing in a block sets the return value.
@@ -37,14 +37,14 @@ module RR
37
37
  self
38
38
  end
39
39
 
40
- # Scenario#with_no_args creates an ArgumentEqualityExpectation with
40
+ # Scenario#with_no_args creates an ArgumentEqualityError with
41
41
  # no arguments for the Scenario.
42
42
  #
43
43
  # Passing in a block sets the return value.
44
44
  #
45
45
  # mock(subject).method_name.with_no_args {:return_value}
46
46
  def with_no_args(&returns)
47
- @argument_expectation = Expectations::ArgumentEqualityExpectation.new()
47
+ @argument_expectation = Expectations::ArgumentEqualityError.new()
48
48
  returns(&returns) if returns
49
49
  self
50
50
  end
@@ -136,7 +136,7 @@ module RR
136
136
  # Scenario#call calls the Scenario's implementation. The return
137
137
  # value of the implementation is returned.
138
138
  #
139
- # A TimesCalledExpectationError is raised when the times called
139
+ # A TimesCalledError is raised when the times called
140
140
  # exceeds the expected TimesCalledExpectation.
141
141
  def call(*args, &block)
142
142
  @times_called_expectation.verify_input if @times_called_expectation
@@ -152,14 +152,14 @@ module RR
152
152
  end
153
153
 
154
154
  # Scenario#exact_match? returns true when the passed in arguments
155
- # exactly match the ArgumentEqualityExpectation arguments.
155
+ # exactly match the ArgumentEqualityError arguments.
156
156
  def exact_match?(*arguments)
157
157
  return false unless @argument_expectation
158
158
  @argument_expectation.exact_match?(*arguments)
159
159
  end
160
160
 
161
161
  # Scenario#wildcard_match? returns true when the passed in arguments
162
- # wildcard match the ArgumentEqualityExpectation arguments.
162
+ # wildcard match the ArgumentEqualityError arguments.
163
163
  def wildcard_match?(*arguments)
164
164
  return false unless @argument_expectation
165
165
  @argument_expectation.wildcard_match?(*arguments)
@@ -173,7 +173,7 @@ module RR
173
173
  end
174
174
 
175
175
  # Scenario#verify verifies the the TimesCalledExpectation
176
- # is satisfied for this scenario. A TimesCalledExpectationError
176
+ # is satisfied for this scenario. A TimesCalledError
177
177
  # is raised if the TimesCalledExpectation is not met.
178
178
  def verify
179
179
  return true unless @times_called_expectation
data/lib/rr/space.rb CHANGED
@@ -16,9 +16,11 @@ module RR
16
16
  end
17
17
 
18
18
  attr_reader :doubles, :ordered_scenarios
19
+ attr_accessor :trim_backtrace
19
20
  def initialize
20
21
  @doubles = Hash.new {|hash, subject_object| hash[subject_object] = Hash.new}
21
22
  @ordered_scenarios = []
23
+ @trim_backtrace = false
22
24
  end
23
25
 
24
26
  # Creates a MockCreator.
@@ -70,7 +72,7 @@ module RR
70
72
  # Verifies that the passed in ordered Scenario is being called
71
73
  # in the correct position.
72
74
  def verify_ordered_scenario(scenario)
73
- raise ::RR::ScenarioOrderError unless @ordered_scenarios.first == scenario
75
+ raise Errors::ScenarioOrderError unless @ordered_scenarios.first == scenario
74
76
  @ordered_scenarios.shift if scenario.times_called_verified?
75
77
  scenario
76
78
  end
data/lib/rr.rb CHANGED
@@ -10,8 +10,11 @@ require "rr/do_not_allow_creator"
10
10
  require "rr/scenario"
11
11
  require "rr/space"
12
12
 
13
- require "rr/scenario_not_found_error"
14
- require "rr/scenario_order_error"
13
+ require "rr/errors/rr_error"
14
+ require "rr/errors/scenario_not_found_error"
15
+ require "rr/errors/scenario_order_error"
16
+ require "rr/errors/argument_equality_error"
17
+ require "rr/errors/times_called_error"
15
18
 
16
19
  require "rr/expectations/argument_equality_expectation"
17
20
  require "rr/expectations/any_argument_expectation"
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.3
3
3
  specification_version: 1
4
4
  name: rr
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.1.0
7
- date: 2007-07-07 00:00:00 -07:00
6
+ version: 0.1.1
7
+ date: 2007-07-08 00:00:00 -07:00
8
8
  summary: RR (Double Ruby) is a double framework that features a rich selection of double techniques and a terse syntax. http://xunitpatterns.com/Test%20Double.html
9
9
  require_paths:
10
10
  - lib
@@ -34,8 +34,6 @@ files:
34
34
  - README
35
35
  - lib/rr.rb
36
36
  - lib/rr/scenario.rb
37
- - lib/rr/scenario_not_found_error.rb
38
- - lib/rr/scenario_order_error.rb
39
37
  - lib/rr/stub_creator.rb
40
38
  - lib/rr/space.rb
41
39
  - lib/rr/double.rb
@@ -52,6 +50,11 @@ files:
52
50
  - lib/rr/expectations/wildcard_matchers/numeric.rb
53
51
  - lib/rr/expectations/wildcard_matchers/is_a.rb
54
52
  - lib/rr/expectations/wildcard_matchers/anything.rb
53
+ - lib/rr/errors/scenario_not_found_error.rb
54
+ - lib/rr/errors/argument_equality_error.rb
55
+ - lib/rr/errors/scenario_order_error.rb
56
+ - lib/rr/errors/rr_error.rb
57
+ - lib/rr/errors/times_called_error.rb
55
58
  - lib/rr/adapters/test_unit.rb
56
59
  - lib/rr/adapters/rspec.rb
57
60
  - lib/rr/extensions/double_methods.rb
@@ -78,6 +81,7 @@ files:
78
81
  - examples/rr/double_dispatching_example.rb
79
82
  - examples/rr/space_register_example.rb
80
83
  - examples/rr/double_verify_example.rb
84
+ - examples/rr/rspec/rspec_backtrace_tweaking_example.rb
81
85
  - examples/rr/rspec/rspec_adapter_example.rb
82
86
  - examples/rr/rspec/rspec_usage_example.rb
83
87
  - examples/rr/expectations/is_a_argument_equality_expectation_example.rb
@@ -90,6 +94,8 @@ files:
90
94
  - examples/rr/expectations/range_argument_equality_expectation_example.rb
91
95
  - examples/rr/expectations/argument_equality_expectation_example.rb
92
96
  - examples/rr/expectations/anything_argument_equality_expectation_example.rb
97
+ - examples/rr/errors/rr_error_example.rb
98
+ - examples/rr/test_unit/test_unit_backtrace_test.rb
93
99
  - examples/rr/test_unit/test_helper.rb
94
100
  - examples/rr/test_unit/test_unit_integration_test.rb
95
101
  - examples/rr/extensions/double_methods_example.rb
@@ -1,4 +0,0 @@
1
- module RR
2
- class ScenarioNotFoundError < RuntimeError
3
- end
4
- end
@@ -1,4 +0,0 @@
1
- module RR
2
- class ScenarioOrderError < RuntimeError
3
- end
4
- end