rr 0.7.0 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES +2 -0
- data/README.rdoc +1 -1
- data/Rakefile +1 -1
- data/lib/rr/double_definitions/double_definition_creator_proxy.rb +13 -33
- data/lib/rr/errors/rr_error.rb +1 -1
- data/lib/rr/expectations/argument_equality_expectation.rb +5 -5
- data/spec/rr/rspec/rspec_backtrace_tweaking_spec.rb +4 -27
- data/spec/rr/rspec/rspec_backtrace_tweaking_spec_fixture.rb +11 -0
- metadata +3 -2
data/CHANGES
CHANGED
data/README.rdoc
CHANGED
@@ -312,10 +312,10 @@ to making it possible. We all are standing on the shoulders of giants.
|
|
312
312
|
* Dan North for syntax ideas
|
313
313
|
* Dave Astels for some BDD inspiration
|
314
314
|
* David Chelimsky for encouragement to make the RR framework, for developing the Rspec mock framework, and syntax ideas
|
315
|
+
* Daniel Sudol for identifing performance issues with RR
|
315
316
|
* Felix Morio for pairing with me
|
316
317
|
* Gerard Meszaros for his excellent book "xUnit Test Patterns"
|
317
318
|
* James Mead for developing Mocha
|
318
|
-
* Joe Ferris for patches
|
319
319
|
* Jeff Whitmire for documentation suggestions
|
320
320
|
* Jim Weirich for developing Flexmock, the first Terse ruby mock framework in Ruby
|
321
321
|
* Joe Ferris for patches
|
data/Rakefile
CHANGED
@@ -1,54 +1,34 @@
|
|
1
1
|
module RR
|
2
2
|
module DoubleDefinitions
|
3
3
|
class DoubleDefinitionCreatorProxy
|
4
|
-
|
5
|
-
|
6
|
-
class << self
|
7
|
-
def __apply_blank_slate
|
8
|
-
@apply_blank_slate = true
|
9
|
-
end
|
10
|
-
|
11
|
-
def __apply_blank_slate?
|
12
|
-
@apply_blank_slate ||= false
|
13
|
-
end
|
14
|
-
|
4
|
+
class << self
|
5
|
+
def blank_slate_methods
|
15
6
|
instance_methods.each do |m|
|
16
|
-
unless m =~ /^_/ || m.to_s == 'object_id' || m.to_s ==
|
7
|
+
unless m =~ /^_/ || m.to_s == 'object_id' || m.to_s == 'respond_to?' || m.to_s == 'method_missing'
|
17
8
|
alias_method "__blank_slated_#{m}", m
|
18
9
|
undef_method m
|
19
10
|
end
|
20
11
|
end
|
21
|
-
|
22
|
-
def instance_eval
|
23
|
-
return_value = super
|
24
|
-
class << self
|
25
|
-
alias_method "__blank_slated_instance_eval", "instance_eval"
|
26
|
-
undef_method :instance_eval
|
27
|
-
alias_method "__blank_slated_respond_to?", "respond_to?"
|
28
|
-
undef_method :respond_to?
|
29
|
-
end
|
30
|
-
return_value
|
31
|
-
end
|
32
|
-
|
33
|
-
def method_missing(method_name, *args, &block)
|
34
|
-
if __apply_blank_slate?
|
35
|
-
@creator.create(method_name, *args, &block)
|
36
|
-
else
|
37
|
-
__blank_slated_send("__blank_slated_#{method_name}", *args, &block)
|
38
|
-
end
|
39
|
-
end
|
40
12
|
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def initialize(creator, &block) #:nodoc:
|
16
|
+
@creator = creator
|
17
|
+
respond_to?(:class) ? self.class.blank_slate_methods : __blank_slated_class.blank_slate_methods
|
41
18
|
|
42
|
-
__apply_blank_slate
|
43
19
|
if block_given?
|
44
20
|
if block.arity == 1
|
45
21
|
yield(self)
|
46
22
|
else
|
47
|
-
instance_eval(&block)
|
23
|
+
respond_to?(:instance_eval) ? instance_eval(&block) : __blank_slated_instance_eval(&block)
|
48
24
|
end
|
49
25
|
end
|
50
26
|
end
|
51
27
|
|
28
|
+
def method_missing(method_name, *args, &block)
|
29
|
+
@creator.create(method_name, *args, &block)
|
30
|
+
end
|
31
|
+
|
52
32
|
def __creator__
|
53
33
|
@creator
|
54
34
|
end
|
data/lib/rr/errors/rr_error.rb
CHANGED
@@ -8,17 +8,17 @@ module RR
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def exact_match?(*arguments)
|
11
|
-
return false unless arguments.length ==
|
11
|
+
return false unless arguments.length == expected_arguments.length
|
12
12
|
arguments.each_with_index do |arg, index|
|
13
|
-
return false unless equality_match(
|
13
|
+
return false unless equality_match(expected_arguments[index], arg)
|
14
14
|
end
|
15
15
|
true
|
16
16
|
end
|
17
17
|
|
18
18
|
def wildcard_match?(*arguments)
|
19
|
-
return false unless arguments.length ==
|
19
|
+
return false unless arguments.length == expected_arguments.length
|
20
20
|
arguments.each_with_index do |arg, index|
|
21
|
-
expected_argument =
|
21
|
+
expected_argument = expected_arguments[index]
|
22
22
|
if expected_argument.respond_to?(:wildcard_match?)
|
23
23
|
return false unless expected_argument.wildcard_match?(arg)
|
24
24
|
else
|
@@ -29,7 +29,7 @@ module RR
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def ==(other)
|
32
|
-
|
32
|
+
expected_arguments == other.expected_arguments
|
33
33
|
end
|
34
34
|
|
35
35
|
protected
|
@@ -19,34 +19,11 @@ module RR
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
describe "
|
23
|
-
attr_reader :original_rspec_options, :error, :output
|
24
|
-
before do
|
25
|
-
@original_rspec_options = Spec::Runner.options
|
26
|
-
@error = StringIO.new("")
|
27
|
-
@output = StringIO.new("")
|
28
|
-
Spec::Runner.use(::Spec::Runner::Options.new(error, output))
|
29
|
-
end
|
30
|
-
|
31
|
-
after do
|
32
|
-
Spec::Runner.use(original_rspec_options)
|
33
|
-
end
|
34
|
-
|
22
|
+
describe "backtrace tweaking" do
|
35
23
|
it "hides rr library from the backtrace by default" do
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
it("hides RR framework in backtrace") do
|
41
|
-
mock(subject).foobar()
|
42
|
-
RR.verify_double(subject, :foobar)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
Spec::Runner.options.run_examples
|
47
|
-
|
48
|
-
output.string.should_not be_empty
|
49
|
-
output.string.should_not include("lib/rr")
|
24
|
+
dir = File.dirname(__FILE__)
|
25
|
+
output = `ruby #{dir}/rspec_backtrace_tweaking_spec_fixture.rb`
|
26
|
+
output.should_not include("lib/rr")
|
50
27
|
end
|
51
28
|
end
|
52
29
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require "spec"
|
3
|
+
dir = File.dirname(__FILE__)
|
4
|
+
require File.expand_path("#{dir}/../../../lib/rr")
|
5
|
+
|
6
|
+
describe "Example" do
|
7
|
+
it("hides RR framework in backtrace") do
|
8
|
+
mock(subject).foobar()
|
9
|
+
RR.verify_double(subject, :foobar)
|
10
|
+
end
|
11
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Takita
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2009-01-16 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -102,6 +102,7 @@ files:
|
|
102
102
|
- spec/rr/space/space_spec.rb
|
103
103
|
- spec/rr/rspec/rspec_backtrace_tweaking_spec.rb
|
104
104
|
- spec/rr/rspec/invocation_matcher_spec.rb
|
105
|
+
- spec/rr/rspec/rspec_backtrace_tweaking_spec_fixture.rb
|
105
106
|
- spec/rr/rspec/rspec_usage_spec.rb
|
106
107
|
- spec/rr/rspec/rspec_adapter_spec.rb
|
107
108
|
- spec/rr/test_unit/test_unit_backtrace_test.rb
|