[py-svn] r8311 - in py/dist/py: misc path
hpk at codespeak.net
hpk at codespeak.net
Sun Jan 16 18:11:49 CET 2005
Author: hpk
Date: Sun Jan 16 18:11:48 2005
New Revision: 8311
Modified:
py/dist/py/misc/error.py
py/dist/py/path/common.py
Log:
try to get Win32 to report ENOTDIR's as ENOTDIRs ...
Modified: py/dist/py/misc/error.py
==============================================================================
--- py/dist/py/misc/error.py (original)
+++ py/dist/py/misc/error.py Sun Jan 16 18:11:48 2005
@@ -17,6 +17,11 @@
" ".join(map(str, self.args)),
)
+_winerrnomap = {
+ 3: py.std.errno.ENOENT,
+ 267: py.std.errno.ENOTDIR,
+}
+
ModuleType = type(py)
class py_error(ModuleType):
@@ -28,6 +33,10 @@
"""
Error = Error
+ def _getwinerrnoclass(cls, eno):
+ return cls._geterrnoclass(_winerrnomap[eno])
+ _getwinerrnoclass = classmethod(_getwinerrnoclass)
+
def _geterrnoclass(eno, _errno2class = {}):
try:
return _errno2class[eno]
Modified: py/dist/py/path/common.py
==============================================================================
--- py/dist/py/path/common.py (original)
+++ py/dist/py/path/common.py Sun Jan 16 18:11:48 2005
@@ -200,15 +200,17 @@
#__tracebackhide__ = False
cls, value, tb = sys.exc_info()
errno = e.errno
- try:
- if isinstance(e, WindowsError):
- if errno == 3:
- errno = 2 # XXX HACK
- else:
- raise cls, value, tb
+ try:
+ if not isinstance(e, WindowsError):
+ raise NameError
except NameError:
- pass
- cls = py.error._geterrnoclass(errno)
+ # we are not on Windows, or we got a proper OSError
+ cls = py.error._geterrnoclass(errno)
+ else:
+ try:
+ cls = py.error._getwinerrnoclass(errno)
+ except KeyError:
+ raise cls, value, tb
value = cls("%s%r" % (func.__name__, args))
#__tracebackhide__ = True
raise cls, value
More information about the pytest-commit
mailing list