mirror of https://github.com/borgbackup/borg.git
get_item_uid_gid: do not require item.uid/gid, see #7249
if uid is not present, fall back to uid_default. if gid is not present, fall back to gid_default.
This commit is contained in:
parent
d49665526c
commit
4f9cda1aab
|
@ -410,15 +410,15 @@ def get_item_uid_gid(item, *, numeric, uid_forced=None, gid_forced=None, uid_def
|
|||
uid = uid_forced
|
||||
else:
|
||||
uid = None if numeric else user2uid(item.get("user"))
|
||||
uid = item.uid if uid is None else uid
|
||||
if uid < 0:
|
||||
uid = item.get("uid") if uid is None else uid
|
||||
if uid is None or uid < 0:
|
||||
uid = uid_default
|
||||
if gid_forced is not None:
|
||||
gid = gid_forced
|
||||
else:
|
||||
gid = None if numeric else group2gid(item.get("group"))
|
||||
gid = item.gid if gid is None else gid
|
||||
if gid < 0:
|
||||
gid = item.get("gid") if gid is None else gid
|
||||
if gid is None or gid < 0:
|
||||
gid = gid_default
|
||||
return uid, gid
|
||||
|
||||
|
|
|
@ -356,3 +356,29 @@ def test_get_item_uid_gid():
|
|||
# because item uid/gid seems valid, do not use the given uid/gid defaults
|
||||
assert uid == 9
|
||||
assert gid == 10
|
||||
|
||||
# item metadata only has uid/gid, but no user/group.
|
||||
item = Item(path="filename", uid=13, gid=14)
|
||||
|
||||
uid, gid = get_item_uid_gid(item, numeric=False)
|
||||
# it'll check user/group first, but as there is nothing in the item, falls back to uid/gid.
|
||||
assert uid == 13
|
||||
assert gid == 14
|
||||
|
||||
uid, gid = get_item_uid_gid(item, numeric=True)
|
||||
# does not check user/group, directly returns uid/gid.
|
||||
assert uid == 13
|
||||
assert gid == 14
|
||||
|
||||
# item metadata has no uid/gid/user/group.
|
||||
item = Item(path="filename")
|
||||
|
||||
uid, gid = get_item_uid_gid(item, numeric=False, uid_default=15)
|
||||
# as there is nothing, it'll fall back to uid_default/gid_default.
|
||||
assert uid == 15
|
||||
assert gid == 0
|
||||
|
||||
uid, gid = get_item_uid_gid(item, numeric=True, gid_default=16)
|
||||
# as there is nothing, it'll fall back to uid_default/gid_default.
|
||||
assert uid == 0
|
||||
assert gid == 16
|
||||
|
|
Loading…
Reference in New Issue