Author: Amaury Forgeot d'Arc <[email protected]>
Branch: py3.5
Changeset: r91156:7f6e04d6d012
Date: 2017-05-01 00:13 +0200
http://bitbucket.org/pypy/pypy/changeset/7f6e04d6d012/
Log: Issue 2548: os.utime() would return incorrect errno.
diff --git a/pypy/module/posix/test/test_posix2.py
b/pypy/module/posix/test/test_posix2.py
--- a/pypy/module/posix/test/test_posix2.py
+++ b/pypy/module/posix/test/test_posix2.py
@@ -582,8 +582,11 @@
def test_utime_raises(self):
os = self.posix
+ import errno
raises(TypeError, "os.utime('xxx', 3)")
- raises(OSError, "os.utime('somefilewhichihopewouldneverappearhere',
None)")
+ exc = raises(OSError,
+ "os.utime('somefilewhichihopewouldneverappearhere',
None)")
+ assert exc.value.errno == errno.ENOENT
for name in rposix.WAIT_MACROS:
if hasattr(os, name):
diff --git a/rpython/rlib/rposix.py b/rpython/rlib/rposix.py
--- a/rpython/rlib/rposix.py
+++ b/rpython/rlib/rposix.py
@@ -2057,8 +2057,10 @@
raise OSError(get_saved_errno(), "execve failed")
if HAVE_LINKAT:
- c_linkat = external('linkat',
- [rffi.INT, rffi.CCHARP, rffi.INT, rffi.CCHARP, rffi.INT], rffi.INT)
+ c_linkat = external(
+ 'linkat',
+ [rffi.INT, rffi.CCHARP, rffi.INT, rffi.CCHARP, rffi.INT], rffi.INT,
+ save_err=rffi.RFFI_SAVE_ERRNO)
def linkat(src, dst, src_dir_fd=AT_FDCWD, dst_dir_fd=AT_FDCWD,
follow_symlinks=True):
@@ -2073,7 +2075,8 @@
handle_posix_error('linkat', error)
if HAVE_FUTIMENS:
- c_futimens = external('futimens', [rffi.INT, TIMESPEC2P], rffi.INT)
+ c_futimens = external('futimens', [rffi.INT, TIMESPEC2P], rffi.INT,
+ save_err=rffi.RFFI_SAVE_ERRNO)
def futimens(fd, atime, atime_ns, mtime, mtime_ns):
l_times = lltype.malloc(TIMESPEC2P.TO, 2, flavor='raw')
@@ -2086,8 +2089,10 @@
handle_posix_error('futimens', error)
if HAVE_UTIMENSAT:
- c_utimensat = external('utimensat',
- [rffi.INT, rffi.CCHARP, TIMESPEC2P, rffi.INT], rffi.INT)
+ c_utimensat = external(
+ 'utimensat',
+ [rffi.INT, rffi.CCHARP, TIMESPEC2P, rffi.INT], rffi.INT,
+ save_err=rffi.RFFI_SAVE_ERRNO)
def utimensat(pathname, atime, atime_ns, mtime, mtime_ns,
dir_fd=AT_FDCWD, follow_symlinks=True):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit