Author: Amaury Forgeot d'Arc <amaur...@gmail.com> 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 pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit