Author: Ronan Lamy <ronan.l...@gmail.com>
Branch: py3.5
Changeset: r93517:0c9668c522b1
Date: 2017-12-20 14:01 +0000
http://bitbucket.org/pypy/pypy/changeset/0c9668c522b1/

Log:    Fix error reporting from posix.*xattr functions

diff --git a/pypy/module/posix/interp_posix.py 
b/pypy/module/posix/interp_posix.py
--- a/pypy/module/posix/interp_posix.py
+++ b/pypy/module/posix/interp_posix.py
@@ -2301,13 +2301,13 @@
         try:
             result = rposix.fgetxattr(path.as_fd, attribute.as_bytes)
         except OSError as e:
-            raise wrap_oserror(space, e, eintr_retry=False)
+            raise wrap_oserror(space, e, path.as_bytes)
     else:
         try:
             result = rposix.getxattr(path.as_bytes, attribute.as_bytes,
                 follow_symlinks=follow_symlinks)
         except OSError as e:
-            raise wrap_oserror(space, e, eintr_retry=False)
+            raise wrap_oserror(space, e, path.as_bytes)
     return space.newbytes(result)
 
 @unwrap_spec(path=path_or_fd(), attribute=path_or_fd(allow_fd=False),
@@ -2330,13 +2330,13 @@
         try:
             rposix.fsetxattr(path.as_fd, attribute.as_bytes, value)
         except OSError as e:
-            raise wrap_oserror(space, e, eintr_retry=False)
+            raise wrap_oserror(space, e, path.as_bytes)
     else:
         try:
             rposix.setxattr(path.as_bytes, attribute.as_bytes, value,
                 follow_symlinks=follow_symlinks)
         except OSError as e:
-            raise wrap_oserror(space, e, eintr_retry=False)
+            raise wrap_oserror(space, e, path.as_bytes)
 
 
 @unwrap_spec(path=path_or_fd(), attribute=path_or_fd(allow_fd=False),
@@ -2356,13 +2356,13 @@
         try:
             rposix.fremovexattr(path.as_fd, attribute.as_bytes)
         except OSError as e:
-            raise wrap_oserror(space, e, eintr_retry=False)
+            raise wrap_oserror(space, e, path.as_bytes)
     else:
         try:
             rposix.removexattr(path.as_bytes, attribute.as_bytes,
                 follow_symlinks=follow_symlinks)
         except OSError as e:
-            raise wrap_oserror(space, e, eintr_retry=False)
+            raise wrap_oserror(space, e, path.as_bytes)
 
 
 @unwrap_spec(path=path_or_fd(), follow_symlinks=bool)
@@ -2388,9 +2388,8 @@
         try:
             result = rposix.listxattr(path.as_bytes, follow_symlinks)
         except OSError as e:
-            raise wrap_oserror(space, e, eintr_retry=False)
-    return space.newlist([
-        space.fsdecode(space.newbytes(attr)) for attr in result])
+            raise wrap_oserror(space, e, path.as_bytes)
+    return space.newlist([space.newfilename(attr) for attr in result])
 
 
 have_functions = []
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
@@ -1448,7 +1448,8 @@
             with open(self.path, 'wb'):
                 pass
             init_names = os.listxattr(self.path)
-            raises(OSError, os.getxattr, self.path, 'user.test')
+            excinfo = raises(OSError, os.getxattr, self.path, 'user.test')
+            assert excinfo.value.filename == self.path
             os.setxattr(self.path, 'user.test', b'', os.XATTR_CREATE, 
follow_symlinks=False)
             assert os.getxattr(self.path, 'user.test') == b''
             os.setxattr(self.path, b'user.test', b'foo', os.XATTR_REPLACE)
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to