mirror of
https://github.com/borgbackup/borg.git
synced 2026-05-28 04:03:21 -04:00
Merge pull request #6326 from hexagonrecursion/bp-setdefault
Backport: implement more standard hashindex.setdefault behaviour
This commit is contained in:
commit
28d22a9501
2 changed files with 17 additions and 0 deletions
|
|
@ -128,6 +128,7 @@ cdef class IndexBase:
|
|||
def setdefault(self, key, value):
|
||||
if not key in self:
|
||||
self[key] = value
|
||||
return self[key]
|
||||
|
||||
def __delitem__(self, key):
|
||||
assert len(key) == self.key_size
|
||||
|
|
|
|||
|
|
@ -71,6 +71,22 @@ class HashIndexTestCase(BaseTestCase):
|
|||
del idx
|
||||
self.assert_equal(len(cls.read(idx_name.name)), 0)
|
||||
|
||||
idx = cls()
|
||||
# Test setdefault - set non-existing key
|
||||
idx.setdefault(H(0), make_value(42))
|
||||
assert H(0) in idx
|
||||
assert idx[H(0)] == make_value(42)
|
||||
# Test setdefault - do not set existing key
|
||||
idx.setdefault(H(0), make_value(23))
|
||||
assert H(0) in idx
|
||||
assert idx[H(0)] == make_value(42)
|
||||
# Test setdefault - get-like return value, key not present
|
||||
assert idx.setdefault(H(1), make_value(23)) == make_value(23)
|
||||
# Test setdefault - get-like return value, key present
|
||||
assert idx.setdefault(H(0), make_value(23)) == make_value(42)
|
||||
# clean up setdefault test
|
||||
del idx
|
||||
|
||||
def test_nsindex(self):
|
||||
self._generic_test(NSIndex, lambda x: (x, x),
|
||||
'85f72b036c692c8266e4f51ccf0cff2147204282b5e316ae508d30a448d88fef')
|
||||
|
|
|
|||
Loading…
Reference in a new issue