Browse files

Fix spec failing on 1.8.7.

Weirdly, it appears that on 1.8.7, Array#delete will return the object you pass to it rather than the object in the array!

O = Struct.new(:a, :b)
i1, i2 = O.new(3, 5), O.new(3, 5)
list = [i1]
deleted = list.delete(i2)

deleted.equal?(i1) # => true on 1.9.2, false on 1.8.7
deleted.equal?(i2) # => false on 1.9.2, true on 1.8.7
  • Loading branch information...
1 parent c4204cd commit 40f1f4820315a066358fd9e1dda04d3cac97a266 @myronmarston myronmarston committed Jan 29, 2012
Showing with 6 additions and 1 deletion.
  1. +6 −1 lib/webmock/http_lib_adapters/httpclient_adapter.rb
View
7 lib/webmock/http_lib_adapters/httpclient_adapter.rb
@@ -158,7 +158,7 @@ def build_request_signature(req, reuse_existing = false)
)
# reuse a previous identical signature object if we stored one for later use
- if reuse_existing && previous_signature = webmock_request_signatures.delete(signature)
+ if reuse_existing && previous_signature = previous_signature_for(signature)
return previous_signature
end
@@ -175,4 +175,9 @@ def webmock_request_signatures
@webmock_request_signatures ||= []
end
+ def previous_signature_for(signature)
+ return nil unless index = webmock_request_signatures.index(signature)
+ webmock_request_signatures.delete_at(index)
+ end
+
end

0 comments on commit 40f1f48

Please sign in to comment.