From d7b82f73c51c9ba14cdff34fb08e0326f242b4b8 Mon Sep 17 00:00:00 2001 From: Brian Warner Date: Thu, 17 Apr 2008 20:06:06 -0700 Subject: [PATCH] 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 --- src/allmydata/dirnode.py | 5 ++++- src/allmydata/test/common.py | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/allmydata/dirnode.py b/src/allmydata/dirnode.py index 1b191c9b..99379779 100644 --- a/src/allmydata/dirnode.py +++ b/src/allmydata/dirnode.py @@ -39,12 +39,15 @@ def split_netstring(data, numstrings, allow_leftover=False): return tuple(elements) class Deleter: - def __init__(self, node, name): + def __init__(self, node, name, must_exist=True): self.node = node self.name = name + self.must_exist = True def modify(self, old_contents): children = self.node._unpack_contents(old_contents) if self.name not in children: + if self.must_exist: + raise KeyError(self.name) self.old_child = None return None self.old_child, metadata = children[self.name] diff --git a/src/allmydata/test/common.py b/src/allmydata/test/common.py index e408a56d..be7f0b9e 100644 --- a/src/allmydata/test/common.py +++ b/src/allmydata/test/common.py @@ -102,10 +102,12 @@ class FakeMutableFileNode: self.all_contents[self.storage_index] = new_contents return defer.succeed(None) def modify(self, modifier): + return defer.maybeDeferred(self._modify, modifier) + def _modify(self, modifier): assert not self.is_readonly() old_contents = self.all_contents[self.storage_index] self.all_contents[self.storage_index] = modifier(old_contents) - return defer.succeed(None) + return None def make_mutable_file_uri(): -- 2.45.2