diff options
author | Thomas Waldmann <tw@waldmann-edv.de> | 2023-08-27 03:04:44 +0200 |
---|---|---|
committer | Thomas Waldmann <tw@waldmann-edv.de> | 2023-08-27 05:07:56 +0200 |
commit | aa5168a21e23cee4461eb84d192dcebdbbc4a71d (patch) | |
tree | f3995d32d8c41c02cdc9eb74117f0a83e9e47330 /src | |
parent | 9c1088c95c35955670617fa6e1083e3e01c87a4f (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.py | 13 | ||||
-rw-r--r-- | src/borg/testsuite/platform_freebsd.py | 4 |
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) |