Patch #1117454: Remove code to special-case cookies without values

in LWPCookieJar. Backported to 2.4.
This commit is contained in:
Martin v. Löwis 2005-03-03 10:57:37 +00:00
parent 4ea3eade51
commit c5574e809b
5 changed files with 26 additions and 12 deletions

View File

@ -115,13 +115,6 @@ class LWPCookieJar(FileCookieJar):
for data in split_header_words([line]):
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 = {}
rest = {}
for k in boolean_attrs:

View File

@ -73,6 +73,9 @@ class MozillaCookieJar(FileCookieJar):
secure = (secure == "TRUE")
domain_specified = (domain_specified == "TRUE")
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
value = None

View File

@ -451,11 +451,7 @@ def parse_ns_headers(ns_headers):
param = param.rstrip()
if param == "": continue
if "=" not in param:
if param.lower() in known_attrs:
k, v = param, None
else:
# cookie with missing value
k, v = param, None
k, v = param, None
else:
k, v = re.split(r"\s*=\s*", param, 1)
k = k.lstrip()

View File

@ -231,6 +231,24 @@ def _interact(cookiejar, url, set_cookie_hdrs, hdr_name):
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):
# XXX
# Get rid of string comparisons where not actually testing str / repr.
@ -1636,6 +1654,7 @@ def test_main(verbose=None):
DateTimeTests,
HeaderTests,
CookieTests,
FileCookieJarTests,
LWPCookieTests,
)

View File

@ -61,6 +61,9 @@ Extension Modules
Library
-------
- Patch #1117454: Remove code to special-case cookies without values
in LWPCookieJar.
- Patch #1117339: Add cookielib special name tests.
- Patch #1112812: Make bsddb/__init__.py more friendly for modulefinder.