Patch #1117454: Remove code to special-case cookies without values
in LWPCookieJar. Backported to 2.4.
This commit is contained in:
parent
4ea3eade51
commit
c5574e809b
|
@ -115,13 +115,6 @@ class LWPCookieJar(FileCookieJar):
|
||||||
|
|
||||||
for data in split_header_words([line]):
|
for data in split_header_words([line]):
|
||||||
name, value = data[0]
|
name, value = data[0]
|
||||||
# name and value are an exception here, since a plain "foo"
|
|
||||||
# (with no "=", unlike "bar=foo") means a cookie with no
|
|
||||||
# name and value "foo". With all other cookie-attributes,
|
|
||||||
# the situation is reversed: "foo" means an attribute named
|
|
||||||
# "foo" with no value!
|
|
||||||
if value is None:
|
|
||||||
name, value = value, name
|
|
||||||
standard = {}
|
standard = {}
|
||||||
rest = {}
|
rest = {}
|
||||||
for k in boolean_attrs:
|
for k in boolean_attrs:
|
||||||
|
|
|
@ -73,6 +73,9 @@ class MozillaCookieJar(FileCookieJar):
|
||||||
secure = (secure == "TRUE")
|
secure = (secure == "TRUE")
|
||||||
domain_specified = (domain_specified == "TRUE")
|
domain_specified = (domain_specified == "TRUE")
|
||||||
if name == "":
|
if name == "":
|
||||||
|
# cookies.txt regards 'Set-Cookie: foo' as a cookie
|
||||||
|
# with no name, whereas cookielib regards it as a
|
||||||
|
# cookie with no value.
|
||||||
name = value
|
name = value
|
||||||
value = None
|
value = None
|
||||||
|
|
||||||
|
|
|
@ -451,11 +451,7 @@ def parse_ns_headers(ns_headers):
|
||||||
param = param.rstrip()
|
param = param.rstrip()
|
||||||
if param == "": continue
|
if param == "": continue
|
||||||
if "=" not in param:
|
if "=" not in param:
|
||||||
if param.lower() in known_attrs:
|
k, v = param, None
|
||||||
k, v = param, None
|
|
||||||
else:
|
|
||||||
# cookie with missing value
|
|
||||||
k, v = param, None
|
|
||||||
else:
|
else:
|
||||||
k, v = re.split(r"\s*=\s*", param, 1)
|
k, v = re.split(r"\s*=\s*", param, 1)
|
||||||
k = k.lstrip()
|
k = k.lstrip()
|
||||||
|
|
|
@ -231,6 +231,24 @@ def _interact(cookiejar, url, set_cookie_hdrs, hdr_name):
|
||||||
return cookie_hdr
|
return cookie_hdr
|
||||||
|
|
||||||
|
|
||||||
|
class FileCookieJarTests(TestCase):
|
||||||
|
def test_lwp_valueless_cookie(self):
|
||||||
|
# cookies with no value should be saved and loaded consistently
|
||||||
|
from cookielib import LWPCookieJar
|
||||||
|
filename = test_support.TESTFN
|
||||||
|
c = LWPCookieJar()
|
||||||
|
interact_netscape(c, "http://www.acme.com/", 'boo')
|
||||||
|
self.assertEqual(c._cookies["www.acme.com"]["/"]["boo"].value, None)
|
||||||
|
try:
|
||||||
|
c.save(filename, ignore_discard=True)
|
||||||
|
c = LWPCookieJar()
|
||||||
|
c.load(filename, ignore_discard=True)
|
||||||
|
finally:
|
||||||
|
try: os.unlink(filename)
|
||||||
|
except OSError: pass
|
||||||
|
self.assertEqual(c._cookies["www.acme.com"]["/"]["boo"].value, None)
|
||||||
|
|
||||||
|
|
||||||
class CookieTests(TestCase):
|
class CookieTests(TestCase):
|
||||||
# XXX
|
# XXX
|
||||||
# Get rid of string comparisons where not actually testing str / repr.
|
# Get rid of string comparisons where not actually testing str / repr.
|
||||||
|
@ -1636,6 +1654,7 @@ def test_main(verbose=None):
|
||||||
DateTimeTests,
|
DateTimeTests,
|
||||||
HeaderTests,
|
HeaderTests,
|
||||||
CookieTests,
|
CookieTests,
|
||||||
|
FileCookieJarTests,
|
||||||
LWPCookieTests,
|
LWPCookieTests,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -61,6 +61,9 @@ Extension Modules
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Patch #1117454: Remove code to special-case cookies without values
|
||||||
|
in LWPCookieJar.
|
||||||
|
|
||||||
- Patch #1117339: Add cookielib special name tests.
|
- Patch #1117339: Add cookielib special name tests.
|
||||||
|
|
||||||
- Patch #1112812: Make bsddb/__init__.py more friendly for modulefinder.
|
- Patch #1112812: Make bsddb/__init__.py more friendly for modulefinder.
|
||||||
|
|
Loading…
Reference in New Issue