mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-06-03 00:00:55 +00:00
dirnode: return to 'delete fails if the child wasn't actually there' semantics, to make tests pass. There's a switch to enable/disable this
This commit is contained in:
parent
d5b182c183
commit
d7b82f73c5
@ -39,12 +39,15 @@ def split_netstring(data, numstrings, allow_leftover=False):
|
|||||||
return tuple(elements)
|
return tuple(elements)
|
||||||
|
|
||||||
class Deleter:
|
class Deleter:
|
||||||
def __init__(self, node, name):
|
def __init__(self, node, name, must_exist=True):
|
||||||
self.node = node
|
self.node = node
|
||||||
self.name = name
|
self.name = name
|
||||||
|
self.must_exist = True
|
||||||
def modify(self, old_contents):
|
def modify(self, old_contents):
|
||||||
children = self.node._unpack_contents(old_contents)
|
children = self.node._unpack_contents(old_contents)
|
||||||
if self.name not in children:
|
if self.name not in children:
|
||||||
|
if self.must_exist:
|
||||||
|
raise KeyError(self.name)
|
||||||
self.old_child = None
|
self.old_child = None
|
||||||
return None
|
return None
|
||||||
self.old_child, metadata = children[self.name]
|
self.old_child, metadata = children[self.name]
|
||||||
|
@ -102,10 +102,12 @@ class FakeMutableFileNode:
|
|||||||
self.all_contents[self.storage_index] = new_contents
|
self.all_contents[self.storage_index] = new_contents
|
||||||
return defer.succeed(None)
|
return defer.succeed(None)
|
||||||
def modify(self, modifier):
|
def modify(self, modifier):
|
||||||
|
return defer.maybeDeferred(self._modify, modifier)
|
||||||
|
def _modify(self, modifier):
|
||||||
assert not self.is_readonly()
|
assert not self.is_readonly()
|
||||||
old_contents = self.all_contents[self.storage_index]
|
old_contents = self.all_contents[self.storage_index]
|
||||||
self.all_contents[self.storage_index] = modifier(old_contents)
|
self.all_contents[self.storage_index] = modifier(old_contents)
|
||||||
return defer.succeed(None)
|
return None
|
||||||
|
|
||||||
|
|
||||||
def make_mutable_file_uri():
|
def make_mutable_file_uri():
|
||||||
|
Loading…
x
Reference in New Issue
Block a user