update 'merge_cookies' not to create new instance.
authordaftshady <daftonshady@gmail.com>
Tue, 5 Nov 2013 09:00:23 +0000 (18:00 +0900)
committerdaftshady <daftonshady@gmail.com>
Tue, 26 Nov 2013 06:28:59 +0000 (15:28 +0900)
requests/cookies.py
test_requests.py

index 20d24a3..8ff8b02 100644 (file)
@@ -432,13 +432,17 @@ def merge_cookies(cookiejar, cookies):
     if not isinstance(cookiejar, cookielib.CookieJar):
         raise ValueError('You can only merge into CookieJar')
     
-    merged_cookie = RequestsCookieJar()
-    merged_cookie.update(cookiejar)
-
     if isinstance(cookies, dict):
-        merged_cookie = cookiejar_from_dict(
-            cookies, cookiejar=merged_cookie, overwrite=False)
+        cookiejar = cookiejar_from_dict(
+            cookies, cookiejar=cookiejar, overwrite=False)
     elif isinstance(cookies, cookielib.CookieJar):
-        merged_cookie.update(cookies)
+        try:
+            if hasattr(cookiejar, 'update'):
+                cookiejar.update(cookies)
+            else:
+                raise CookieJarError
+        except CookieJarError:
+            for cookie_in_jar in cookies:
+                cookiejar.set_cookie(cookie_in_jar)
 
-    return merged_cookie
+    return cookiejar
index 0f076ff..539de76 100755 (executable)
@@ -186,8 +186,7 @@ class RequestsTestCase(unittest.TestCase):
         # Make sure the cookie was sent
         assert r.json()['cookies']['foo'] == 'bar'
         # Make sure the session cj is still the custom one
-        assert isinstance(s.cookies, cookielib.CookieJar)
-        assert s.cookies['foo'] == 'bar'
+        assert s.cookies is cj
     
     def test_param_cookiejar_works(self):
         cj = cookielib.CookieJar()