Include filename in exceptions raised in delete_default
authorIustin Pop <iustin@k1024.org>
Fri, 29 Nov 2019 01:20:58 +0000 (02:20 +0100)
committerIustin Pop <iustin@k1024.org>
Fri, 29 Nov 2019 01:20:58 +0000 (02:20 +0100)
And add test for failure.

acl.c
tests/test_acls.py

diff --git a/acl.c b/acl.c
index 5a8d630d50f2bcb32a3a24b7fb85657f1d3a918b..2ab8b2d9192eebdd47a4e62ce2636cd3bd356a13 100644 (file)
--- a/acl.c
+++ b/acl.c
@@ -1555,7 +1555,7 @@ static PyObject* aclmodule_delete_default(PyObject* obj, PyObject* args) {
         return NULL;
 
     if(acl_delete_def_file(filename) == -1) {
-        return PyErr_SetFromErrno(PyExc_IOError);
+        return PyErr_SetFromErrnoWithFilename(PyExc_IOError, filename);
     }
 
     /* Return the result */
index 7c51281744dfdc0fd470f824d8fa4c2c80f7868f..eccb600aa8619b82d1c1e063ca5e58b11ee1ef21 100644 (file)
@@ -445,6 +445,12 @@ class TestWrite:
         with get_dir(testdir) as dname:
           posix1e.delete_default(dname)
 
+    def test_delete_default_fail(self, testdir):
+        """Test removing the default ACL"""
+        with get_file_name(testdir) as fname:
+            with pytest.raises(IOError, match="no-such-file"):
+                posix1e.delete_default(fname+".no-such-file")
+
     @NOT_PYPY
     def test_delete_default_wrong_arg(self):
         with pytest.raises(TypeError):