Patch #707167: Pass dircache exceptions to the caller. Fixes #682813.

Not backported because of behaviour change.
This commit is contained in:
Martin v. Löwis 2003-09-20 15:52:21 +00:00
parent a64988c001
commit c6bb6c0f8c
4 changed files with 8 additions and 10 deletions

View file

@ -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}

View file

@ -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

View file

@ -56,7 +56,7 @@ def test_listdir(self):
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")

View file

@ -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.