From: Martin v. Löwis Date: Sat, 20 Sep 2003 15:52:21 +0000 (+0000) Subject: Patch #707167: Pass dircache exceptions to the caller. Fixes #682813. X-Git-Tag: v2.4a1~1553 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c6bb6c0f8c90f5f14d933b974db4c3ce2c7b296f;p=python Patch #707167: Pass dircache exceptions to the caller. Fixes #682813. Not backported because of behaviour change. --- diff --git a/Doc/whatsnew/whatsnew24.tex b/Doc/whatsnew/whatsnew24.tex index 2f0df30fe1..5fda620e45 100644 --- a/Doc/whatsnew/whatsnew24.tex +++ b/Doc/whatsnew/whatsnew24.tex @@ -124,7 +124,8 @@ changes to your code: \begin{itemize} -\item Everything is all in the details! +\item dircache.listdir now passes exceptions to the caller, +instead of returning empty lists. \end{itemize} diff --git a/Lib/dircache.py b/Lib/dircache.py index e18c7c37a4..78ec7fe0f4 100644 --- a/Lib/dircache.py +++ b/Lib/dircache.py @@ -22,15 +22,9 @@ def listdir(path): del cache[path] except KeyError: cached_mtime, list = -1, [] - try: - mtime = os.stat(path).st_mtime - except os.error: - return [] + mtime = os.stat(path).st_mtime if mtime != cached_mtime: - try: - list = os.listdir(path) - except os.error: - return [] + list = os.listdir(path) list.sort() cache[path] = mtime, list return list diff --git a/Lib/test/test_dircache.py b/Lib/test/test_dircache.py index 2ec89a2dad..52014e2e9e 100644 --- a/Lib/test/test_dircache.py +++ b/Lib/test/test_dircache.py @@ -56,7 +56,7 @@ class DircacheTests(unittest.TestCase): self.assert_(dircache.listdir(self.tempdir) is entries) ## UNSUCCESSFUL CASES - self.assertEquals(dircache.listdir(self.tempdir+"_nonexistent"), []) + self.assertRaises(OSError, dircache.listdir, self.tempdir+"_nonexistent") def test_annotate(self): self.writeTemp("test2") diff --git a/Misc/NEWS b/Misc/NEWS index 7ffe521768..2f0aec87a3 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -40,6 +40,9 @@ Extension modules Library ------- +- dircache now passes exceptions to the caller, instead of returning + empty lists. + - The bsddb module and dbhash module now support the iterator and mapping protocols which make them more substitutable for dictionaries and shelves.