diff options
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/_LWPCookieJar.py | 8 | ||||
-rw-r--r-- | Lib/_MozillaCookieJar.py | 10 | ||||
-rw-r--r-- | Lib/cookielib.py | 3 | ||||
-rw-r--r-- | Lib/test/test_cookielib.py | 25 |
4 files changed, 36 insertions, 10 deletions
diff --git a/Lib/_LWPCookieJar.py b/Lib/_LWPCookieJar.py index 25a2528..6d5ce18 100644 --- a/Lib/_LWPCookieJar.py +++ b/Lib/_LWPCookieJar.py @@ -12,8 +12,8 @@ libwww-perl, I hope. """ import time, re, logging -from cookielib import (reraise_unmasked_exceptions, FileCookieJar, Cookie, - MISSING_FILENAME_TEXT, join_header_words, split_header_words, +from cookielib import (reraise_unmasked_exceptions, FileCookieJar, LoadError, + Cookie, MISSING_FILENAME_TEXT, join_header_words, split_header_words, iso2time, time2isoz) def lwp_cookie_str(cookie): @@ -93,7 +93,7 @@ class LWPCookieJar(FileCookieJar): magic = f.readline() if not re.search(self.magic_re, magic): msg = "%s does not seem to contain cookies" % filename - raise IOError(msg) + raise LoadError(msg) now = time.time() @@ -161,4 +161,4 @@ class LWPCookieJar(FileCookieJar): self.set_cookie(c) except: reraise_unmasked_exceptions((IOError,)) - raise IOError("invalid Set-Cookie3 format file %s" % filename) + raise LoadError("invalid Set-Cookie3 format file %s" % filename) diff --git a/Lib/_MozillaCookieJar.py b/Lib/_MozillaCookieJar.py index 88e8492..4f2f375 100644 --- a/Lib/_MozillaCookieJar.py +++ b/Lib/_MozillaCookieJar.py @@ -2,8 +2,8 @@ import re, time, logging -from cookielib import (reraise_unmasked_exceptions, FileCookieJar, Cookie, - MISSING_FILENAME_TEXT) +from cookielib import (reraise_unmasked_exceptions, FileCookieJar, LoadError, + Cookie, MISSING_FILENAME_TEXT) class MozillaCookieJar(FileCookieJar): """ @@ -50,7 +50,7 @@ class MozillaCookieJar(FileCookieJar): magic = f.readline() if not re.search(self.magic_re, magic): f.close() - raise IOError( + raise LoadError( "%s does not look like a Netscape format cookies file" % filename) @@ -106,8 +106,8 @@ class MozillaCookieJar(FileCookieJar): except: reraise_unmasked_exceptions((IOError,)) - raise IOError("invalid Netscape format file %s: %s" % - (filename, line)) + raise LoadError("invalid Netscape format file %s: %s" % + (filename, line)) def save(self, filename=None, ignore_discard=False, ignore_expires=False): if filename is None: diff --git a/Lib/cookielib.py b/Lib/cookielib.py index f774cdf..656ae39 100644 --- a/Lib/cookielib.py +++ b/Lib/cookielib.py @@ -1682,7 +1682,8 @@ class CookieJar: return "<%s[%s]>" % (self.__class__, ", ".join(r)) -class LoadError(Exception): pass +# derives from IOError for backwards-compatibility with Python 2.4.0 +class LoadError(IOError): pass class FileCookieJar(CookieJar): """CookieJar that can be loaded from and saved to a file.""" diff --git a/Lib/test/test_cookielib.py b/Lib/test/test_cookielib.py index 7828326..f0c6683 100644 --- a/Lib/test/test_cookielib.py +++ b/Lib/test/test_cookielib.py @@ -248,6 +248,31 @@ class FileCookieJarTests(TestCase): except OSError: pass self.assertEqual(c._cookies["www.acme.com"]["/"]["boo"].value, None) + def test_bad_magic(self): + from cookielib import LWPCookieJar, MozillaCookieJar, LoadError + # IOErrors (eg. file doesn't exist) are allowed to propagate + filename = test_support.TESTFN + for cookiejar_class in LWPCookieJar, MozillaCookieJar: + c = cookiejar_class() + try: + c.load(filename="for this test to work, a file with this " + "filename should not exist") + except IOError, exc: + # exactly IOError, not LoadError + self.assertEqual(exc.__class__, IOError) + else: + self.fail("expected IOError for invalid filename") + # Invalid contents of cookies file (eg. bad magic string) + # causes a LoadError. + try: + f = open(filename, "w") + f.write("oops\n") + for cookiejar_class in LWPCookieJar, MozillaCookieJar: + c = cookiejar_class() + self.assertRaises(LoadError, c.load, filename) + finally: + try: os.unlink(filename) + except OSError: pass class CookieTests(TestCase): # XXX |