From f11579bba4e3dc30e24cb2f53cc0f7d11fe2192c Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Tue, 24 Mar 2015 15:43:23 -0700 Subject: [PATCH] Add in memory filesystem clearing Change-Id: Ibd22eddeec87f660e729099f702f52cdd6b828ea --- taskflow/persistence/backends/impl_memory.py | 4 ++++ .../tests/unit/persistence/test_memory_persistence.py | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/taskflow/persistence/backends/impl_memory.py b/taskflow/persistence/backends/impl_memory.py index 7efe6ec0..a2255006 100644 --- a/taskflow/persistence/backends/impl_memory.py +++ b/taskflow/persistence/backends/impl_memory.py @@ -114,6 +114,10 @@ class FakeFilesystem(object): """Return list of all children of the given path.""" return [node.item for node in self._fetch_node(path)] + def clear(self): + for node in list(self._root.reverse_iter()): + node.disassociate() + def _iter_pieces(self, path, include_root=False): if path == self._root.item: # Check for this directly as the following doesn't work with diff --git a/taskflow/tests/unit/persistence/test_memory_persistence.py b/taskflow/tests/unit/persistence/test_memory_persistence.py index 1c9f451b..717d2be6 100644 --- a/taskflow/tests/unit/persistence/test_memory_persistence.py +++ b/taskflow/tests/unit/persistence/test_memory_persistence.py @@ -84,6 +84,17 @@ class MemoryFilesystemTest(test.TestCase): path += "/" + p self.assertIsNone(fs[path]) + def test_clear(self): + fs = impl_memory.FakeFilesystem() + paths = ['/b', '/c', '/a/b/c'] + for p in paths: + fs.ensure_path(p) + for p in paths: + self.assertIsNone(self._get_item_path(fs, p)) + fs.clear() + for p in paths: + self.assertRaises(exc.NotFound, self._get_item_path, fs, p) + def test_not_found(self): fs = impl_memory.FakeFilesystem() self.assertRaises(exc.NotFound, self._get_item_path, fs, '/c')