Commit e36a077d authored by Serhiy Storchaka's avatar Serhiy Storchaka

Issue #17169: Restore errno in tempfile exceptions.

parent 99257896
...@@ -31,6 +31,7 @@ import warnings as _warnings ...@@ -31,6 +31,7 @@ import warnings as _warnings
import sys as _sys import sys as _sys
import io as _io import io as _io
import os as _os import os as _os
import errno as _errno
from random import Random as _Random from random import Random as _Random
try: try:
...@@ -181,7 +182,9 @@ def _get_default_tempdir(): ...@@ -181,7 +182,9 @@ def _get_default_tempdir():
pass pass
except OSError: except OSError:
break # no point trying more names in this directory break # no point trying more names in this directory
raise FileNotFoundError("No usable temporary directory found in %s" % dirlist) raise FileNotFoundError(_errno.ENOENT,
"No usable temporary directory found in %s" %
dirlist)
_name_sequence = None _name_sequence = None
...@@ -214,7 +217,8 @@ def _mkstemp_inner(dir, pre, suf, flags): ...@@ -214,7 +217,8 @@ def _mkstemp_inner(dir, pre, suf, flags):
except FileExistsError: except FileExistsError:
continue # try again continue # try again
raise FileExistsError("No usable temporary file name found") raise FileExistsError(_errno.EEXIST,
"No usable temporary file name found")
# User visible interfaces. # User visible interfaces.
...@@ -301,7 +305,8 @@ def mkdtemp(suffix="", prefix=template, dir=None): ...@@ -301,7 +305,8 @@ def mkdtemp(suffix="", prefix=template, dir=None):
except FileExistsError: except FileExistsError:
continue # try again continue # try again
raise FileExistsError("No usable temporary directory name found") raise FileExistsError(_errno.EEXIST,
"No usable temporary directory name found")
def mktemp(suffix="", prefix=template, dir=None): def mktemp(suffix="", prefix=template, dir=None):
"""User-callable function to return a unique temporary file name. The """User-callable function to return a unique temporary file name. The
...@@ -330,7 +335,8 @@ def mktemp(suffix="", prefix=template, dir=None): ...@@ -330,7 +335,8 @@ def mktemp(suffix="", prefix=template, dir=None):
if not _exists(file): if not _exists(file):
return file return file
raise FileExistsError("No usable temporary filename found") raise FileExistsError(_errno.EEXIST,
"No usable temporary filename found")
class _TemporaryFileWrapper: class _TemporaryFileWrapper:
......
# tempfile.py unit tests. # tempfile.py unit tests.
import tempfile import tempfile
import errno
import os import os
import signal import signal
import sys import sys
...@@ -963,8 +964,9 @@ class TestTemporaryDirectory(BaseTestCase): ...@@ -963,8 +964,9 @@ class TestTemporaryDirectory(BaseTestCase):
# (noted as part of Issue #10188) # (noted as part of Issue #10188)
with tempfile.TemporaryDirectory() as nonexistent: with tempfile.TemporaryDirectory() as nonexistent:
pass pass
with self.assertRaises(os.error): with self.assertRaises(FileNotFoundError) as cm:
tempfile.TemporaryDirectory(dir=nonexistent) tempfile.TemporaryDirectory(dir=nonexistent)
self.assertEqual(cm.exception.errno, errno.ENOENT)
def test_explicit_cleanup(self): def test_explicit_cleanup(self):
# A TemporaryDirectory is deleted when cleaned up # A TemporaryDirectory is deleted when cleaned up
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment