summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
Diffstat (limited to 'Lib')
-rw-r--r--Lib/_LWPCookieJar.py8
-rw-r--r--Lib/_MozillaCookieJar.py10
-rw-r--r--Lib/cookielib.py3
-rw-r--r--Lib/test/test_cookielib.py25
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