From 9d842404e3680d6d304195435195ee98388d2b77 Mon Sep 17 00:00:00 2001 From: Akinori MUSHA Date: Tue, 12 Mar 2013 01:28:45 +0900 Subject: [PATCH] Fix <=> so that two cookies of different values are not equal. --- lib/http/cookie.rb | 3 ++- test/test_http_cookie.rb | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/http/cookie.rb b/lib/http/cookie.rb index d4b3cc7..79f830b 100644 --- a/lib/http/cookie.rb +++ b/lib/http/cookie.rb @@ -379,7 +379,8 @@ class HTTP::Cookie # Precedence: 1. longer path 2. older creation (@name <=> other.name).nonzero? || (other.path.length <=> @path.length).nonzero? || - @created_at <=> other.created_at + (@created_at <=> other.created_at).nonzero? || + @value <=> other.value end include Comparable diff --git a/test/test_http_cookie.rb b/test/test_http_cookie.rb index 1354217..42bdbf7 100644 --- a/test/test_http_cookie.rb +++ b/test/test_http_cookie.rb @@ -433,6 +433,11 @@ class TestHTTPCookie < Test::Unit::TestCase }) end + def test_equal + assert_not_equal(HTTP::Cookie.new(cookie_values), + HTTP::Cookie.new(cookie_values(:value => 'bar'))) + end + def test_new_rejects_cookies_that_do_not_contain_an_embedded_dot url = URI 'http://rubyforge.org/'