summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorThomas Waldmann <tw@waldmann-edv.de>2023-08-27 03:04:44 +0200
committerThomas Waldmann <tw@waldmann-edv.de>2023-08-27 05:07:56 +0200
commitaa5168a21e23cee4461eb84d192dcebdbbc4a71d (patch)
treef3995d32d8c41c02cdc9eb74117f0a83e9e47330 /src
parent9c1088c95c35955670617fa6e1083e3e01c87a4f (diff)
use skipif_acls_not_working decorator for freebsd also
use platform-specific ACLs to check. for unsupported platform, just return False.
Diffstat (limited to 'src')
-rw-r--r--src/borg/testsuite/platform.py13
-rw-r--r--src/borg/testsuite/platform_freebsd.py4
2 files changed, 14 insertions, 3 deletions
diff --git a/src/borg/testsuite/platform.py b/src/borg/testsuite/platform.py
index 4ba033e54..a8a859b09 100644
--- a/src/borg/testsuite/platform.py
+++ b/src/borg/testsuite/platform.py
@@ -31,13 +31,22 @@ def are_acls_working():
with unopened_tempfile() as filepath:
open(filepath, "w").close()
try:
- access = b"user::rw-\ngroup::r--\nmask::rw-\nother::---\nuser:root:rw-:9999\ngroup:root:rw-:9999\n"
+ if is_freebsd:
+ access = b"user::rw-\ngroup::r--\nmask::rw-\nother::---\nuser:root:rw-\n"
+ contained = b"user:root:rw-"
+ elif is_linux:
+ access = b"user::rw-\ngroup::r--\nmask::rw-\nother::---\nuser:root:rw-:0\n"
+ contained = b"user:root:rw-:0"
+ elif is_darwin:
+ return True # improve?
+ else:
+ return False # unsupported platform
acl = {"acl_access": access}
acl_set(filepath, acl)
read_acl = {}
acl_get(filepath, read_acl, os.stat(filepath))
read_acl_access = read_acl.get("acl_access", None)
- if read_acl_access and b"user::rw-" in read_acl_access:
+ if read_acl_access and contained in read_acl_access:
return True
except PermissionError:
pass
diff --git a/src/borg/testsuite/platform_freebsd.py b/src/borg/testsuite/platform_freebsd.py
index b2cc77704..54fb29d6a 100644
--- a/src/borg/testsuite/platform_freebsd.py
+++ b/src/borg/testsuite/platform_freebsd.py
@@ -2,7 +2,7 @@ import os
import tempfile
from ..platform import acl_get, acl_set
-from .platform import skipif_not_freebsd
+from .platform import skipif_not_freebsd, skipif_acls_not_working
# set module-level skips
pytestmark = [skipif_not_freebsd]
@@ -46,6 +46,7 @@ def set_acl(path, access=None, default=None, nfs4=None, numeric_ids=False):
acl_set(path, item, numeric_ids=numeric_ids)
+@skipif_acls_not_working
def test_access_acl():
file1 = tempfile.NamedTemporaryFile()
set_acl(
@@ -82,6 +83,7 @@ def test_access_acl():
assert b"group:9999:rw-" in acl_access_ids
+@skipif_acls_not_working
def test_default_acl():
tmpdir = tempfile.mkdtemp()
set_acl(tmpdir, access=ACCESS_ACL, default=DEFAULT_ACL)