diff --git a/requests/cookies.py b/requests/cookies.py index 20d24a33..8ff8b027 100644 --- a/requests/cookies.py +++ b/requests/cookies.py @@ -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 diff --git a/test_requests.py b/test_requests.py index 0f076fff..539de764 100755 --- a/test_requests.py +++ b/test_requests.py @@ -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()