From 7451a72e2ba8939215324387e36285725632e637 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sat, 9 Feb 2013 22:25:49 +0200 Subject: Issue #17169: Restore errno in tempfile exceptions. --- Lib/tempfile.py | 14 ++++++++++---- Lib/test/test_tempfile.py | 4 +++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Lib/tempfile.py b/Lib/tempfile.py index 61b0df1..0cc5c04 100644 --- a/Lib/tempfile.py +++ b/Lib/tempfile.py @@ -31,6 +31,7 @@ import warnings as _warnings import sys as _sys import io as _io import os as _os +import errno as _errno from random import Random as _Random try: @@ -181,7 +182,9 @@ def _get_default_tempdir(): pass except OSError: 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 @@ -214,7 +217,8 @@ def _mkstemp_inner(dir, pre, suf, flags): except FileExistsError: continue # try again - raise FileExistsError("No usable temporary file name found") + raise FileExistsError(_errno.EEXIST, + "No usable temporary file name found") # User visible interfaces. @@ -301,7 +305,8 @@ def mkdtemp(suffix="", prefix=template, dir=None): except FileExistsError: 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): """User-callable function to return a unique temporary file name. The @@ -330,7 +335,8 @@ def mktemp(suffix="", prefix=template, dir=None): if not _exists(file): return file - raise FileExistsError("No usable temporary filename found") + raise FileExistsError(_errno.EEXIST, + "No usable temporary filename found") class _TemporaryFileWrapper: diff --git a/Lib/test/test_tempfile.py b/Lib/test/test_tempfile.py index 40e5e6f..7f4d5b9 100644 --- a/Lib/test/test_tempfile.py +++ b/Lib/test/test_tempfile.py @@ -1,5 +1,6 @@ # tempfile.py unit tests. import tempfile +import errno import os import signal import sys @@ -963,8 +964,9 @@ class TestTemporaryDirectory(BaseTestCase): # (noted as part of Issue #10188) with tempfile.TemporaryDirectory() as nonexistent: pass - with self.assertRaises(os.error): + with self.assertRaises(FileNotFoundError) as cm: tempfile.TemporaryDirectory(dir=nonexistent) + self.assertEqual(cm.exception.errno, errno.ENOENT) def test_explicit_cleanup(self): # A TemporaryDirectory is deleted when cleaned up -- cgit v0.12